diff options
author | Simon Martin <simon@nasilyan.com> | 2024-08-26 14:09:46 +0200 |
---|---|---|
committer | Simon Martin <simon@nasilyan.com> | 2024-08-27 21:48:49 +0200 |
commit | 02dff52c60e5b89d290147f142f655c7817154c2 (patch) | |
tree | 6f51054373899177bdc005408f1ab768b40634b2 /gcc/c-family/c-omp.c | |
parent | 691f682fe24d07ff5854f1f53d81909320110c9c (diff) | |
download | gcc-02dff52c60e5b89d290147f142f655c7817154c2.zip gcc-02dff52c60e5b89d290147f142f655c7817154c2.tar.gz gcc-02dff52c60e5b89d290147f142f655c7817154c2.tar.bz2 |
c++: Don't show constructor internal name in error message [PR105483]
We mention 'X::__ct' instead of 'X::X' in the "names the constructor,
not the type" error for this invalid code:
=== cut here ===
struct X {};
void g () {
X::X x;
}
=== cut here ===
The problem is that we use %<%T::%D%> to build the error message, while
%qE does exactly what we need since we have DECL_CONSTRUCTOR_P. This is
what this patch does.
It also skips until the end of the statement and returns error_mark_node
for this and the preceding if block, to avoid emitting extra (useless)
errors.
PR c++/105483
gcc/cp/ChangeLog:
* parser.cc (cp_parser_expression_statement): Use %qE instead of
incorrect %<%T::%D%>. Skip to end of statement and return
error_mark_node in case of error.
gcc/testsuite/ChangeLog:
* g++.dg/parse/error36.C: Adjust test expectation.
* g++.dg/tc1/dr147.C: Likewise.
* g++.old-deja/g++.other/typename1.C: Likewise.
* g++.dg/diagnostic/pr105483.C: New test.
Diffstat (limited to 'gcc/c-family/c-omp.c')
0 files changed, 0 insertions, 0 deletions