PR c++/9050, DR 147, DR 318
PR c++/9050, DR 147, DR 318 * parser.c (cp_parser_lookup_name): If the name matches the explicit class scope, we're naming the constructor. (cp_parser_constructor_declarator_p): Just use cp_parser_unqualified_id if we have a nested-name-specifier. (cp_parser_direct_declarator): Handle getting an overload set as a constructor declarator. (cp_parser_unqualified_id): Avoid looking up the constructor when naming the destructor. (cp_parser_diagnose_invalid_type_name): Give good diagnostic for improper use of constructor as template. * typeck.c (finish_class_member_access_expr): Give good diagnostic about calling constructor. * error.c (dump_aggr_type): Don't print A::A for injected-class-name. From-SVN: r154403
Showing
- gcc/cp/ChangeLog 18 additions, 0 deletionsgcc/cp/ChangeLog
- gcc/cp/error.c 5 additions, 4 deletionsgcc/cp/error.c
- gcc/cp/parser.c 83 additions, 36 deletionsgcc/cp/parser.c
- gcc/cp/typeck.c 8 additions, 0 deletionsgcc/cp/typeck.c
- gcc/testsuite/ChangeLog 9 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/g++.dg/lookup/name-clash4.C 1 addition, 1 deletiongcc/testsuite/g++.dg/lookup/name-clash4.C
- gcc/testsuite/g++.dg/tc1/dr147.C 2 additions, 2 deletionsgcc/testsuite/g++.dg/tc1/dr147.C
- gcc/testsuite/g++.dg/template/ctor9.C 9 additions, 0 deletionsgcc/testsuite/g++.dg/template/ctor9.C
- gcc/testsuite/g++.old-deja/g++.jason/temporary5.C 5 additions, 3 deletionsgcc/testsuite/g++.old-deja/g++.jason/temporary5.C
- gcc/testsuite/g++.old-deja/g++.pt/ctor2.C 1 addition, 1 deletiongcc/testsuite/g++.old-deja/g++.pt/ctor2.C
Loading
Please register or sign in to comment