c++: Improve error location for class using-decl.
authorJason Merrill <jason@redhat.com>
Sat, 7 Nov 2020 01:41:54 +0000 (20:41 -0500)
committerJason Merrill <jason@redhat.com>
Mon, 9 Nov 2020 20:16:38 +0000 (15:16 -0500)
We should use the location of the using-declaration, not the location of the
class.

gcc/cp/ChangeLog:

* class.c (handle_using_decl): Add an iloc_sentinel.

gcc/testsuite/ChangeLog:

* g++.dg/lookup/using26.C: Adjust location.
* g++.old-deja/g++.other/using1.C: Adjust location.

gcc/cp/class.c
gcc/testsuite/g++.dg/lookup/using26.C
gcc/testsuite/g++.old-deja/g++.other/using1.C

index c03737294eb7eafd085c4d60fd80da463e0cbe5e..7c34d9466fcc5f7a00098a5f4199d7ec317ed163 100644 (file)
@@ -1,4 +1,4 @@
-/* Functions related to building classes and their related objects.
+/* Functions related to building -*- C++ -*- classes and their related objects.
    Copyright (C) 1987-2020 Free Software Foundation, Inc.
    Contributed by Michael Tiemann (tiemann@cygnus.com)
 
@@ -1322,6 +1322,8 @@ handle_using_decl (tree using_decl, tree t)
       return;
     }
 
+  iloc_sentinel ils (DECL_SOURCE_LOCATION (using_decl));
+
   /* Make type T see field decl FDECL with access ACCESS.  */
   if (flist)
     for (ovl_iterator iter (flist); iter; ++iter)
index 857c13481815cb61baad63b3add4104443d5e96d..dd4e13039d74a42cefed687247494a38732d10a2 100644 (file)
@@ -17,9 +17,9 @@ struct C
     int next;
 };
 
-struct D : A, B, C // { dg-error "context" }
+struct D : A, B, C
 {
-    using B::next;
+    using B::next; // { dg-error "context" }
     void f()
     {
        next = 12;
index 6cebc292a417be581d567d7116ce4e4c9ab59056..89100918a1ecaf11ccf916bed64f093e3e1eb59d 100644 (file)
@@ -10,9 +10,9 @@ protected:
   friend class D2;
 };
 
-class D : public B { // { dg-error "" } within this context
+class D : public B {
 public:
-  using B::a;
+  using B::a; // { dg-error "" } within this context
   using B::b;
 };