Going back to using getName for consistency.
authorAaron Ballman <aaron@aaronballman.com>
Tue, 23 Jul 2013 17:35:26 +0000 (17:35 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Tue, 23 Jul 2013 17:35:26 +0000 (17:35 +0000)
llvm-svn: 186966

clang/lib/Sema/SemaDeclAttr.cpp
clang/test/SemaObjC/method-sentinel-attr.m

index 09d61e7..7a4a0ca 100644 (file)
@@ -2580,11 +2580,6 @@ static void handleSentinelAttr(Sema &S, Decl *D, const AttributeList &Attr) {
     return;
   }
 
-  // Normalize the attribute name, __foo__ becomes foo.
-  StringRef AttrName = Attr.getName()->getName();
-  if (AttrName.startswith("__") && AttrName.endswith("__"))
-    AttrName = AttrName.substr(2, AttrName.size() - 4);
-
   unsigned sentinel = 0;
   if (Attr.getNumArgs() > 0) {
     Expr *E = Attr.getArg(0);
@@ -2592,7 +2587,7 @@ static void handleSentinelAttr(Sema &S, Decl *D, const AttributeList &Attr) {
     if (E->isTypeDependent() || E->isValueDependent() ||
         !E->isIntegerConstantExpr(Idx, S.Context)) {
       S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_type)
-        << "'" + AttrName.str() + "'" << 1 << ArgumentIntegerConstant
+        << Attr.getName() << 1 << ArgumentIntegerConstant
         << E->getSourceRange();
       return;
     }
@@ -2613,7 +2608,7 @@ static void handleSentinelAttr(Sema &S, Decl *D, const AttributeList &Attr) {
     if (E->isTypeDependent() || E->isValueDependent() ||
         !E->isIntegerConstantExpr(Idx, S.Context)) {
       S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_type)
-        << "'" + AttrName.str() + "'" << 2 << ArgumentIntegerConstant
+        << Attr.getName() << 2 << ArgumentIntegerConstant
         << E->getSourceRange();
       return;
     }
index 274e936..d230be5 100644 (file)
@@ -10,7 +10,7 @@
 - (void) foo5 : (int)x, ... __attribute__ ((__sentinel__(1))); // expected-note {{method has been explicitly marked sentinel here}}
 - (void) foo6 : (int)x, ... __attribute__ ((__sentinel__(5))); // expected-note {{method has been explicitly marked sentinel here}}
 - (void) foo7 : (int)x, ... __attribute__ ((__sentinel__(0))); // expected-note {{method has been explicitly marked sentinel here}}
-- (void) foo8 : (int)x, ... __attribute__ ((__sentinel__("a")));  // expected-error {{'sentinel' attribute requires parameter 1 to be an integer constant}}
+- (void) foo8 : (int)x, ... __attribute__ ((__sentinel__("a")));  // expected-error {{'__sentinel__' attribute requires parameter 1 to be an integer constant}}
 - (void) foo9 : (int)x, ... __attribute__ ((__sentinel__(-1)));  // expected-error {{'sentinel' parameter 1 less than zero}}
 - (void) foo10 : (int)x, ... __attribute__ ((__sentinel__(1,1)));
 - (void) foo11 : (int)x, ... __attribute__ ((__sentinel__(1,1,3)));  // expected-error {{attribute takes no more than 2 arguments}}