[Bug c++/105307] New: -fmax-errors truncated for concept diagnostics
ich.freak at gmx dot net
gcc-bugzilla@gcc.gnu.org
Tue Apr 19 06:58:46 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105307
Bug ID: 105307
Summary: -fmax-errors truncated for concept diagnostics
Product: gcc
Version: 11.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: ich.freak at gmx dot net
Target Milestone: ---
In #92440 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92440) it was remarked
that -fmax-errors=1 truncates the first error "in the middle of the sentence"
and a patch was supplied. However, the problem still persists for concepts:
template<class T> concept HasX = requires { T::x; };
template <HasX T> struct S {};
struct NoX {};
S<NoX> s;
compiled with
> g++ -std=c++20 -fconcepts-diagnostics-depth=3 test.cpp -o test
yields:
>test.cpp:4:6: error: template constraint failure for 'template<class T> >requires HasX<T> struct S'
> 4 | S<NoX> s;
> | ^
>test.cpp:4:6: note: constraints not satisfied
>test.cpp: In substitution of 'template<class T> requires HasX<T> struct S >[with T = NoX]':
>test.cpp:4:6: required from here
>test.cpp:1:26: required for the satisfaction of 'HasX<T>' [with T = NoX]
>test.cpp:1:33: in requirements [with T = NoX]
>test.cpp:1:47: note: the required expression 'T::x' is invalid, because
> 1 | template<class T>concept HasX = requires { T::x; };
> | ^
>test.cpp:1:47: error: 'x' is not a member of 'NoX'
And, if we add -fmax-errors=1, we get:
>test.cpp:4:6: error: template constraint failure for 'template<class T> >requires HasX<T> struct S'
> 4 | S<NoX> s;
> | ^
>test.cpp:4:6: note: constraints not satisfied
>test.cpp: In substitution of 'template<class T> requires HasX<T> struct S >[with T = NoX]':
>test.cpp:4:6: required from here
>test.cpp:1:26: required for the satisfaction of 'HasX<T>' [with T = NoX]
>test.cpp:1:33: in requirements [with T = NoX]
>test.cpp:1:47: note: the required expression 'T::x' is invalid, because
> 1 | template<class T>concept HasX = requires { T::x; };
> | ^
>compilation terminated due to -fmax-errors=1.
However, the "explanatory errors" that are getting truncated here still
logically belong to the same error and should, therefore, not be truncated.
More information about the Gcc-bugs
mailing list