parser.c (cp_parser_direct_declarator): Reorder if to avoid indentation.
authorNathan Sidwell <nathan@acm.org>
Thu, 29 Jun 2017 14:16:58 +0000 (14:16 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Thu, 29 Jun 2017 14:16:58 +0000 (14:16 +0000)
* parser.c (cp_parser_direct_declarator): Reorder if to avoid
indentation. Remove unnecessary assignment of constructor name.

From-SVN: r249787

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

index c29dd163f4f958fa5166c0d5f85e5284f8221e1a..ece47f9de1213fe3024c9f13e47f791686b6180f 100644 (file)
@@ -1,5 +1,8 @@
 2017-06-29  Nathan Sidwell  <nathan@acm.org>
 
+       * parser.c (cp_parser_direct_declarator): Reorder if to avoid
+       indentation. Remove unnecessary assignment of constructor name.
+
        Whitespace cleanups.
        * call.c (name_as_c_string): Move CONST_CAST to return.
        (build_new_method_call_1): Remove unneeded bracing.
index bd99c0513405d1ae72042d5e5d645545a8596c0d..31840d6ea6f93b49fb790e2f7749026124c6d16f 100644 (file)
@@ -20106,26 +20106,8 @@ cp_parser_direct_declarator (cp_parser* parser,
                if (TREE_CODE (unqualified_name) == TYPE_DECL)
                  {
                    tree name_type = TREE_TYPE (unqualified_name);
-                   if (class_type && same_type_p (name_type, class_type))
-                     {
-                       if (qualifying_scope
-                           && CLASSTYPE_USE_TEMPLATE (name_type))
-                         {
-                           error_at (declarator_id_start_token->location,
-                                     "invalid use of constructor as a template");
-                           inform (declarator_id_start_token->location,
-                                   "use %<%T::%D%> instead of %<%T::%D%> to "
-                                   "name the constructor in a qualified name",
-                                   class_type,
-                                   DECL_NAME (TYPE_TI_TEMPLATE (class_type)),
-                                   class_type, name_type);
-                           declarator = cp_error_declarator;
-                           break;
-                         }
-                       else
-                         unqualified_name = constructor_name (class_type);
-                     }
-                   else
+
+                   if (!class_type || !same_type_p (name_type, class_type))
                      {
                        /* We do not attempt to print the declarator
                           here because we do not have enough
@@ -20135,6 +20117,21 @@ cp_parser_direct_declarator (cp_parser* parser,
                        declarator = cp_error_declarator;
                        break;
                      }
+                   else if (qualifying_scope
+                            && CLASSTYPE_USE_TEMPLATE (name_type))
+                     {
+                       error_at (declarator_id_start_token->location,
+                                 "invalid use of constructor as a template");
+                       inform (declarator_id_start_token->location,
+                               "use %<%T::%D%> instead of %<%T::%D%> to "
+                               "name the constructor in a qualified name",
+                               class_type,
+                               DECL_NAME (TYPE_TI_TEMPLATE (class_type)),
+                               class_type, name_type);
+                       declarator = cp_error_declarator;
+                       break;
+                     }
+                   unqualified_name = constructor_name (class_type);
                  }
 
                if (class_type)
@@ -20164,14 +20161,10 @@ cp_parser_direct_declarator (cp_parser* parser,
                                struct S {
                                  friend void N::S();
                                };  */
-                            && !(friend_p
-                                 && class_type != qualifying_scope)
+                            && (!friend_p || class_type == qualifying_scope)
                             && constructor_name_p (unqualified_name,
                                                    class_type))
-                     {
-                       unqualified_name = constructor_name (class_type);
-                       sfk = sfk_constructor;
-                     }
+                     sfk = sfk_constructor;
                    else if (is_overloaded_fn (unqualified_name)
                             && DECL_CONSTRUCTOR_P (get_first_fn
                                                    (unqualified_name)))