decl.c (grokdeclarator): Use declspecs->locations[ds_virtual].
authorPaolo Carlini <paolo.carlini@oracle.com>
Mon, 22 Jun 2015 17:35:34 +0000 (17:35 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 22 Jun 2015 17:35:34 +0000 (17:35 +0000)
/cp
2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokdeclarator): Use declspecs->locations[ds_virtual].

/testsuite
2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/inherit/pure1.C: Test location too.

2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokdeclarator): Remove pointless code.

From-SVN: r224750

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/inherit/pure1.C

index 9f4e8b21e3d29a750b6d6077f25fcfd09d5f4c56..89e43735a05a931ab9db2f492339c0dc61039ca3 100644 (file)
@@ -1,3 +1,11 @@
+2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * decl.c (grokdeclarator): Use declspecs->locations[ds_virtual].
+
+2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * decl.c (grokdeclarator): Remove pointless code.
+
 2015-06-22  Jason Merrill  <jason@redhat.com>
 
        PR c++/66515
index 515c2d33e10d3afe6bb712347e8d128b4bfe2eaa..c934ff930779c01c40edbddc6e2e5c13f80ee2e9 100644 (file)
@@ -9529,7 +9529,8 @@ grokdeclarator (const cp_declarator *declarator,
   if (virtualp
       && (current_class_name == NULL_TREE || decl_context != FIELD))
     {
-      error ("%<virtual%> outside class declaration");
+      error_at (declspecs->locations[ds_virtual],
+               "%<virtual%> outside class declaration");
       virtualp = 0;
     }
 
@@ -10476,19 +10477,11 @@ grokdeclarator (const cp_declarator *declarator,
 
   if (decl_context == TYPENAME)
     {
-      /* Note that the grammar rejects storage classes
-        in typenames, fields or parameters.  */
-      if (type_quals != TYPE_UNQUALIFIED)
-       type_quals = TYPE_UNQUALIFIED;
+      /* Note that here we don't care about type_quals.  */
 
       /* Special case: "friend class foo" looks like a TYPENAME context.  */
       if (friendp)
        {
-         if (type_quals != TYPE_UNQUALIFIED)
-           {
-             error ("type qualifiers specified for friend class declaration");
-             type_quals = TYPE_UNQUALIFIED;
-           }
          if (inlinep)
            {
              error ("%<inline%> specified for friend class declaration");
index f9d26537b4b6b1958d90a73ecc8da5fec53dfc11..60d13270ff385ab8ebc776dcecd675d9ef2ccb3c 100644 (file)
@@ -1,3 +1,7 @@
+2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * g++.dg/inherit/pure1.C: Test location too.
+
 2015-06-22  Marek Polacek  <polacek@redhat.com>
 
        * gcc.dg/fold-ior-1.c: New test.
index ddd3cb332dfd85bbf712f65e653666018e219a6c..e825f0098433d339e7433c259b0114375cfba6df 100644 (file)
@@ -3,8 +3,8 @@
 // { dg-do compile }
 
 void foo0() = 0;                   // { dg-error "like a variable" }
-virtual void foo1() = 0;           // { dg-error "outside class|variable" }
-
+virtual void foo1() = 0;           // { dg-error "1:'virtual' outside class" }
+// { dg-error "like a variable" "" { target *-*-* } 6 }
 struct A
 {
   void foo2() = 0;                 // { dg-error "non-virtual" }