]> granicus.if.org Git - clang/commitdiff
After numerous requests, have Objective-C 'method declared here' notes mention the...
authorTed Kremenek <kremenek@apple.com>
Mon, 27 Feb 2012 22:55:11 +0000 (22:55 +0000)
committerTed Kremenek <kremenek@apple.com>
Mon, 27 Feb 2012 22:55:11 +0000 (22:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151579 91177308-0d34-0410-b5e6-96231b3b80d8

17 files changed:
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaDeclObjC.cpp
lib/Sema/SemaExprObjC.cpp
test/Analysis/method-arg-decay.m
test/SemaObjC/arc-peformselector.m
test/SemaObjC/arc.m
test/SemaObjC/category-1.m
test/SemaObjC/class-message-protocol-lookup.m
test/SemaObjC/compare-qualified-id.m
test/SemaObjC/incomplete-implementation.m
test/SemaObjC/method-attributes.m
test/SemaObjC/method-undef-category-warn-1.m
test/SemaObjC/method-undef-extension-warn-1.m
test/SemaObjC/protocol-implementing-class-methods.m
test/SemaObjC/related-result-type-inference.m
test/SemaObjC/undef-protocol-methods-1.m
test/SemaObjC/warn-deprecated-implementations.m

index ec4604acec61bbd4acddbfd4efb9a691451513f0..c347c2e0023e05aa3cd7c0c55bf79917a3118d2d 100644 (file)
@@ -538,7 +538,7 @@ def warn_strict_multiple_method_decl : Warning<
   "multiple methods named %0 found">, InGroup<StrictSelector>, DefaultIgnore;
 def warn_accessor_property_type_mismatch : Warning<
   "type of property %0 does not match type of accessor %1">;
-def note_method_declared_at : Note<"method declared here">;
+def note_method_declared_at : Note<"method %0 declared here">;
 def err_setter_type_void : Error<"type of setter must be void">;
 def err_duplicate_method_decl : Error<"duplicate declaration of method %0">;
 def warn_duplicate_method_decl : 
@@ -679,7 +679,7 @@ def warn_auto_implicit_atomic_property : Warning<
 def warn_unimplemented_selector:  Warning<
   "unimplemented selector %0">, InGroup<Selector>, DefaultIgnore;
 def warn_unimplemented_protocol_method : Warning<
-  "method in protocol not implemented">, InGroup<Protocol>;
+  "method %0 in protocol not implemented">, InGroup<Protocol>;
 
 // C++ declarations
 def err_static_assert_expression_is_not_constant : Error<
index 661c580cc97b1a83d1dabae2cd8cc731d1d23db6..fe210c5dc236507fa2b451ed5f23130e902e0d22 100644 (file)
@@ -242,7 +242,8 @@ static void DiagnoseObjCImplementedDeprecations(Sema &S,
   if (ND && ND->isDeprecated()) {
     S.Diag(ImplLoc, diag::warn_deprecated_def) << select;
     if (select == 0)
-      S.Diag(ND->getLocation(), diag::note_method_declared_at);
+      S.Diag(ND->getLocation(), diag::note_method_declared_at)
+        << ND->getDeclName();
     else
       S.Diag(ND->getLocation(), diag::note_previous_decl) << "class";
   }
@@ -1466,7 +1467,8 @@ void Sema::WarnExactTypedMethods(ObjCMethodDecl *ImpMethodDecl,
   if (match) {
     Diag(ImpMethodDecl->getLocation(), 
          diag::warn_category_method_impl_match);
-    Diag(MethodDecl->getLocation(), diag::note_method_declared_at);
+    Diag(MethodDecl->getLocation(), diag::note_method_declared_at)
+      << MethodDecl->getDeclName();
   }
 }
 
@@ -1539,7 +1541,8 @@ void Sema::CheckProtocolMethodDefs(SourceLocation ImpLoc,
             if (Diags.getDiagnosticLevel(DIAG, ImpLoc)
                 != DiagnosticsEngine::Ignored) {
               WarnUndefinedMethod(ImpLoc, method, IncompleteImpl, DIAG);
-              Diag(method->getLocation(), diag::note_method_declared_at);
+              Diag(method->getLocation(), diag::note_method_declared_at)
+                << method->getDeclName();
               Diag(CDecl->getLocation(), diag::note_required_for_protocol_at)
                 << PDecl->getDeclName();
             }
@@ -1561,7 +1564,8 @@ void Sema::CheckProtocolMethodDefs(SourceLocation ImpLoc,
       if (Diags.getDiagnosticLevel(DIAG, ImpLoc) !=
             DiagnosticsEngine::Ignored) {
         WarnUndefinedMethod(ImpLoc, method, IncompleteImpl, DIAG);
-        Diag(method->getLocation(), diag::note_method_declared_at);
+        Diag(method->getLocation(), diag::note_method_declared_at)
+          << method->getDeclName();
         Diag(IDecl->getLocation(), diag::note_required_for_protocol_at) <<
           PDecl->getDeclName();
       }
@@ -2798,7 +2802,8 @@ Decl *Sema::ActOnMethodDeclaration(
       SourceLocation MethodLoc = IMD->getLocation();
       if (!getSourceManager().isInSystemHeader(MethodLoc)) {
         Diag(EndLoc, diag::warn_attribute_method_def);
-        Diag(MethodLoc, diag::note_method_declared_at);
+        Diag(MethodLoc, diag::note_method_declared_at)
+          << ObjCMethod->getDeclName();
       }
     }
   } else {
index ec5329c4d4cb6488cadd186f76caab22677c7d41..22e432d8dc5cd7352ac93ee971e8aaf2ef5e9680 100644 (file)
@@ -1306,7 +1306,8 @@ ExprResult Sema::BuildInstanceMessage(Expr *Receiver,
           if (Method) {
             Diag(Loc, diag::warn_instance_method_on_class_found)
               << Method->getSelector() << Sel;
-            Diag(Method->getLocation(), diag::note_method_declared_at);
+            Diag(Method->getLocation(), diag::note_method_declared_at)
+              << Method->getDeclName();
           }
         }
       } else {
@@ -1528,7 +1529,8 @@ ExprResult Sema::BuildInstanceMessage(Expr *Receiver,
                   // selector names a +1 method 
                   Diag(SelLoc, 
                        diag::err_arc_perform_selector_retains);
-                  Diag(SelMethod->getLocation(), diag::note_method_declared_at);
+                  Diag(SelMethod->getLocation(), diag::note_method_declared_at)
+                    << SelMethod->getDeclName();
                 }
                 break;
               default:
@@ -1537,7 +1539,8 @@ ExprResult Sema::BuildInstanceMessage(Expr *Receiver,
                   // selector names a +1 method
                   Diag(SelLoc, 
                        diag::err_arc_perform_selector_retains);
-                  Diag(SelMethod->getLocation(), diag::note_method_declared_at);
+                  Diag(SelMethod->getLocation(), diag::note_method_declared_at)
+                    << SelMethod->getDeclName();
                 }
                 break;
             }
index ffe28afc4d6101d19ecd44ec3f34d4c34b73b621..a36d81e82b52906f07d49d8537f008469d9710ba 100644 (file)
@@ -56,7 +56,7 @@ PBXFindMatchContains,     PBXFindMatchStartsWith,     PBXFindMatchWholeWords,
 @interface PBXProjectModule : PBXModule <PBXFindableText> {
 }
 @end @class PBXBookmark;
-@protocol PBXSelectionTarget - (NSObject <PBXSelectionTarget> *) performAction:(id)action withSelection:(NSArray *)selection;  // expected-note {{method declared here}}
+@protocol PBXSelectionTarget - (NSObject <PBXSelectionTarget> *) performAction:(id)action withSelection:(NSArray *)selection;  // expected-note {{method 'performAction:withSelection:' declared here}}
 @end @class XCPropertyDictionary, XCPropertyCondition, XCPropertyConditionSet, XCMutablePropertyConditionSet;
 extern NSMutableArray *XCFindPossibleKeyModules(PBXModule *module, BOOL useExposedModulesOnly);
 @interface NSString (StringUtilities) - (NSString *) trimToLength:(NSInteger)length preserveRange:(NSRange)range;
@@ -72,8 +72,7 @@ extern NSMutableArray *XCFindPossibleKeyModules(PBXModule *module, BOOL useExpos
 }
 - (PBXModule *) moduleForTab:(NSTabViewItem *)item; // expected-note {{method definition for 'moduleForTab:' not found}}
 @end  
-@implementation XCPerspectiveModule // expected-warning {{incomplete implementation}} \
-                                   // expected-warning {{method in protocol not implemented}}
+@implementation XCPerspectiveModule // expected-warning {{incomplete implementation}} expected-warning {{method 'performAction:withSelection:' in protocol not implemented}}}
 + (void) openForProjectDocument:(PBXProjectDocument *)projectDocument {
 }
 - (PBXModule *) type:(Class)type inPerspective:(id)perspectiveIdentifer  matchingFunction:(BOOL (void *, void *))comparator usingData:(void *)data {
index c015eb871150caf6baa5074f65c00cbba7b10db3..dec09e33ed689033bdda001f3606a2499b60b158 100644 (file)
@@ -2,12 +2,12 @@
 // rdar://9659270
 
 @interface NSObject
-- (id)copy; // expected-note {{method declared here}}
-- (id) test __attribute__((ns_returns_retained)); // expected-note {{method declared here}}
-+ (id) new ; // expected-note {{method declared here}}
+- (id)copy; // expected-note {{method 'copy' declared here}}
+- (id) test __attribute__((ns_returns_retained)); // expected-note {{method 'test' declared here}}
++ (id) new ; // expected-note {{method 'new' declared here}}
 - (id) init __attribute__((ns_returns_not_retained));
 - (id)PlusZero;
-- (id)PlusOne __attribute__((ns_returns_retained)); // expected-note {{method declared here}}
+- (id)PlusOne __attribute__((ns_returns_retained)); // expected-note {{method 'PlusOne' declared here}}
 @end
 
 @interface I : NSObject
index d9ae5b403ccbf59b5a565e4f576717bf47658d59..a78229cf43875227422c8838a1b35aa36fd95234 100644 (file)
@@ -42,10 +42,10 @@ void test1(A *a) {
 // rdar://8843638
 
 @interface I
-- (id)retain; // expected-note {{method declared here}}
-- (id)autorelease; // expected-note {{method declared here}}
-- (oneway void)release; // expected-note {{method declared here}}
-- (NSUInteger)retainCount; // expected-note {{method declared here}}
+- (id)retain; // expected-note {{method 'retain' declared here}}
+- (id)autorelease; // expected-note {{method 'autorelease' declared here}}
+- (oneway void)release; // expected-note {{method 'release' declared here}}
+- (NSUInteger)retainCount; // expected-note {{method 'retainCount' declared here}}
 @end
 
 @implementation I
index 7df85da5009f0d825e488e3073dbfde647a42a3b..137309f755d6895f9250d6d215a28a2002dc75e0 100644 (file)
@@ -62,7 +62,7 @@
 // <rdar://problem/7249233>
 
 @protocol MultipleCat_P
--(void) im0; // expected-note {{method declared here}}
+-(void) im0; // expected-note {{method 'im0' declared here}}
 @end
 
 @interface MultipleCat_I @end // expected-note {{required for direct or indirect protocol 'MultipleCat_P'}}
@@ -72,7 +72,7 @@
 @interface MultipleCat_I() <MultipleCat_P>  @end
 
 @implementation MultipleCat_I // expected-warning {{incomplete implementation}} \
-                              // expected-warning {{method in protocol not implemented}}
+                              // expected-warning {{method 'im0' in protocol not implemented}}
 @end
 
 // <rdar://problem/7680391> - Handle nameless categories with no name that refer
index ae64ea86804b303d99eb6d864e11d06a19bc74bc..944d4698023a2d693c57ee39aed6354eb7eede54 100644 (file)
@@ -13,7 +13,7 @@
 
 @protocol Test2Protocol
 + (id)alloc;
-- (id)alloc2; // expected-note 2 {{method declared here}}
+- (id)alloc2; // expected-note 2 {{method 'alloc2' declared here}}
 @end
 
 @implementation RandomObject
index e195640d2bb8fa92bfd4cfb9a95a568aa3e41395..d31dfae86e895c57d03e7cb3fc048e00a0188e56 100644 (file)
@@ -5,7 +5,7 @@ typedef unsigned int NSUInteger;
 typedef struct _NSZone NSZone;
 @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
 @protocol NSObject  - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end // expected-note {{method declared here}}
+@protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end // expected-note {{method 'copyWithZone:' declared here}}
 @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
 @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
 @interface NSObject <NSObject> {} @end
@@ -24,7 +24,7 @@ extern NSString * const NSTaskDidTerminateNotification;
 @end
 
 @implementation XCPropertyExpansionContext // expected-warning {{incomplete implementation}} \
-                                          // expected-warning {{method in protocol not implemented}}
+                                          // expected-warning {{method 'copyWithZone:' in protocol not implemented}}
 - (NSString *)expandedValueForProperty:(NSString *)property {
   id <XCPropertyValues> cachedValueNode = [_propNamesToPropValuesCache objectForKey:property]; // expected-warning {{method '-objectForKey:' not found (return type defaults to 'id')}}
   if (cachedValueNode == ((void *)0)) { }
index a79628aeedd349dde6c2344083811463757a236c..df34a43f74aa9d1a146e7ee388699776dd2d2c5c 100644 (file)
@@ -2,7 +2,7 @@
 
 @interface I
 - Meth; // expected-note{{method definition for 'Meth' not found}} \
-        // expected-note{{method declared here}}
+        // expected-note{{method 'Meth' declared here}}
 @end
 
 @implementation  I  // expected-warning{{incomplete implementation}}
@@ -14,7 +14,7 @@
 
 #pragma GCC diagnostic ignored "-Wincomplete-implementation"
 @interface I2
-- Meth; // expected-note{{method declared here}}
+- Meth; // expected-note{{method 'Meth' declared here}}
 @end
 
 @implementation  I2
index 9a1271dd3ce8ce22991b6f96cc0bf24edf8018d7..b2472a46bf22cab6985e3c99b55b8cdaa1f3279d 100644 (file)
@@ -13,9 +13,9 @@
 @interface INTF
 - (int) foo1: (int)arg1 __attribute__((deprecated));
 
-- (int) foo: (int)arg1;  // expected-note {{method declared here}}
+- (int) foo: (int)arg1;  // expected-note {{method 'foo:' declared here}}
 
-- (int) foo2: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{method declared here}}
+- (int) foo2: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{method 'foo2:' declared here}}
 - (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self));
 @end
 
@@ -39,7 +39,7 @@
 
 @interface Foo 
 - (void)doSomething1:(id)sender;
-- (void)doSomething2:(id)sender; // expected-note {{method declared here}}
+- (void)doSomething2:(id)sender; // expected-note {{method 'doSomething2:' declared here}}
 @end
 
 @implementation Foo
index 929f162cb9040dc93fa128111fb3e030d69dba77..b390827656ca06b42b08a0526bbefd7ef6a2fb9e 100644 (file)
@@ -4,8 +4,8 @@
 @end
 
 @protocol P
-- (void) Pmeth;          // expected-note {{method declared here}}
-- (void) Pmeth1;    // expected-note {{method declared here}}
+- (void) Pmeth;          // expected-note {{method 'Pmeth' declared here}}
+- (void) Pmeth1;    // expected-note {{method 'Pmeth1' declared here}}
 @end
 
 @interface MyClass1(CAT) <P> // expected-note {{required for direct or indirect protocol 'P'}}
@@ -13,7 +13,7 @@
 @end
 
 @implementation MyClass1(CAT) // expected-warning {{incomplete implementation}}  \
-                               // expected-warning {{method in protocol not implemented}}
+                               // expected-warning {{method 'Pmeth' in protocol not implemented}}
 - (void) Pmeth1{}
 @end
 
@@ -22,7 +22,7 @@
 @end
 
 @implementation MyClass1(DOG) // expected-warning {{incomplete implementation}} \
-               // expected-warning {{method in protocol not implemented}}
+               // expected-warning {{method 'Pmeth1' in protocol not implemented}}
 - (void) Pmeth {}
 @end
 
index 9701a2e5d5eea6a81c7c90ca49d7e44f86ca7e6a..aeacee16c6fbca1e0b53117d8eebc21da1d4bfdc 100644 (file)
@@ -5,7 +5,7 @@
 
 @protocol P
 - (void)Pmeth;
-- (void)Pmeth1; // expected-note {{method declared here}}
+- (void)Pmeth1; // expected-note {{method 'Pmeth1' declared here}}
 @end
 
 // Class extension
@@ -19,6 +19,6 @@
 @end
 
 @implementation MyClass // expected-warning {{incomplete implementation}}  \
-                       // expected-warning {{method in protocol not implemented}}
+                       // expected-warning {{method 'Pmeth1' in protocol not implemented}}
 - (void)Pmeth {}
 @end
index f08a5a97d8b78e138cd4b8e82c552fdbc6c757d9..503eef11ca68a9b6c92f1b2e6df139d137d62c3d 100644 (file)
@@ -5,11 +5,11 @@
 @optional
 - (int) PMeth;
 @required
-- (void) : (double) arg; // expected-note {{method declared here}}
+- (void) : (double) arg; // expected-note {{method ':' declared here}}
 @end
 
 @interface NSImage <P1>
-- (void) initialize; // expected-note {{method declared here}}
+- (void) initialize; // expected-note {{method 'initialize' declared here}}
 @end
 
 @interface NSImage (AirPortUI)
@@ -17,7 +17,7 @@
 @end
 
 @interface NSImage()
-- (void) CEMeth; // expected-note {{method declared here}}
+- (void) CEMeth; // expected-note {{method 'CEMeth' declared here}}
 @end
 
 @implementation NSImage (AirPortUI)
index 11b4b9602e141ee8c136af5001d41af42993d2d1..addecbeecacf5eae748c1e2400db93a99df1a4ea 100644 (file)
@@ -150,7 +150,7 @@ void test_inference() {
 
 // <rdar://problem/9340699>
 @interface G 
-- (id)_ABC_init __attribute__((objc_method_family(init))); // expected-note {{method declared here}}
+- (id)_ABC_init __attribute__((objc_method_family(init))); // expected-note {{method '_ABC_init' declared here}}
 @end
 
 @interface G (Additions)
index c685fdbcbe59c06928243e7b0e3ee7a7cd60849e..70ff2289465463327da86b1f225be7ae8f5acc8f 100644 (file)
@@ -1,25 +1,25 @@
 // RUN: %clang_cc1 -fsyntax-only -verify %s
 
 @protocol P1
-- (void) P1proto;  // expected-note {{method declared here}}
-+ (void) ClsP1Proto;    // expected-note {{method declared here}}
+- (void) P1proto;  // expected-note {{method 'P1proto' declared here}}
++ (void) ClsP1Proto;    // expected-note {{method 'ClsP1Proto' declared here}}
 - (void) DefP1proto;
 @end
 @protocol P2
-- (void) P2proto;   // expected-note {{method declared here}}
-+ (void) ClsP2Proto;  // expected-note {{method declared here}}
+- (void) P2proto;   // expected-note {{method 'P2proto' declared here}}
++ (void) ClsP2Proto;  // expected-note {{method 'ClsP2Proto' declared here}}
 @end
 
 @protocol P3<P2>
-- (void) P3proto;   // expected-note {{method declared here}}
-+ (void) ClsP3Proto;   // expected-note {{method declared here}}
+- (void) P3proto;   // expected-note {{method 'P3proto' declared here}}
++ (void) ClsP3Proto;   // expected-note {{method 'ClsP3Proto' declared here}}
 + (void) DefClsP3Proto;
 @end
 
 @protocol PROTO<P1, P3>
-- (void) meth;           // expected-note {{method declared here}}
-- (void) meth : (int) arg1;   // expected-note {{method declared here}}
-+ (void) cls_meth : (int) arg1;   // expected-note {{method declared here}}
+- (void) meth;           // expected-note {{method 'meth' declared here}}
+- (void) meth : (int) arg1;   // expected-note {{method 'meth:' declared here}}
++ (void) cls_meth : (int) arg1;   // expected-note {{method 'cls_meth:' declared here}}
 @end
 
 @interface INTF <PROTO> // expected-note 3 {{required for direct or indirect protocol 'PROTO'}} \
@@ -29,7 +29,7 @@
 @end
 
 @implementation INTF   // expected-warning {{incomplete implementation}} \
-                       // expected-warning 9 {{method in protocol not implemented}}
+                       // expected-warning 9 {{in protocol not implemented}}
 - (void) DefP1proto{}
 
 + (void) DefClsP3Proto{}
index 60da7b0c41dc71a6403b01cb5d8b7407c21760c1..0e116fe9f346a7725480200599f4b325e45f988b 100644 (file)
@@ -2,15 +2,15 @@
 // rdar://8973810
 
 @protocol P
-- (void) D __attribute__((deprecated)); // expected-note {{method declared here}}
+- (void) D __attribute__((deprecated)); // expected-note {{method 'D' declared here}}
 @end
 
 @interface A <P>
-+ (void)F __attribute__((deprecated)); // expected-note {{method declared here}}
++ (void)F __attribute__((deprecated)); // expected-note {{method 'F' declared here}}
 @end
 
 @interface A()
-- (void) E __attribute__((deprecated)); // expected-note {{method declared here}}
+- (void) E __attribute__((deprecated)); // expected-note {{method 'E' declared here}}
 @end
 
 @implementation A
@@ -34,7 +34,7 @@ __attribute__((deprecated))
 @end
 
 @interface BASE
-- (void) B __attribute__((deprecated)); // expected-note {{method declared here}}
+- (void) B __attribute__((deprecated)); // expected-note {{method 'B' declared here}}
 @end
 
 @interface SUB : BASE