[clang] ad190fc - [clang] add fallback to expr in the template differ when comparing ValueDecl (#93266)
via cfe-commits
cfe-commits at lists.llvm.org
Fri May 24 07:38:26 PDT 2024
Author: Matheus Izvekov
Date: 2024-05-24T11:38:22-03:00
New Revision: ad190fcf15c1d0beea1ba93b4d250e15d2e944f4
URL: https://github.com/llvm/llvm-project/commit/ad190fcf15c1d0beea1ba93b4d250e15d2e944f4
DIFF: https://github.com/llvm/llvm-project/commit/ad190fcf15c1d0beea1ba93b4d250e15d2e944f4.diff
LOG: [clang] add fallback to expr in the template differ when comparing ValueDecl (#93266)
Added:
Modified:
clang/docs/ReleaseNotes.rst
clang/lib/AST/ASTDiagnostic.cpp
clang/test/Misc/diag-template-diffing-cxx26.cpp
Removed:
################################################################################
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index f612a1fd36859..fd7f3ee13d9ac 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -803,6 +803,7 @@ Miscellaneous Bug Fixes
- Fixed an infinite recursion in ASTImporter, on return type declared inside
body of C++11 lambda without trailing return (#GH68775).
- Fixed declaration name source location of instantiated function definitions (GH71161).
+- Improve diagnostic output to print an expression instead of 'no argument` when comparing Values as template arguments.
Miscellaneous Clang Crashes Fixed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp
index 5c7afaaf2ca8f..0680ff5e3a385 100644
--- a/clang/lib/AST/ASTDiagnostic.cpp
+++ b/clang/lib/AST/ASTDiagnostic.cpp
@@ -1936,6 +1936,11 @@ class TemplateDiff {
return;
}
+ if (E) {
+ PrintExpr(E);
+ return;
+ }
+
OS << "(no argument)";
}
diff --git a/clang/test/Misc/diag-template-
diff ing-cxx26.cpp b/clang/test/Misc/diag-template-
diff ing-cxx26.cpp
index cc174d6c334fb..2b6dd86a9885d 100644
--- a/clang/test/Misc/diag-template-
diff ing-cxx26.cpp
+++ b/clang/test/Misc/diag-template-
diff ing-cxx26.cpp
@@ -19,10 +19,10 @@ namespace GH93068 {
// expected-note@#A {{no known conversion from 'A<0>' to 'const A<&n[1]> &' for 1st argument}}
// expected-note@#A {{no known conversion from 'A<0>' to 'A<&n[1]> &&' for 1st argument}}
- // notree-error@#2 {{no viable conversion from 'A<n>' to 'A<(no argument)>'}}
+ // notree-error@#2 {{no viable conversion from 'A<n>' to 'A<n + 1>'}}
/* tree-error@#2 {{no viable conversion
A<
- [n != (no argument)]>}}*/
+ [n != n + 1]>}}*/
A<n + 1> v2 = A<n>(); // #2
// expected-note@#A {{no known conversion from 'A<n>' to 'const A<&n[1]> &' for 1st argument}}
More information about the cfe-commits
mailing list