aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2014-09-22 15:22:37 -0400
committerJason Merrill <jason@gcc.gnu.org>2014-09-22 15:22:37 -0400
commit6863c41a15ac58554cd413c1dcde9f43d9dba4c0 (patch)
tree55293012afed93cc887dd441e91cd85b8989baab /gcc
parenta546927c6a9a06b25ae85f8206b2c7afc53f4a45 (diff)
downloadgcc-6863c41a15ac58554cd413c1dcde9f43d9dba4c0.zip
gcc-6863c41a15ac58554cd413c1dcde9f43d9dba4c0.tar.gz
gcc-6863c41a15ac58554cd413c1dcde9f43d9dba4c0.tar.bz2
semantics.c (finish_non_static_data_member): In diagnostic, give error at point of use and note at point of declaration.
* semantics.c (finish_non_static_data_member): In diagnostic, give error at point of use and note at point of declaration. From-SVN: r215479
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/semantics.c6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/scoped8.C4
-rw-r--r--gcc/testsuite/g++.dg/other/ptrmem2.C4
-rw-r--r--gcc/testsuite/g++.dg/template/dependent-expr5.C6
-rw-r--r--gcc/testsuite/g++.dg/template/error15.C4
-rw-r--r--gcc/testsuite/g++.dg/template/error42.C8
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/crash18.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/nest1.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/static1.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.bugs/900213_01.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.gb/scope06.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/cvt11.C10
14 files changed, 32 insertions, 35 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f209e15..d6db39f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2014-09-22 Jason Merrill <jason@redhat.com>
+ * semantics.c (finish_non_static_data_member): In diagnostic, give
+ error at point of use and note at point of declaration.
+
PR c++/63320
PR c++/60463
PR c++/60755
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 1d81028..6e04e5e 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -1692,10 +1692,10 @@ finish_non_static_data_member (tree decl, tree object, tree qualifying_scope)
{
if (current_function_decl
&& DECL_STATIC_FUNCTION_P (current_function_decl))
- error ("invalid use of member %q+D in static member function", decl);
+ error ("invalid use of member %qD in static member function", decl);
else
- error ("invalid use of non-static data member %q+D", decl);
- error ("from this location");
+ error ("invalid use of non-static data member %qD", decl);
+ inform (DECL_SOURCE_LOCATION (decl), "declared here");
return error_mark_node;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
index 9c76d34..fa8a6e6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
@@ -3,7 +3,7 @@
class Klass
{
- unsigned int local; // { dg-error "non-static" }
+ unsigned int local;
public:
bool dostuff();
};
@@ -11,7 +11,7 @@ public:
bool Klass::dostuff()
{
auto f = []() -> bool {
- if (local & 1) { return true; } // { dg-error "not captured|this location" }
+ if (local & 1) { return true; } // { dg-error "not captured|non-static" }
return false;
};
}
diff --git a/gcc/testsuite/g++.dg/lookup/scoped8.C b/gcc/testsuite/g++.dg/lookup/scoped8.C
index 2764f75..c5645ee 100644
--- a/gcc/testsuite/g++.dg/lookup/scoped8.C
+++ b/gcc/testsuite/g++.dg/lookup/scoped8.C
@@ -7,12 +7,12 @@
struct A
{
- int i; // { dg-error "non-static" }
+ int i; // { dg-message "" }
};
template <int> struct B
{
- int foo() { return A::i; } // { dg-error "this location" }
+ int foo() { return A::i; } // { dg-error "non-static" }
};
template struct B<0>;
diff --git a/gcc/testsuite/g++.dg/other/ptrmem2.C b/gcc/testsuite/g++.dg/other/ptrmem2.C
index d267df1..335f492 100644
--- a/gcc/testsuite/g++.dg/other/ptrmem2.C
+++ b/gcc/testsuite/g++.dg/other/ptrmem2.C
@@ -8,7 +8,7 @@
struct D {
- int &m; // { dg-error "invalid use of non-static data member" "" }
+ int &m; // { dg-message "" }
static int &s;
int Foo ();
@@ -29,7 +29,7 @@ int D::Foo ()
int Foo ()
{
f1( &D::m); // { dg-error "cannot create pointer to ref" "" }
- f1( &(D::m)); // { dg-error "from this location" "" }
+ f1( &(D::m)); // { dg-error "non-static" }
f2( &D::s); // ok
f2( &(D::s)); // ok
return 0;
diff --git a/gcc/testsuite/g++.dg/template/dependent-expr5.C b/gcc/testsuite/g++.dg/template/dependent-expr5.C
index ecb7a67..8d14553 100644
--- a/gcc/testsuite/g++.dg/template/dependent-expr5.C
+++ b/gcc/testsuite/g++.dg/template/dependent-expr5.C
@@ -18,7 +18,7 @@ template<class F, class T> void bindb(F (T::*f)(void)) {} // { dg-message "note"
struct foo {
static int baist;
- int bait; // { dg-error "non-static data member" }
+ int bait; // { dg-message "" }
void barf ();
static void barf (int);
@@ -31,7 +31,7 @@ struct foo {
bar() {
bind (&baist);
bind (&foo::baist);
- bind (&bait); // { dg-error "from this location" }
+ bind (&bait); // { dg-error "non-static data member" }
bind (&foo::bait);
bind (&baikst);
@@ -83,7 +83,7 @@ struct foo {
barT() {
bind (&baist);
bind (&foo::baist);
- bind (&bait); // { dg-error "from this location" }
+ bind (&bait); // { dg-error "non-static data member" }
bind (&foo::bait);
bind (&baikst);
diff --git a/gcc/testsuite/g++.dg/template/error15.C b/gcc/testsuite/g++.dg/template/error15.C
index b7c7bc8c..8693658 100644
--- a/gcc/testsuite/g++.dg/template/error15.C
+++ b/gcc/testsuite/g++.dg/template/error15.C
@@ -9,9 +9,9 @@ template <class T>
class B {
protected:
- A<T> a; // { dg-error "" }
+ A<T> a; // { dg-message "" }
- void f(const A<T> * a1 = &a); // { dg-error "this location" }
+ void f(const A<T> * a1 = &a); // { dg-error "non-static" }
void g(void);
};
diff --git a/gcc/testsuite/g++.dg/template/error42.C b/gcc/testsuite/g++.dg/template/error42.C
index 0d651e3..3c66ed0 100644
--- a/gcc/testsuite/g++.dg/template/error42.C
+++ b/gcc/testsuite/g++.dg/template/error42.C
@@ -3,18 +3,18 @@
template <int> struct A
{
- int i; // { dg-error "invalid use of non-static data member" }
+ int i; // { dg-message "" }
friend void foo ()
{
- int x[i]; // { dg-error "from this location" }
+ int x[i]; // { dg-error "non-static data member" }
}
};
struct B
{
- int j; // { dg-error "invalid use of non-static data member" }
+ int j; // { dg-message "" }
friend int bar ()
{
- return j; // { dg-error "from this location" }
+ return j; // { dg-error "non-static data member" }
}
};
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash18.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash18.C
index 3119f02..aa605ef 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash18.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash18.C
@@ -8,11 +8,11 @@ public:
// Friend functions so that v == x works as does x == v works
friend int operator==(void *v, const Pix& x) // { dg-message "previously" }
- { return v == index; } // { dg-error "from this location" }
+ { return v == index; } // { dg-error "non-static" }
// ??? should be operator!=
friend int operator==(void *v, const Pix& x) // { dg-error "redefinition" }
{ return v != index; }
private:
// friend class List<T>;
- element *index; // { dg-error "invalid use of non-static data member" }
+ element *index; // { dg-message "" }
};
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest1.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest1.C
index 842b2f6..07ba778 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest1.C
@@ -3,12 +3,12 @@
int x;
class enclose {
public:
- int x; // { dg-error "non-static" }
+ int x; // { dg-message "" }
class inner {
public:
void f (int i) {
- x = i;// { dg-error "" } .*
+ x = i;// { dg-error "non-static" } .*
}
};
};
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/static1.C b/gcc/testsuite/g++.old-deja/g++.brendan/static1.C
index cb83923..cba5551 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/static1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/static1.C
@@ -1,4 +1,4 @@
// { dg-do assemble }
// GROUPS passed static
-class A { public: int a; };// { dg-error "" } .*
+class A { public: int a; };// { dg-message "" } .*
void foo7 () { A::a = 3; }// { dg-error "" } .*
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900213_01.C b/gcc/testsuite/g++.old-deja/g++.bugs/900213_01.C
index e7feb94..9a16a74 100644
--- a/gcc/testsuite/g++.old-deja/g++.bugs/900213_01.C
+++ b/gcc/testsuite/g++.old-deja/g++.bugs/900213_01.C
@@ -12,7 +12,7 @@
// keywords: non-static members, member pointers, scope resolution
struct struct0 {
- int struct0_data_member_0; /* { dg-error "" } gets error from below */
+ int struct0_data_member_0; /* { dg-message "" } gets error from below */
int struct0_function_member_0 ();
};
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/scope06.C b/gcc/testsuite/g++.old-deja/g++.gb/scope06.C
index cbcc4fd..658cbe1 100644
--- a/gcc/testsuite/g++.old-deja/g++.gb/scope06.C
+++ b/gcc/testsuite/g++.old-deja/g++.gb/scope06.C
@@ -1,16 +1,14 @@
// { dg-do assemble }
-// { dg-prune-output "non-static data member initializers" }
// GROUPS passed gb scope
struct C {
struct D {
int x;
void foo ();
};
- const int Ok = 0; // { dg-error "" } initialization forbidden
+ const int Ok = 0; // { dg-error "" "" { target { ! c++11 } } } initialization forbidden
};
void C::D::foo ()
{
- // { dg-prune-output "from this location" }
- x = Ok;
+ x = Ok; // { dg-error "non-static" }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt11.C b/gcc/testsuite/g++.old-deja/g++.law/cvt11.C
index 53dd1e9..383cded 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt11.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt11.C
@@ -6,15 +6,11 @@
// Message-Id: <9211101908.AA13557@tera.com>
// Subject: type cast of qualified const member breaks g++2.3.1
-// Ignore extra errors in C++0x mode.
-// { dg-prune-output "non-static data member initializers" }
-// { dg-prune-output "from this location" }
-// { dg-prune-output "uninitialized" }
#include <stdio.h>
class Thing{
private: int x;
- public: const int N = -1; // { dg-error "" } bad initialization
+public: const int N = -1; // { dg-error "" "" { target { ! c++11 } } } bad initialization
Thing(int y);
};
@@ -23,10 +19,10 @@ class Bar{ public: void doit(void); };
void Bar::doit(void)
{
int i, j;
- i = Thing::N;
+ i = Thing::N; // { dg-error "non-static" }
printf("i = %d\n", i);
- j = (int)Thing::N;
+ j = (int)Thing::N; // { dg-error "non-static" }
printf("i = %d\n", j);
}
Thing::Thing(int y) { x = y; }