c++: Missed c++2a->20 change
Jason missed a c++2a mention. I couldn't resist changing the loop following to place the initializers inside the fors. * parser.c (cp_parser_diagnose_invalid_typename): Mention std=c++20 not 2a, reformat dependent binfo inform loops.
This commit is contained in:
parent
f497e36ae5
commit
68f1d74ff9
@ -1,5 +1,8 @@
|
||||
2020-05-14 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* parser.c (cp_parser_diagnose_invalid_typename): Mention
|
||||
std=c++20 not 2a, reformat dependent binfo inform loops.
|
||||
|
||||
* pt.c (tsubst_template_decl): Reorder and commonize some control
|
||||
paths.
|
||||
|
||||
|
@ -3376,41 +3376,35 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree id,
|
||||
inform (location, "%<concept%> only available with %<-std=c++20%> or "
|
||||
"%<-fconcepts%>");
|
||||
else if (!flag_concepts && id == ridpointers[(int)RID_REQUIRES])
|
||||
inform (location, "%<requires%> only available with %<-std=c++2a%> or "
|
||||
inform (location, "%<requires%> only available with %<-std=c++20%> or "
|
||||
"%<-fconcepts%>");
|
||||
else if (processing_template_decl && current_class_type
|
||||
&& TYPE_BINFO (current_class_type))
|
||||
{
|
||||
tree b;
|
||||
|
||||
for (b = TREE_CHAIN (TYPE_BINFO (current_class_type));
|
||||
b;
|
||||
b = TREE_CHAIN (b))
|
||||
for (tree b = TREE_CHAIN (TYPE_BINFO (current_class_type));
|
||||
b; b = TREE_CHAIN (b))
|
||||
{
|
||||
tree base_type = BINFO_TYPE (b);
|
||||
if (CLASS_TYPE_P (base_type)
|
||||
&& dependent_type_p (base_type))
|
||||
{
|
||||
tree field;
|
||||
/* Go from a particular instantiation of the
|
||||
template (which will have an empty TYPE_FIELDs),
|
||||
to the main version. */
|
||||
base_type = CLASSTYPE_PRIMARY_TEMPLATE_TYPE (base_type);
|
||||
for (field = TYPE_FIELDS (base_type);
|
||||
field;
|
||||
field = DECL_CHAIN (field))
|
||||
for (tree field = TYPE_FIELDS (base_type);
|
||||
field; field = DECL_CHAIN (field))
|
||||
if (TREE_CODE (field) == TYPE_DECL
|
||||
&& DECL_NAME (field) == id)
|
||||
{
|
||||
inform (location,
|
||||
"(perhaps %<typename %T::%E%> was intended)",
|
||||
BINFO_TYPE (b), id);
|
||||
break;
|
||||
goto found;
|
||||
}
|
||||
if (field)
|
||||
break;
|
||||
}
|
||||
}
|
||||
found:;
|
||||
}
|
||||
}
|
||||
/* Here we diagnose qualified-ids where the scope is actually correct,
|
||||
|
Loading…
Reference in New Issue
Block a user