c++: Missed c++2a->20 change
authorNathan Sidwell <nathan@acm.org>
Thu, 14 May 2020 15:04:59 +0000 (08:04 -0700)
committerNathan Sidwell <nathan@acm.org>
Thu, 14 May 2020 15:06:35 +0000 (08:06 -0700)
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.

gcc/cp/ChangeLog
gcc/cp/parser.c

index bcae21c0d390ad5fc49f9be43e1efd830c33b0fd..ba0d9e691cac5fcdc931baff1b82736ec4010350 100644 (file)
@@ -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.
 
index bc1ee21e8ce96f66bbb5ea01c1289864deece515..41712bfdc2cd149638d932e1b89ac58bbb4926f5 100644 (file)
@@ -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,