https://github.com/mizvekov updated 
https://github.com/llvm/llvm-project/pull/93266

>From 5b592204ddef177d612f8455f4e14ab9cf9c06bd Mon Sep 17 00:00:00 2001
From: Matheus Izvekov <mizve...@gmail.com>
Date: Thu, 23 May 2024 23:57:01 -0300
Subject: [PATCH] [clang] add fallback to expr in the template differ when
 comparing ValueDecl

---
 clang/docs/ReleaseNotes.rst                     | 1 +
 clang/lib/AST/ASTDiagnostic.cpp                 | 5 +++++
 clang/test/Misc/diag-template-diffing-cxx26.cpp | 4 ++--
 3 files changed, 8 insertions(+), 2 deletions(-)

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-diffing-cxx26.cpp 
b/clang/test/Misc/diag-template-diffing-cxx26.cpp
index cc174d6c334fb..2b6dd86a9885d 100644
--- a/clang/test/Misc/diag-template-diffing-cxx26.cpp
+++ b/clang/test/Misc/diag-template-diffing-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}}

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to