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.
This commit is contained in:
Jason Merrill 2020-11-06 20:41:54 -05:00
parent 38b17c27ce
commit 05b03452db
3 changed files with 7 additions and 5 deletions

View 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)

View 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;

View 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;
};