aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2025-01-28 17:46:59 -0500
committerJason Merrill <jason@redhat.com>2025-04-17 13:18:44 -0400
commit47b62be9cace0e2e124650f331788d52ffd5fb25 (patch)
tree573f0fe5c81c8b9568d1182f0b4a6bcc0b0aaeda /gcc
parent7c47badcdc8625ea53aed275be96c32bc78db25b (diff)
downloadgcc-47b62be9cace0e2e124650f331788d52ffd5fb25.zip
gcc-47b62be9cace0e2e124650f331788d52ffd5fb25.tar.gz
gcc-47b62be9cace0e2e124650f331788d52ffd5fb25.tar.bz2
c++: 'requires' diagnostic before C++20
We were giving a generic "not declared" error for a requires-expression without concepts enabled; we can do better. gcc/cp/ChangeLog: * lex.cc (unqualified_name_lookup_error): Handle 'requires' better.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/lex.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/cp/lex.cc b/gcc/cp/lex.cc
index c12b084..12af81e 100644
--- a/gcc/cp/lex.cc
+++ b/gcc/cp/lex.cc
@@ -749,6 +749,9 @@ unqualified_name_lookup_error (tree name, location_t loc)
if (IDENTIFIER_ANY_OP_P (name))
error_at (loc, "%qD not defined", name);
+ else if (!flag_concepts && name == ridpointers[(int)RID_REQUIRES])
+ error_at (loc, "%<requires%> only available with %<-std=c++20%> or "
+ "%<-fconcepts%>");
else
{
if (!objc_diagnose_private_ivar (name))