зеркало из https://github.com/microsoft/clang-1.git
with -Wdeprecated, include a note to its deprecated declaration
location. // rdar://10893232 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155385 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
87380aaf42
Коммит
d672436751
|
@ -4189,9 +4189,13 @@ void Sema::EmitDeprecationWarning(NamedDecl *D, StringRef Message,
|
|||
// Otherwise, don't warn if our current context is deprecated.
|
||||
if (isDeclDeprecated(cast<Decl>(getCurLexicalContext())))
|
||||
return;
|
||||
if (!Message.empty())
|
||||
if (!Message.empty()) {
|
||||
Diag(Loc, diag::warn_deprecated_message) << D->getDeclName()
|
||||
<< Message;
|
||||
Diag(D->getLocation(),
|
||||
isa<ObjCMethodDecl>(D) ? diag::note_method_declared_at
|
||||
: diag::note_previous_decl) << D->getDeclName();
|
||||
}
|
||||
else {
|
||||
if (!UnknownObjCClass)
|
||||
Diag(Loc, diag::warn_deprecated) << D->getDeclName();
|
||||
|
|
|
@ -87,11 +87,11 @@ typedef struct {
|
|||
AA; // expected-warning {{anonymous structs are a Microsoft extension}}
|
||||
} BB;
|
||||
|
||||
__declspec(deprecated("This is deprecated")) enum DE1 { one, two } e1;
|
||||
__declspec(deprecated("This is deprecated")) enum DE1 { one, two } e1; // expected-note {{'e1' declared here}}
|
||||
struct __declspec(deprecated) DS1 { int i; float f; };
|
||||
|
||||
#define MY_TEXT "This is also deprecated"
|
||||
__declspec(deprecated(MY_TEXT)) void Dfunc1( void ) {}
|
||||
__declspec(deprecated(MY_TEXT)) void Dfunc1( void ) {} // expected-note {{'Dfunc1' declared here}}
|
||||
|
||||
void test( void ) {
|
||||
e1 = one; // expected-warning {{'e1' is deprecated: This is deprecated}}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
// RUN: %clang_cc1 "-triple" "x86_64-apple-ios3.0" -fsyntax-only -verify %s
|
||||
|
||||
void f0(int) __attribute__((availability(ios,introduced=2.0,deprecated=2.1)));
|
||||
void f0(int) __attribute__((availability(ios,introduced=2.0,deprecated=2.1))); // expected-note {{'f0' declared here}}
|
||||
void f1(int) __attribute__((availability(ios,introduced=2.1)));
|
||||
void f2(int) __attribute__((availability(ios,introduced=2.0,deprecated=3.0)));
|
||||
void f2(int) __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{'f2' declared here}}
|
||||
void f3(int) __attribute__((availability(ios,introduced=3.0)));
|
||||
void f4(int) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,obsoleted=10.5), availability(ios,introduced=2.0,deprecated=2.1,obsoleted=3.0))); // expected-note{{explicitly marked unavailable}}
|
||||
|
||||
void f5(int) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(ios,deprecated=3.0)));
|
||||
void f5(int) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(ios,deprecated=3.0))); // expected-note {{'f5' declared here}}
|
||||
void f6(int) __attribute__((availability(ios,deprecated=3.0)));
|
||||
void f6(int) __attribute__((availability(ios,introduced=2.0)));
|
||||
void f6(int) __attribute__((availability(ios,introduced=2.0))); // expected-note {{'f6' declared here}}
|
||||
|
||||
void test() {
|
||||
f0(0); // expected-warning{{'f0' is deprecated: first deprecated in iOS 2.1}}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
void f0(int) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)));
|
||||
void f1(int) __attribute__((availability(macosx,introduced=10.5)));
|
||||
void f2(int) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5)));
|
||||
void f2(int) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5))); // expected-note {{'f2' declared here}}
|
||||
void f3(int) __attribute__((availability(macosx,introduced=10.6)));
|
||||
void f4(int) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,obsoleted=10.5), availability(ios,introduced=2.0,deprecated=3.0))); // expected-note{{explicitly marked unavailable}}
|
||||
void f5(int) __attribute__((availability(ios,introduced=3.2), availability(macosx,unavailable))); // expected-note{{function has been explicitly marked unavailable here}}
|
||||
|
|
|
@ -8,7 +8,7 @@ void f3() __attribute__((availability(otheros,introduced=2.2))); // expected-war
|
|||
|
||||
// rdar://10095131
|
||||
extern void
|
||||
ATSFontGetName(const char *oName) __attribute__((availability(macosx,introduced=8.0,deprecated=9.0, message="use CTFontCopyFullName")));
|
||||
ATSFontGetName(const char *oName) __attribute__((availability(macosx,introduced=8.0,deprecated=9.0, message="use CTFontCopyFullName"))); // expected-note {{'ATSFontGetName' declared here}}
|
||||
|
||||
extern void
|
||||
ATSFontGetPostScriptName(int flags) __attribute__((availability(macosx,introduced=8.0,obsoleted=9.0, message="use ATSFontGetFullPostScriptName"))); // expected-note {{function has been explicitly marked unavailable here}}
|
||||
|
|
|
@ -21,7 +21,7 @@ typedef enum {red, green, blue} Color __attribute__((deprecated("Please avoid Co
|
|||
Color c1; // expected-warning {{'Color' is deprecated: Please avoid Color}}
|
||||
|
||||
int g1;
|
||||
int g2 __attribute__ ((deprecated("Please avoid g2")));
|
||||
int g2 __attribute__ ((deprecated("Please avoid g2"))); // expected-note {{'g2' declared here}}
|
||||
|
||||
int func1()
|
||||
{
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-darwin9.0.0 -fsyntax-only -verify %s
|
||||
@interface A
|
||||
- (void)method __attribute__((availability(macosx,introduced=10.1,deprecated=10.2)));
|
||||
|
||||
@protocol P
|
||||
- (void)proto_method __attribute__((availability(macosx,introduced=10.1,deprecated=10.2))); // expected-note 2 {{method 'proto_method' declared here}}
|
||||
@end
|
||||
|
||||
@interface A <P>
|
||||
- (void)method __attribute__((availability(macosx,introduced=10.1,deprecated=10.2))); // expected-note {{method 'method' declared here}}
|
||||
@end
|
||||
|
||||
@interface B : A
|
||||
|
@ -10,4 +15,6 @@
|
|||
void f(A *a, B *b) {
|
||||
[a method]; // expected-warning{{'method' is deprecated: first deprecated in Mac OS X 10.2}}
|
||||
[b method];
|
||||
[a proto_method]; // expected-warning{{'proto_method' is deprecated: first deprecated in Mac OS X 10.2}}
|
||||
[b proto_method]; // expected-warning{{'proto_method' is deprecated: first deprecated in Mac OS X 10.2}}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче