diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-03-28 23:52:04 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-03-28 23:52:04 +0000 |
| commit | ba699d611bbd0126584bc4a4ec01bc092b57f1e6 (patch) | |
| tree | f659230d39266637630c77020e489b4648f23b1e | |
| parent | b24b5687254a1dc4756f968690f5e03359511f40 (diff) | |
| download | bcm5719-llvm-ba699d611bbd0126584bc4a4ec01bc092b57f1e6.tar.gz bcm5719-llvm-ba699d611bbd0126584bc4a4ec01bc092b57f1e6.zip | |
Don't do the checks of Sema::DiagnoseEqualityWithExtraParens() on type-dependent expressions. Fixes rdar://9027658.
llvm-svn: 128437
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 3 | ||||
| -rw-r--r-- | clang/test/SemaCXX/warn-assignment-condition.cpp | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 8b7324e9661..22b0f03a52d 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -9839,6 +9839,9 @@ void Sema::DiagnoseEqualityWithExtraParens(ParenExpr *parenE) { SourceLocation parenLoc = parenE->getLocStart(); if (parenLoc.isInvalid() || parenLoc.isMacroID()) return; + // Don't warn for dependent expressions. + if (parenE->isTypeDependent()) + return; Expr *E = parenE->IgnoreParens(); diff --git a/clang/test/SemaCXX/warn-assignment-condition.cpp b/clang/test/SemaCXX/warn-assignment-condition.cpp index 27eedb9128d..c0ef35b252d 100644 --- a/clang/test/SemaCXX/warn-assignment-condition.cpp +++ b/clang/test/SemaCXX/warn-assignment-condition.cpp @@ -125,3 +125,16 @@ void test2() { if ((test2 == fn)) {} } +namespace rdar9027658 { +template <typename T> +void f() { + if ((T::g == 3)) { } // expected-warning {{equality comparison with extraneous parentheses}} \ + // expected-note {{use '=' to turn this equality comparison into an assignment}} \ + // expected-note {{remove extraneous parentheses around the comparison to silence this warning}} +} + +struct S { int g; }; +void test() { + f<S>(); // expected-note {{in instantiation}} +} +} |

