From: Bill Wendling Date: Mon, 4 Aug 2014 04:34:53 +0000 (+0000) Subject: Merging r213611: X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9efbb8e0f658e1aa793711f84c15ef0fe2feccef;p=clang Merging r213611: ------------------------------------------------------------------------ r213611 | rtrieu | 2014-07-21 21:06:54 -0700 (Mon, 21 Jul 2014) | 2 lines More gracefully handle parentheses in templare arguments in template diffing. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214691 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ASTDiagnostic.cpp b/lib/AST/ASTDiagnostic.cpp index 15e288acb9..20540f3ce1 100644 --- a/lib/AST/ASTDiagnostic.cpp +++ b/lib/AST/ASTDiagnostic.cpp @@ -1184,7 +1184,8 @@ class TemplateDiff { } DeclRefExpr *DRE = dyn_cast(ArgExpr); if (!DRE) { - DRE = cast(cast(ArgExpr)->getSubExpr()); + DRE = cast( + cast(ArgExpr->IgnoreParens())->getSubExpr()); } return DRE->getDecl(); diff --git a/test/Misc/diag-template-diffing.cpp b/test/Misc/diag-template-diffing.cpp index 41cdca4712..391915ee97 100644 --- a/test/Misc/diag-template-diffing.cpp +++ b/test/Misc/diag-template-diffing.cpp @@ -1114,11 +1114,15 @@ struct Wrapper {}; template Wrapper MakeWrapper(); -int global; +int global, global2; constexpr int * ptr = nullptr; Wrapper> W = MakeWrapper>(); // Don't print an extra '&' for 'ptr' // CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper>' to 'Wrapper>' + +Wrapper> W2 = MakeWrapper>(); +// Handle parens correctly +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper>' to 'Wrapper>' } // CHECK-ELIDE-NOTREE: {{[0-9]*}} errors generated.