mirror of https://github.com/microsoft/clang.git
After numerous requests, have Objective-C 'method declared here' notes mention the actual method. This looks better within an IDE, where text isn't always regurgitated in the presentation of a warning. Fixes radar 10914035.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151579 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
adfb535905
commit
3306ec1923
|
@ -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<
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)) { }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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{}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue