[clang] [clang][Diagnostics] Provide source range to constexpr function diags (PR #69721)

2023-10-23 Thread Timm Baeder via cfe-commits

https://github.com/tbaederr closed 
https://github.com/llvm/llvm-project/pull/69721
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][Diagnostics] Provide source range to constexpr function diags (PR #69721)

2023-10-23 Thread Aaron Ballman via cfe-commits

https://github.com/AaronBallman approved this pull request.

LGTM!

https://github.com/llvm/llvm-project/pull/69721
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][Diagnostics] Provide source range to constexpr function diags (PR #69721)

2023-10-20 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang

Author: Timm Baeder (tbaederr)


Changes

Before:
```console
./array.cpp:290:16: error: constexpr function never produces a constant 
expression [-Winvalid-constexpr]
  290 | constexpr void neverValid() {
  |^
./array.cpp:291:3: note: subexpression not valid in a constant expression
  291 |   throw;
  |   ^
```

After:
```console
./array.cpp:290:16: error: constexpr function never produces a constant 
expression [-Winvalid-constexpr]
  290 | constexpr void neverValid() {
  |^~
./array.cpp:291:3: note: subexpression not valid in a constant expression
  291 |   throw;
  |   ^
```

---
Full diff: https://github.com/llvm/llvm-project/pull/69721.diff


2 Files Affected:

- (modified) clang/lib/Sema/SemaDeclCXX.cpp (+2-1) 
- (modified) clang/test/Misc/constexpr-source-ranges.cpp (+4) 


``diff
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 0193e476b3a781b..1d24609d99718ab 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -2457,7 +2457,8 @@ static bool CheckConstexprFunctionBody(Sema , 
const FunctionDecl *Dcl,
   !Expr::isPotentialConstantExpr(Dcl, Diags)) {
 SemaRef.Diag(Dcl->getLocation(),
  diag::ext_constexpr_function_never_constant_expr)
-<< isa(Dcl) << Dcl->isConsteval();
+<< isa(Dcl) << Dcl->isConsteval()
+<< Dcl->getNameInfo().getSourceRange();
 for (size_t I = 0, N = Diags.size(); I != N; ++I)
   SemaRef.Diag(Diags[I].first, Diags[I].second);
 // Don't return false here: we allow this for compatibility in
diff --git a/clang/test/Misc/constexpr-source-ranges.cpp 
b/clang/test/Misc/constexpr-source-ranges.cpp
index 7f5c522ae305b54..fde05b5c75aa46a 100644
--- a/clang/test/Misc/constexpr-source-ranges.cpp
+++ b/clang/test/Misc/constexpr-source-ranges.cpp
@@ -49,3 +49,7 @@ constexpr int uninit() {
   return aaa;
 }
 static_assert(uninit() == 0, "");
+
+
+constexpr void neverValid() { throw; }
+// CHECK: :{[[@LINE-1]]:16-[[@LINE-1]]:26}:

``




https://github.com/llvm/llvm-project/pull/69721
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][Diagnostics] Provide source range to constexpr function diags (PR #69721)

2023-10-20 Thread Timm Baeder via cfe-commits

https://github.com/tbaederr created 
https://github.com/llvm/llvm-project/pull/69721

Before:
```console
./array.cpp:290:16: error: constexpr function never produces a constant 
expression [-Winvalid-constexpr]
  290 | constexpr void neverValid() {
  |^
./array.cpp:291:3: note: subexpression not valid in a constant expression
  291 |   throw;
  |   ^
```

After:
```console
./array.cpp:290:16: error: constexpr function never produces a constant 
expression [-Winvalid-constexpr]
  290 | constexpr void neverValid() {
  |^~
./array.cpp:291:3: note: subexpression not valid in a constant expression
  291 |   throw;
  |   ^
```

>From d1ec520893fae9667dd0691ae40609d1bc0bc8ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= 
Date: Fri, 20 Oct 2023 15:14:06 +0200
Subject: [PATCH] [clang][Diagnostics] Provide source range to constexpr
 function diags

Before:

./array.cpp:290:16: error: constexpr function never produces a constant 
expression [-Winvalid-constexpr]
  290 | constexpr void neverValid() {
  |^
./array.cpp:291:3: note: subexpression not valid in a constant expression
  291 |   throw;
  |   ^

After:

./array.cpp:290:16: error: constexpr function never produces a constant 
expression [-Winvalid-constexpr]
  290 | constexpr void neverValid() {
  |^~
./array.cpp:291:3: note: subexpression not valid in a constant expression
  291 |   throw;
  |   ^
---
 clang/lib/Sema/SemaDeclCXX.cpp  | 3 ++-
 clang/test/Misc/constexpr-source-ranges.cpp | 4 
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 0193e476b3a781b..1d24609d99718ab 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -2457,7 +2457,8 @@ static bool CheckConstexprFunctionBody(Sema , 
const FunctionDecl *Dcl,
   !Expr::isPotentialConstantExpr(Dcl, Diags)) {
 SemaRef.Diag(Dcl->getLocation(),
  diag::ext_constexpr_function_never_constant_expr)
-<< isa(Dcl) << Dcl->isConsteval();
+<< isa(Dcl) << Dcl->isConsteval()
+<< Dcl->getNameInfo().getSourceRange();
 for (size_t I = 0, N = Diags.size(); I != N; ++I)
   SemaRef.Diag(Diags[I].first, Diags[I].second);
 // Don't return false here: we allow this for compatibility in
diff --git a/clang/test/Misc/constexpr-source-ranges.cpp 
b/clang/test/Misc/constexpr-source-ranges.cpp
index 7f5c522ae305b54..fde05b5c75aa46a 100644
--- a/clang/test/Misc/constexpr-source-ranges.cpp
+++ b/clang/test/Misc/constexpr-source-ranges.cpp
@@ -49,3 +49,7 @@ constexpr int uninit() {
   return aaa;
 }
 static_assert(uninit() == 0, "");
+
+
+constexpr void neverValid() { throw; }
+// CHECK: :{[[@LINE-1]]:16-[[@LINE-1]]:26}:

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