diff options
author | Jason Merrill <jason@redhat.com> | 2020-11-06 20:41:54 -0500 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2020-11-09 15:16:38 -0500 |
commit | 05b03452db6a520091aed254d3c399caed714b15 (patch) | |
tree | 282e4a45f1682c051cda8ed71b257c7564135375 | |
parent | 38b17c27ce5a8e0cc5baa14697d4b5542b91b9d1 (diff) | |
download | gcc-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.
-rw-r--r-- | gcc/cp/class.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/using26.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/using1.C | 4 |
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; }; |