2012-07-31 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2012 13:57:23 +0000 (13:57 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2012 13:57:23 +0000 (13:57 +0000)
* pt.c (check_default_tmpl_args): Change is_primary and is_partial
parameters to bool type, adjust.
(push_template_decl_real): Tidy.
* parser.c (cp_parser_init_declarator): Adjust.
* decl.c (redeclaration_error_message): Likewise.
* cp-tree.h (check_default_tmpl_args): Update prototype.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190013 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/parser.c
gcc/cp/pt.c

index 8604169..8c2272e 100644 (file)
@@ -1,5 +1,14 @@
 2012-07-31  Paolo Carlini  <paolo.carlini@oracle.com>
 
+       * pt.c (check_default_tmpl_args): Change is_primary and is_partial
+       parameters to bool type, adjust.
+       (push_template_decl_real): Tidy.
+       * parser.c (cp_parser_init_declarator): Adjust.
+       * decl.c (redeclaration_error_message): Likewise.
+       * cp-tree.h (check_default_tmpl_args): Update prototype.
+
+2012-07-31  Paolo Carlini  <paolo.carlini@oracle.com>
+
        PR c++/53624
        * pt.c (check_default_tmpl_args): Don't check local types.
 
index 3c1a7bf..ec33d92 100644 (file)
@@ -5328,7 +5328,7 @@ extern tree process_template_parm         (tree, location_t, tree,
 extern tree end_template_parm_list             (tree);
 extern void end_template_decl                  (void);
 extern tree maybe_update_decl_type             (tree, tree);
-extern bool check_default_tmpl_args             (tree, tree, int, int, int);
+extern bool check_default_tmpl_args             (tree, tree, bool, bool, int);
 extern tree push_template_decl                 (tree);
 extern tree push_template_decl_real            (tree, bool);
 extern bool redeclare_class_template           (tree, tree);
index 8e95a06..b637643 100644 (file)
@@ -2480,7 +2480,8 @@ redeclaration_error_message (tree newdecl, tree olddecl)
       if ((cxx_dialect != cxx98) 
           && TREE_CODE (ot) == FUNCTION_DECL && DECL_FRIEND_P (ot)
           && !check_default_tmpl_args (nt, DECL_TEMPLATE_PARMS (newdecl), 
-                                       /*is_primary=*/1, /*is_partial=*/0,
+                                       /*is_primary=*/true,
+                                      /*is_partial=*/false,
                                        /*is_friend_decl=*/2))
         return G_("redeclaration of friend %q#D "
                  "may not have default template arguments");
index 70d6dac..d8c3305 100644 (file)
@@ -15849,8 +15849,8 @@ cp_parser_init_declarator (cp_parser* parser,
     /* Core issue #226 (C++0x only): A default template-argument
        shall not be specified in a friend class template
        declaration. */
-    check_default_tmpl_args (decl, current_template_parms, /*is_primary=*/1
-                             /*is_partial=*/0, /*is_friend_decl=*/1);
+    check_default_tmpl_args (decl, current_template_parms, /*is_primary=*/true
+                             /*is_partial=*/false, /*is_friend_decl=*/1);
 
   if (!friend_p && pushed_scope)
     pop_scope (pushed_scope);
index 31ae3ef..6257502 100644 (file)
@@ -4210,10 +4210,9 @@ process_partial_specialization (tree decl)
 
 /* Check that a template declaration's use of default arguments and
    parameter packs is not invalid.  Here, PARMS are the template
-   parameters.  IS_PRIMARY is nonzero if DECL is the thing declared by
-   a primary template.  IS_PARTIAL is nonzero if DECL is a partial
+   parameters.  IS_PRIMARY is true if DECL is the thing declared by
+   a primary template.  IS_PARTIAL is true if DECL is a partial
    specialization.
-   
 
    IS_FRIEND_DECL is nonzero if DECL is a friend function template
    declaration (but not a definition); 1 indicates a declaration, 2
@@ -4223,8 +4222,8 @@ process_partial_specialization (tree decl)
    Returns TRUE if there were no errors found, FALSE otherwise. */
 
 bool
-check_default_tmpl_args (tree decl, tree parms, int is_primary, 
-                         int is_partial, int is_friend_decl)
+check_default_tmpl_args (tree decl, tree parms, bool is_primary,
+                         bool is_partial, int is_friend_decl)
 {
   const char *msg;
   int last_level_to_check;
@@ -4456,8 +4455,8 @@ push_template_decl_real (tree decl, bool is_friend)
   tree args;
   tree info;
   tree ctx;
-  int primary;
-  int is_partial;
+  bool is_primary;
+  bool is_partial;
   int new_template_p = 0;
   /* True if the template is a member template, in the sense of
      [temp.mem].  */
@@ -4499,11 +4498,11 @@ push_template_decl_real (tree decl, bool is_friend)
     /* A friend template that specifies a class context, i.e.
          template <typename T> friend void A<T>::f();
        is not primary.  */
-    primary = 0;
+    is_primary = false;
   else
-    primary = template_parm_scope_p ();
+    is_primary = template_parm_scope_p ();
 
-  if (primary)
+  if (is_primary)
     {
       if (DECL_CLASS_SCOPE_P (decl))
        member_template_p = true;
@@ -4556,7 +4555,7 @@ push_template_decl_real (tree decl, bool is_friend)
   /* Check to see that the rules regarding the use of default
      arguments are not being violated.  */
   check_default_tmpl_args (decl, current_template_parms,
-                          primary, is_partial, /*is_friend_decl=*/0);
+                          is_primary, is_partial, /*is_friend_decl=*/0);
 
   /* Ensure that there are no parameter packs in the type of this
      declaration that have not been expanded.  */
@@ -4773,7 +4772,7 @@ template arguments to %qD do not match original template %qD",
        }
     }
 
-  if (primary)
+  if (is_primary)
     {
       tree parms = DECL_TEMPLATE_PARMS (tmpl);
       int i;
@@ -4815,7 +4814,7 @@ template arguments to %qD do not match original template %qD",
     SET_TYPE_TEMPLATE_INFO (TREE_TYPE (tmpl), info);
   else
     {
-      if (primary && !DECL_LANG_SPECIFIC (decl))
+      if (is_primary && !DECL_LANG_SPECIFIC (decl))
        retrofit_lang_decl (decl);
       if (DECL_LANG_SPECIFIC (decl))
        DECL_TEMPLATE_INFO (decl) = info;