diff options
author | Bill Wendling <isanbard@gmail.com> | 2014-08-04 04:35:10 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2014-08-04 04:35:10 +0000 |
commit | 3869e6a78950823e8a162fdfe7f0f947d3ea0428 (patch) | |
tree | abc10f3dd08a700c2bf91b88b30f4835735d89fb /clang | |
parent | d8f7f82712a4173ce45e3a79d7d6c4010d2e9e9b (diff) | |
download | llvm-3869e6a78950823e8a162fdfe7f0f947d3ea0428.zip llvm-3869e6a78950823e8a162fdfe7f0f947d3ea0428.tar.gz llvm-3869e6a78950823e8a162fdfe7f0f947d3ea0428.tar.bz2 |
Merging r213613:
------------------------------------------------------------------------
r213613 | rtrieu | 2014-07-21 21:42:15 -0700 (Mon, 21 Jul 2014) | 2 lines
Fix '&' printing for template arguments in parentheses in template diffing.
------------------------------------------------------------------------
llvm-svn: 214692
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/AST/ASTDiagnostic.cpp | 9 | ||||
-rw-r--r-- | clang/test/Misc/diag-template-diffing.cpp | 8 |
2 files changed, 12 insertions, 5 deletions
diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp index 20540f3..5f78df2 100644 --- a/clang/lib/AST/ASTDiagnostic.cpp +++ b/clang/lib/AST/ASTDiagnostic.cpp @@ -994,7 +994,8 @@ class TemplateDiff { bool FromAddressOf = false; if (FromValueDecl) { if (FromExpr) { - if (UnaryOperator *UO = dyn_cast<UnaryOperator>(FromExpr)) { + if (UnaryOperator *UO = + dyn_cast<UnaryOperator>(FromExpr->IgnoreParens())) { if (UO->getOpcode() == UO_AddrOf) FromAddressOf = true; } @@ -1007,14 +1008,16 @@ class TemplateDiff { bool ToAddressOf = false; if (ToValueDecl) { if (ToExpr) { - if (UnaryOperator *UO = dyn_cast<UnaryOperator>(ToExpr)) { + if (UnaryOperator *UO = + dyn_cast<UnaryOperator>(ToExpr->IgnoreParens())) { if (UO->getOpcode() == UO_AddrOf) { ToAddressOf = true; } } } else { - if (!ArgumentType->isReferenceType()) + if (!ArgumentType->isReferenceType()) { ToAddressOf = true; + } } } Tree.SetNode(FromValueDecl, ToValueDecl, FromAddressOf, ToAddressOf); diff --git a/clang/test/Misc/diag-template-diffing.cpp b/clang/test/Misc/diag-template-diffing.cpp index 391915e..fcafb332 100644 --- a/clang/test/Misc/diag-template-diffing.cpp +++ b/clang/test/Misc/diag-template-diffing.cpp @@ -1120,9 +1120,13 @@ 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>>' +Wrapper<S<(&global2)>> W2 = MakeWrapper<S<&global>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<&global2>>' +Wrapper<S<&global2>> W3 = MakeWrapper<S<(&global)>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<&global2>>' +Wrapper<S<(&global2)>> W4 = MakeWrapper<S<(&global)>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<&global2>>' } // CHECK-ELIDE-NOTREE: {{[0-9]*}} errors generated. |