Author: aaronballman
Date: Thu Jul 18 08:13:52 2013
New Revision: 186578

URL: http://llvm.org/viewvc/llvm-project?rev=186578&view=rev
Log:
Removed a parameter from handleAttrWithMessage to make it more consistent with 
other attribute handlers, as well as other attribute error messages.  Added 
missing test cases for the unavailable attribute, and updated the deprecated 
test case.

Modified:
    cfe/trunk/lib/Sema/SemaDeclAttr.cpp
    cfe/trunk/test/Sema/MicrosoftExtensions.c
    cfe/trunk/test/Sema/attr-unavailable-message.c

Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=186578&r1=186577&r2=186578&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Thu Jul 18 08:13:52 2013
@@ -2038,8 +2038,8 @@ static void handleDestructorAttr(Sema &S
 }
 
 template <typename AttrTy>
-static void handleAttrWithMessage(Sema &S, Decl *D, const AttributeList &Attr,
-                                  const char *Name) {
+static void handleAttrWithMessage(Sema &S, Decl *D,
+                                  const AttributeList &Attr) {
   unsigned NumArgs = Attr.getNumArgs();
   if (NumArgs > 1) {
     S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 1;
@@ -2052,7 +2052,7 @@ static void handleAttrWithMessage(Sema &
     StringLiteral *SE = dyn_cast<StringLiteral>(Attr.getArg(0));
     if (!SE) {
       S.Diag(Attr.getArg(0)->getLocStart(), diag::err_attribute_not_string)
-        << Name;
+        << Attr.getName();
       return;
     }
     Str = SE->getString();
@@ -4792,7 +4792,7 @@ static void ProcessInheritableDeclAttr(S
     handleCXX11NoReturnAttr(S, D, Attr);
     break;
   case AttributeList::AT_Deprecated:
-    handleAttrWithMessage<DeprecatedAttr>(S, D, Attr, "deprecated");
+    handleAttrWithMessage<DeprecatedAttr>(S, D, Attr);
     break;
   case AttributeList::AT_Destructor:  handleDestructorAttr  (S, D, Attr); 
break;
   case AttributeList::AT_ExtVectorType:
@@ -4873,7 +4873,7 @@ static void ProcessInheritableDeclAttr(S
   case AttributeList::AT_Packed:      handlePackedAttr      (S, D, Attr); 
break;
   case AttributeList::AT_Section:     handleSectionAttr     (S, D, Attr); 
break;
   case AttributeList::AT_Unavailable:
-    handleAttrWithMessage<UnavailableAttr>(S, D, Attr, "unavailable");
+    handleAttrWithMessage<UnavailableAttr>(S, D, Attr);
     break;
   case AttributeList::AT_ArcWeakrefUnavailable: 
     handleArcWeakrefUnavailableAttr (S, D, Attr); 

Modified: cfe/trunk/test/Sema/MicrosoftExtensions.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/MicrosoftExtensions.c?rev=186578&r1=186577&r2=186578&view=diff
==============================================================================
--- cfe/trunk/test/Sema/MicrosoftExtensions.c (original)
+++ cfe/trunk/test/Sema/MicrosoftExtensions.c Thu Jul 18 08:13:52 2013
@@ -96,7 +96,7 @@ struct __declspec(deprecated) DS1 { int
 #define MY_TEXT                "This is also deprecated"
 __declspec(deprecated(MY_TEXT)) void Dfunc1( void ) {} // expected-note 
{{'Dfunc1' declared here}}
 
-struct __declspec(deprecated(123)) DS2 {};     // expected-error {{argument to 
deprecated attribute was not a string literal}}
+struct __declspec(deprecated(123)) DS2 {};     // expected-error {{argument to 
'deprecated' attribute was not a string literal}}
 
 void test( void ) {
        e1 = one;       // expected-warning {{'e1' is deprecated: This is 
deprecated}}

Modified: cfe/trunk/test/Sema/attr-unavailable-message.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-unavailable-message.c?rev=186578&r1=186577&r2=186578&view=diff
==============================================================================
--- cfe/trunk/test/Sema/attr-unavailable-message.c (original)
+++ cfe/trunk/test/Sema/attr-unavailable-message.c Thu Jul 18 08:13:52 2013
@@ -6,6 +6,11 @@ double dfoo(double)  __attribute__((__un
 
 void bar() __attribute__((__unavailable__)); // expected-note {{explicitly 
marked unavailable}}
 
+int quux(void) __attribute__((__unavailable__(12))); // expected-error 
{{argument to '__unavailable__' attribute was not a string literal}}
+
+#define ACCEPTABLE     "Use something else"
+int quux2(void) __attribute__((__unavailable__(ACCEPTABLE)));
+
 void test_foo() {
   int ir = foo(1); // expected-error {{'foo' is unavailable: USE IFOO INSTEAD}}
   double dr = dfoo(1.0); // expected-error {{'dfoo' is unavailable: NO LONGER}}


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to