diff options
| author | Richard Trieu <rtrieu@google.com> | 2014-07-22 04:06:54 +0000 |
|---|---|---|
| committer | Richard Trieu <rtrieu@google.com> | 2014-07-22 04:06:54 +0000 |
| commit | 63056c391842ebf9a9d82caab7b9ef13d15529e2 (patch) | |
| tree | 41159e4b4b4f883216f28b031d53bc1c7f42f831 /clang | |
| parent | 2fc9a2b8eb7cc766e96fba89be7e0fea5eef0a77 (diff) | |
| download | bcm5719-llvm-63056c391842ebf9a9d82caab7b9ef13d15529e2.tar.gz bcm5719-llvm-63056c391842ebf9a9d82caab7b9ef13d15529e2.zip | |
More gracefully handle parentheses in templare arguments in template diffing.
llvm-svn: 213611
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/AST/ASTDiagnostic.cpp | 3 | ||||
| -rw-r--r-- | clang/test/Misc/diag-template-diffing.cpp | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp index 15e288acb9a..20540f3ce12 100644 --- a/clang/lib/AST/ASTDiagnostic.cpp +++ b/clang/lib/AST/ASTDiagnostic.cpp @@ -1184,7 +1184,8 @@ class TemplateDiff { } DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(ArgExpr); if (!DRE) { - DRE = cast<DeclRefExpr>(cast<UnaryOperator>(ArgExpr)->getSubExpr()); + DRE = cast<DeclRefExpr>( + cast<UnaryOperator>(ArgExpr->IgnoreParens())->getSubExpr()); } return DRE->getDecl(); diff --git a/clang/test/Misc/diag-template-diffing.cpp b/clang/test/Misc/diag-template-diffing.cpp index 41cdca47126..391915ee970 100644 --- a/clang/test/Misc/diag-template-diffing.cpp +++ b/clang/test/Misc/diag-template-diffing.cpp @@ -1114,11 +1114,15 @@ struct Wrapper {}; template <class T> Wrapper<T> MakeWrapper(); -int global; +int global, global2; constexpr int * ptr = nullptr; Wrapper<S<ptr>> W = MakeWrapper<S<&global>>(); // Don't print an extra '&' for 'ptr' // CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<ptr>>' + +Wrapper<S<(&global2)>> W2 = MakeWrapper<S<&global>>(); +// Handle parens correctly +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<global2>>' } // CHECK-ELIDE-NOTREE: {{[0-9]*}} errors generated. |

