forked from OSchip/llvm-project
[Sema] Avoid duplicate -Wunguarded-availability warnings in nested functions
rdar://31862310 llvm-svn: 303170
This commit is contained in:
parent
3a45504498
commit
6f91112051
|
@ -7230,6 +7230,13 @@ public:
|
|||
SemaRef.Context.getTargetInfo().getPlatformMinVersion());
|
||||
}
|
||||
|
||||
bool TraverseDecl(Decl *D) {
|
||||
// Avoid visiting nested functions to prevent duplicate warnings.
|
||||
if (!D || isa<FunctionDecl>(D))
|
||||
return true;
|
||||
return Base::TraverseDecl(D);
|
||||
}
|
||||
|
||||
bool TraverseStmt(Stmt *S) {
|
||||
if (!S)
|
||||
return true;
|
||||
|
@ -7243,6 +7250,8 @@ public:
|
|||
|
||||
bool TraverseIfStmt(IfStmt *If);
|
||||
|
||||
bool TraverseLambdaExpr(LambdaExpr *E) { return true; }
|
||||
|
||||
bool VisitObjCMessageExpr(ObjCMessageExpr *Msg) {
|
||||
if (ObjCMethodDecl *D = Msg->getMethodDecl())
|
||||
DiagnoseDeclAvailability(
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
int func_10_11() AVAILABLE_10_11; // expected-note 4 {{'func_10_11' has been explicitly marked partial here}}
|
||||
|
||||
#ifdef OBJCPP
|
||||
// expected-note@+2 2 {{marked partial here}}
|
||||
// expected-note@+2 6 {{marked partial here}}
|
||||
#endif
|
||||
int func_10_12() AVAILABLE_10_12; // expected-note 6 {{'func_10_12' has been explicitly marked partial here}}
|
||||
|
||||
|
@ -188,4 +188,19 @@ auto topLevelLambda = [] () {
|
|||
func_10_12();
|
||||
};
|
||||
|
||||
void functionInFunction() {
|
||||
func_10_12(); // expected-warning{{'func_10_12' is only available on macOS 10.12 or newer}} expected-note{{@available}}
|
||||
struct DontWarnTwice {
|
||||
void f() {
|
||||
func_10_12(); // expected-warning{{'func_10_12' is only available on macOS 10.12 or newer}} expected-note{{@available}}
|
||||
}
|
||||
};
|
||||
void([] () {
|
||||
func_10_12(); // expected-warning{{'func_10_12' is only available on macOS 10.12 or newer}} expected-note{{@available}}
|
||||
});
|
||||
(void)(^ {
|
||||
func_10_12(); // expected-warning{{'func_10_12' is only available on macOS 10.12 or newer}} expected-note{{@available}}
|
||||
});
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue