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.
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,