-
- Downloads
c++: tweak parsing of invalid types
cp_parser_parse_and_diagnose_invalid_type_name is called during declaration parsing, so it should pass 'true' for the declarator_p argument. But that caused a diagnostic regression on template/pr84789.C due to undesired lookup in dependent scopes. To fix that, cp_parser_nested_name_specifier_opt needs to respect the value of check_dependency_p. This patch avoids a regression from Andrew Sharp's WIP patch for PR70417. It would make more sense to test only check_dependency_p, not declarator_p, but removing the declarator_p condition turns out to reveal complicated interactions of cp_parser_constructor_declarator_p and caching of nested-name-specifiers and template-ids that I've already spent too much time trying to sort out. gcc/cp/ChangeLog: * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Pass true for declarator_p. (cp_parser_nested_name_specifier_opt): Only look through TYPENAME_TYPE if check_dependency_p is false.
Loading
Please register or sign in to comment