[cfe-commits] r55286 - in /cfe/trunk: lib/Sema/SemaDeclAttr.cpp test/SemaObjC/objc-gc-attr.m

Anders Carlsson andersca at mac.com
Sun Aug 24 09:33:25 PDT 2008


Author: andersca
Date: Sun Aug 24 11:33:25 2008
New Revision: 55286

URL: http://llvm.org/viewvc/llvm-project?rev=55286&view=rev
Log:
Fix silly bug in objc_gc attribute parsing and add test case

Added:
    cfe/trunk/test/SemaObjC/objc-gc-attr.m
Modified:
    cfe/trunk/lib/Sema/SemaDeclAttr.cpp

Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=55286&r1=55285&r2=55286&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Sun Aug 24 11:33:25 2008
@@ -467,7 +467,7 @@
 }
 
 static void HandleObjCGCAttr(Decl *d, const AttributeList &Attr, Sema &S) {
-  if (!Attr.getParameterName()) {
+  if (!Attr.getParameterName()) {    
     S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string,
            "objc_gc", std::string("1"));
     return;
@@ -486,7 +486,7 @@
   
   if (TypeLen == 4 && !memcmp(TypeStr, "weak", 4))
     type = ObjCGCAttr::Weak;
-  else if (TypeLen == 5 && !memcmp(TypeStr, "strong", 5))
+  else if (TypeLen == 6 && !memcmp(TypeStr, "strong", 6))
     type = ObjCGCAttr::Strong;
   else {
     S.Diag(Attr.getLoc(), diag::warn_attribute_type_not_supported,

Added: cfe/trunk/test/SemaObjC/objc-gc-attr.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/objc-gc-attr.m?rev=55286&view=auto

==============================================================================
--- cfe/trunk/test/SemaObjC/objc-gc-attr.m (added)
+++ cfe/trunk/test/SemaObjC/objc-gc-attr.m Sun Aug 24 11:33:25 2008
@@ -0,0 +1,8 @@
+// RUN: clang -fsyntax-only -verify %s
+static id __attribute((objc_gc(weak))) a;
+static id __attribute((objc_gc(strong))) b;
+
+static id __attribute((objc_gc())) c; // expected-error{{'objc_gc' attribute requires parameter 1 to be a string}}
+static id __attribute((objc_gc(123))) d; // expected-error{{'objc_gc' attribute requires parameter 1 to be a string}}
+static id __attribute((objc_gc(foo, 456))) e; // expected-error{{attribute requires 1 argument(s)}}
+static id __attribute((objc_gc(hello))) f; // expected-warning{{'objc_gc' attribute argument not supported: 'hello'}}





More information about the cfe-commits mailing list