r213611 - More gracefully handle parentheses in templare arguments in template diffing.
Richard Trieu
rtrieu at google.com
Mon Jul 21 21:06:54 PDT 2014
Author: rtrieu
Date: Mon Jul 21 23:06:54 2014
New Revision: 213611
URL: http://llvm.org/viewvc/llvm-project?rev=213611&view=rev
Log:
More gracefully handle parentheses in templare arguments in template diffing.
Modified:
cfe/trunk/lib/AST/ASTDiagnostic.cpp
cfe/trunk/test/Misc/diag-template-diffing.cpp
Modified: cfe/trunk/lib/AST/ASTDiagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTDiagnostic.cpp?rev=213611&r1=213610&r2=213611&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ASTDiagnostic.cpp (original)
+++ cfe/trunk/lib/AST/ASTDiagnostic.cpp Mon Jul 21 23:06:54 2014
@@ -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();
Modified: cfe/trunk/test/Misc/diag-template-diffing.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/diag-template-diffing.cpp?rev=213611&r1=213610&r2=213611&view=diff
==============================================================================
--- cfe/trunk/test/Misc/diag-template-diffing.cpp (original)
+++ cfe/trunk/test/Misc/diag-template-diffing.cpp Mon Jul 21 23:06:54 2014
@@ -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.
More information about the cfe-commits
mailing list