aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2020-11-06 20:41:54 -0500
committerJason Merrill <jason@redhat.com>2020-11-09 15:16:38 -0500
commit05b03452db6a520091aed254d3c399caed714b15 (patch)
tree282e4a45f1682c051cda8ed71b257c7564135375 /gcc
parent38b17c27ce5a8e0cc5baa14697d4b5542b91b9d1 (diff)
downloadgcc-05b03452db6a520091aed254d3c399caed714b15.zip
gcc-05b03452db6a520091aed254d3c399caed714b15.tar.gz
gcc-05b03452db6a520091aed254d3c399caed714b15.tar.bz2
c++: Improve error location for class using-decl.
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/class.c4
-rw-r--r--gcc/testsuite/g++.dg/lookup/using26.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/using1.C4
3 files changed, 7 insertions, 5 deletions
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index c037372..7c34d94 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -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)
diff --git a/gcc/testsuite/g++.dg/lookup/using26.C b/gcc/testsuite/g++.dg/lookup/using26.C
index 857c134..dd4e130 100644
--- a/gcc/testsuite/g++.dg/lookup/using26.C
+++ b/gcc/testsuite/g++.dg/lookup/using26.C
@@ -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;
diff --git a/gcc/testsuite/g++.old-deja/g++.other/using1.C b/gcc/testsuite/g++.old-deja/g++.other/using1.C
index 6cebc29..8910091 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/using1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/using1.C
@@ -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;
};