Commit 3a1351b9 by Paolo Carlini Committed by Paolo Carlini

call.c (enforce_access): Emit error + inform.

/cp
2015-04-15  Paolo Carlini  <paolo.carlini@oracle.com>

	* call.c (enforce_access): Emit error + inform.

/testsuite
2015-04-15  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp0x/alias-decl-22.C: Adjust for error + inform change.
	* g++.dg/cpp0x/decltype-call1.C: Likewise.
	* g++.dg/cpp0x/defaulted21.C: Likewise.
	* g++.dg/cpp0x/defaulted28.C: Likewise.
	* g++.dg/cpp0x/defaulted47.C: Likewise.
	* g++.dg/cpp0x/elision_neg.C: Likewise.
	* g++.dg/cpp0x/fntmpdefarg3.C: Likewise.
	* g++.dg/cpp0x/implicit-trivial1.C: Likewise.
	* g++.dg/cpp0x/implicit1.C: Likewise.
	* g++.dg/cpp0x/implicit9.C: Likewise.
	* g++.dg/cpp0x/inh-ctor9.C: Likewise.
	* g++.dg/cpp0x/range-for13.C: Likewise.
	* g++.dg/gomp/clause-2.C: Likewise.
	* g++.dg/gomp/udr-5.C: Likewise.
	* g++.dg/inherit/access6.C: Likewise.
	* g++.dg/lookup/duperr1.C: Likewise.
	* g++.dg/lookup/friend2.C: Likewise.
	* g++.dg/lookup/pr6936.C: Likewise.
	* g++.dg/lookup/scoped1.C: Likewise.
	* g++.dg/lookup/using26.C: Likewise.
	* g++.dg/lookup/using38.C: Likewise.
	* g++.dg/other/access2.C: Likewise.
	* g++.dg/overload/defarg3.C: Likewise.
	* g++.dg/overload/defarg6.C: Likewise.
	* g++.dg/parse/access11.C: Likewise.
	* g++.dg/parse/access2.C: Likewise.
	* g++.dg/parse/access3.C: Likewise.
	* g++.dg/parse/access4.C: Likewise.
	* g++.dg/parse/access5.C: Likewise.
	* g++.dg/parse/access6.C: Likewise.
	* g++.dg/parse/access8.C: Likewise.
	* g++.dg/parse/access9.C: Likewise.
	* g++.dg/parse/crash40.C: Likewise.
	* g++.dg/tc1/dr142.C: Likewise.
	* g++.dg/tc1/dr166.C: Likewise.
	* g++.dg/tc1/dr52.C: Likewise.
	* g++.dg/template/access11.C: Likewise.
	* g++.dg/template/access18.C: Likewise.
	* g++.dg/template/access19.C: Likewise.
	* g++.dg/template/access2.C: Likewise.
	* g++.dg/template/access20.C: Likewise.
	* g++.dg/template/access26.C: Likewise.
	* g++.dg/template/access3.C: Likewise.
	* g++.dg/template/access7.C: Likewise.
	* g++.dg/template/conv12.C: Likewise.
	* g++.dg/template/crash69.C: Likewise.
	* g++.dg/template/friend31.C: Likewise.
	* g++.dg/template/friend32.C: Likewise.
	* g++.dg/template/memfriend15.C: Likewise.
	* g++.dg/template/memfriend16.C: Likewise.
	* g++.dg/template/memfriend17.C: Likewise.
	* g++.dg/template/memfriend7.C: Likewise.
	* g++.dg/template/pr32519.C: Likewise.
	* g++.dg/template/qualttp21.C: Likewise.
	* g++.dg/template/qualttp8.C: Likewise.
	* g++.dg/template/ttp10.C: Likewise.
	* g++.dg/template/typedef11.C: Likewise.
	* g++.dg/template/typedef13.C: Likewise.
	* g++.dg/template/typedef19.C: Likewise.
	* g++.dg/template/typedef20.C: Likewise.
	* g++.dg/template/typedef22.C: Likewise.
	* g++.dg/template/using16.C: Likewise.
	* g++.dg/template/virtual3.C: Likewise.
	* g++.dg/ubsan/pr61272.C: Likewise.
	* g++.old-deja/g++.bob/inherit2.C: Likewise.
	* g++.old-deja/g++.brendan/crash11.C: Likewise.
	* g++.old-deja/g++.brendan/enum6.C: Likewise.
	* g++.old-deja/g++.brendan/visibility1.C: Likewise.
	* g++.old-deja/g++.brendan/visibility10.C: Likewise.
	* g++.old-deja/g++.brendan/visibility2.C: Likewise.
	* g++.old-deja/g++.brendan/visibility6.C: Likewise.
	* g++.old-deja/g++.brendan/visibility7.C: Likewise.
	* g++.old-deja/g++.brendan/visibility8.C: Likewise.
	* g++.old-deja/g++.brendan/visibility9.C: Likewise.
	* g++.old-deja/g++.bugs/900428_03.C: Likewise.
	* g++.old-deja/g++.jason/access17.C: Likewise.
	* g++.old-deja/g++.jason/access18.C: Likewise.
	* g++.old-deja/g++.jason/access22.C: Likewise.
	* g++.old-deja/g++.jason/access23.C: Likewise.
	* g++.old-deja/g++.jason/access8.C: Likewise.
	* g++.old-deja/g++.jason/delete3.C: Likewise.
	* g++.old-deja/g++.jason/report.C: Likewise.
	* g++.old-deja/g++.law/access2.C: Likewise.
	* g++.old-deja/g++.law/access3.C: Likewise.
	* g++.old-deja/g++.law/access4.C: Likewise.
	* g++.old-deja/g++.law/access5.C: Likewise.
	* g++.old-deja/g++.law/arm12.C: Likewise.
	* g++.old-deja/g++.law/arm14.C: Likewise.
	* g++.old-deja/g++.law/ctors13.C: Likewise.
	* g++.old-deja/g++.law/union2.C: Likewise.
	* g++.old-deja/g++.law/visibility12.C: Likewise.
	* g++.old-deja/g++.law/visibility15.C: Likewise.
	* g++.old-deja/g++.law/visibility16.C: Likewise.
	* g++.old-deja/g++.law/visibility17.C: Likewise.
	* g++.old-deja/g++.law/visibility18.C: Likewise.
	* g++.old-deja/g++.law/visibility19.C: Likewise.
	* g++.old-deja/g++.law/visibility20.C: Likewise.
	* g++.old-deja/g++.law/visibility21.C: Likewise.
	* g++.old-deja/g++.law/visibility24.C: Likewise.
	* g++.old-deja/g++.law/visibility4.C: Likewise.
	* g++.old-deja/g++.law/visibility5.C: Likewise.
	* g++.old-deja/g++.law/visibility6.C: Likewise.
	* g++.old-deja/g++.law/visibility7.C: Likewise.
	* g++.old-deja/g++.law/visibility8.C: Likewise.
	* g++.old-deja/g++.law/visibility9.C: Likewise.
	* g++.old-deja/g++.niklas/t135.C: Likewise.
	* g++.old-deja/g++.oliva/delete1.C: Likewise.
	* g++.old-deja/g++.oliva/partord1.C: Likewise.
	* g++.old-deja/g++.other/access11.C: Likewise.
	* g++.old-deja/g++.other/access4.C: Likewise.
	* g++.old-deja/g++.other/access7.C: Likewise.
	* g++.old-deja/g++.other/crash1.C: Likewise.
	* g++.old-deja/g++.other/crash7.C: Likewise.
	* g++.old-deja/g++.other/friend1.C: Likewise.
	* g++.old-deja/g++.other/friend4.C: Likewise.
	* g++.old-deja/g++.other/friend9.C: Likewise.
	* g++.old-deja/g++.other/lineno1.C: Likewise.
	* g++.old-deja/g++.other/using1.C: Likewise.
	* g++.old-deja/g++.pt/enum14.C: Likewise.
	* g++.old-deja/g++.pt/friend11.C: Likewise.
	* g++.old-deja/g++.pt/friend21.C: Likewise.
	* g++.old-deja/g++.pt/friend3.C: Likewise.
	* g++.old-deja/g++.pt/inherit2.C: Likewise.
	* g++.old-deja/g++.pt/memtemp74.C: Likewise.
	* g++.old-deja/g++.pt/memtemp89.C: Likewise.
	* g++.old-deja/g++.robertl/eb94.C: Likewise.

From-SVN: r222128
parent d26b2237
2015-04-15 Paolo Carlini <paolo.carlini@oracle.com>
* call.c (enforce_access): Emit error + inform.
2015-04-15 Marek Polacek <polacek@redhat.com> 2015-04-15 Marek Polacek <polacek@redhat.com>
* constexpr.c (use_new_call): Remove #define. * constexpr.c (use_new_call): Remove #define.
......
...@@ -6020,12 +6020,22 @@ enforce_access (tree basetype_path, tree decl, tree diag_decl, ...@@ -6020,12 +6020,22 @@ enforce_access (tree basetype_path, tree decl, tree diag_decl,
if (complain & tf_error) if (complain & tf_error)
{ {
if (TREE_PRIVATE (decl)) if (TREE_PRIVATE (decl))
error ("%q+#D is private", diag_decl); {
error ("%q#D is private within this context", diag_decl);
inform (DECL_SOURCE_LOCATION (diag_decl),
"declared private here");
}
else if (TREE_PROTECTED (decl)) else if (TREE_PROTECTED (decl))
error ("%q+#D is protected", diag_decl); {
error ("%q#D is protected within this context", diag_decl);
inform (DECL_SOURCE_LOCATION (diag_decl),
"declared protected here");
}
else else
error ("%q+#D is inaccessible", diag_decl); {
error ("within this context"); error ("%q#D is inaccessible within this context", diag_decl);
inform (DECL_SOURCE_LOCATION (diag_decl), "declared here");
}
} }
return false; return false;
} }
......
2015-04-15 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/cpp0x/alias-decl-22.C: Adjust for error + inform change.
* g++.dg/cpp0x/decltype-call1.C: Likewise.
* g++.dg/cpp0x/defaulted21.C: Likewise.
* g++.dg/cpp0x/defaulted28.C: Likewise.
* g++.dg/cpp0x/defaulted47.C: Likewise.
* g++.dg/cpp0x/elision_neg.C: Likewise.
* g++.dg/cpp0x/fntmpdefarg3.C: Likewise.
* g++.dg/cpp0x/implicit-trivial1.C: Likewise.
* g++.dg/cpp0x/implicit1.C: Likewise.
* g++.dg/cpp0x/implicit9.C: Likewise.
* g++.dg/cpp0x/inh-ctor9.C: Likewise.
* g++.dg/cpp0x/range-for13.C: Likewise.
* g++.dg/gomp/clause-2.C: Likewise.
* g++.dg/gomp/udr-5.C: Likewise.
* g++.dg/inherit/access6.C: Likewise.
* g++.dg/lookup/duperr1.C: Likewise.
* g++.dg/lookup/friend2.C: Likewise.
* g++.dg/lookup/pr6936.C: Likewise.
* g++.dg/lookup/scoped1.C: Likewise.
* g++.dg/lookup/using26.C: Likewise.
* g++.dg/lookup/using38.C: Likewise.
* g++.dg/other/access2.C: Likewise.
* g++.dg/overload/defarg3.C: Likewise.
* g++.dg/overload/defarg6.C: Likewise.
* g++.dg/parse/access11.C: Likewise.
* g++.dg/parse/access2.C: Likewise.
* g++.dg/parse/access3.C: Likewise.
* g++.dg/parse/access4.C: Likewise.
* g++.dg/parse/access5.C: Likewise.
* g++.dg/parse/access6.C: Likewise.
* g++.dg/parse/access8.C: Likewise.
* g++.dg/parse/access9.C: Likewise.
* g++.dg/parse/crash40.C: Likewise.
* g++.dg/tc1/dr142.C: Likewise.
* g++.dg/tc1/dr166.C: Likewise.
* g++.dg/tc1/dr52.C: Likewise.
* g++.dg/template/access11.C: Likewise.
* g++.dg/template/access18.C: Likewise.
* g++.dg/template/access19.C: Likewise.
* g++.dg/template/access2.C: Likewise.
* g++.dg/template/access20.C: Likewise.
* g++.dg/template/access26.C: Likewise.
* g++.dg/template/access3.C: Likewise.
* g++.dg/template/access7.C: Likewise.
* g++.dg/template/conv12.C: Likewise.
* g++.dg/template/crash69.C: Likewise.
* g++.dg/template/friend31.C: Likewise.
* g++.dg/template/friend32.C: Likewise.
* g++.dg/template/memfriend15.C: Likewise.
* g++.dg/template/memfriend16.C: Likewise.
* g++.dg/template/memfriend17.C: Likewise.
* g++.dg/template/memfriend7.C: Likewise.
* g++.dg/template/pr32519.C: Likewise.
* g++.dg/template/qualttp21.C: Likewise.
* g++.dg/template/qualttp8.C: Likewise.
* g++.dg/template/ttp10.C: Likewise.
* g++.dg/template/typedef11.C: Likewise.
* g++.dg/template/typedef13.C: Likewise.
* g++.dg/template/typedef19.C: Likewise.
* g++.dg/template/typedef20.C: Likewise.
* g++.dg/template/typedef22.C: Likewise.
* g++.dg/template/using16.C: Likewise.
* g++.dg/template/virtual3.C: Likewise.
* g++.dg/ubsan/pr61272.C: Likewise.
* g++.old-deja/g++.bob/inherit2.C: Likewise.
* g++.old-deja/g++.brendan/crash11.C: Likewise.
* g++.old-deja/g++.brendan/enum6.C: Likewise.
* g++.old-deja/g++.brendan/visibility1.C: Likewise.
* g++.old-deja/g++.brendan/visibility10.C: Likewise.
* g++.old-deja/g++.brendan/visibility2.C: Likewise.
* g++.old-deja/g++.brendan/visibility6.C: Likewise.
* g++.old-deja/g++.brendan/visibility7.C: Likewise.
* g++.old-deja/g++.brendan/visibility8.C: Likewise.
* g++.old-deja/g++.brendan/visibility9.C: Likewise.
* g++.old-deja/g++.bugs/900428_03.C: Likewise.
* g++.old-deja/g++.jason/access17.C: Likewise.
* g++.old-deja/g++.jason/access18.C: Likewise.
* g++.old-deja/g++.jason/access22.C: Likewise.
* g++.old-deja/g++.jason/access23.C: Likewise.
* g++.old-deja/g++.jason/access8.C: Likewise.
* g++.old-deja/g++.jason/delete3.C: Likewise.
* g++.old-deja/g++.jason/report.C: Likewise.
* g++.old-deja/g++.law/access2.C: Likewise.
* g++.old-deja/g++.law/access3.C: Likewise.
* g++.old-deja/g++.law/access4.C: Likewise.
* g++.old-deja/g++.law/access5.C: Likewise.
* g++.old-deja/g++.law/arm12.C: Likewise.
* g++.old-deja/g++.law/arm14.C: Likewise.
* g++.old-deja/g++.law/ctors13.C: Likewise.
* g++.old-deja/g++.law/union2.C: Likewise.
* g++.old-deja/g++.law/visibility12.C: Likewise.
* g++.old-deja/g++.law/visibility15.C: Likewise.
* g++.old-deja/g++.law/visibility16.C: Likewise.
* g++.old-deja/g++.law/visibility17.C: Likewise.
* g++.old-deja/g++.law/visibility18.C: Likewise.
* g++.old-deja/g++.law/visibility19.C: Likewise.
* g++.old-deja/g++.law/visibility20.C: Likewise.
* g++.old-deja/g++.law/visibility21.C: Likewise.
* g++.old-deja/g++.law/visibility24.C: Likewise.
* g++.old-deja/g++.law/visibility4.C: Likewise.
* g++.old-deja/g++.law/visibility5.C: Likewise.
* g++.old-deja/g++.law/visibility6.C: Likewise.
* g++.old-deja/g++.law/visibility7.C: Likewise.
* g++.old-deja/g++.law/visibility8.C: Likewise.
* g++.old-deja/g++.law/visibility9.C: Likewise.
* g++.old-deja/g++.niklas/t135.C: Likewise.
* g++.old-deja/g++.oliva/delete1.C: Likewise.
* g++.old-deja/g++.oliva/partord1.C: Likewise.
* g++.old-deja/g++.other/access11.C: Likewise.
* g++.old-deja/g++.other/access4.C: Likewise.
* g++.old-deja/g++.other/access7.C: Likewise.
* g++.old-deja/g++.other/crash1.C: Likewise.
* g++.old-deja/g++.other/crash7.C: Likewise.
* g++.old-deja/g++.other/friend1.C: Likewise.
* g++.old-deja/g++.other/friend4.C: Likewise.
* g++.old-deja/g++.other/friend9.C: Likewise.
* g++.old-deja/g++.other/lineno1.C: Likewise.
* g++.old-deja/g++.other/using1.C: Likewise.
* g++.old-deja/g++.pt/enum14.C: Likewise.
* g++.old-deja/g++.pt/friend11.C: Likewise.
* g++.old-deja/g++.pt/friend21.C: Likewise.
* g++.old-deja/g++.pt/friend3.C: Likewise.
* g++.old-deja/g++.pt/inherit2.C: Likewise.
* g++.old-deja/g++.pt/memtemp74.C: Likewise.
* g++.old-deja/g++.pt/memtemp89.C: Likewise.
* g++.old-deja/g++.robertl/eb94.C: Likewise.
2015-04-15 Jakub Jelinek <jakub@redhat.com> 2015-04-15 Jakub Jelinek <jakub@redhat.com>
PR ipa/65765 PR ipa/65765
......
...@@ -7,6 +7,6 @@ using foo = typename T::bar; // { dg-error "this context" } ...@@ -7,6 +7,6 @@ using foo = typename T::bar; // { dg-error "this context" }
class B class B
{ {
typedef int bar; // { dg-error "private" } typedef int bar; // { dg-message "private" }
foo<B> f; // { dg-message "required" } foo<B> f; // { dg-message "required" }
}; };
...@@ -17,7 +17,7 @@ decltype(45,f(),42) g4b(); // { dg-error "" } ...@@ -17,7 +17,7 @@ decltype(45,f(),42) g4b(); // { dg-error "" }
class B class B
{ {
~B(); // { dg-error "private" } ~B(); // { dg-message "private" }
public: public:
int i; int i;
void operator[](int); void operator[](int);
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
struct U { struct U {
U(); U();
private: private:
U(U const&); // { dg-error "private" } U(U const&); // { dg-message "private" }
}; };
struct X { struct X {
......
...@@ -6,7 +6,7 @@ struct A { ...@@ -6,7 +6,7 @@ struct A {
A() = default; A() = default;
private: private:
A(A const&) = default; // { dg-error "private" } A(A const&) = default; // { dg-message "private" }
}; };
int f(...) { } int f(...) { }
......
...@@ -3,14 +3,14 @@ ...@@ -3,14 +3,14 @@
class A class A
{ {
A() = default; // { dg-error "private" } A() = default; // { dg-message "private" }
}; };
A a; // { dg-error "context" } A a; // { dg-error "context" }
class B class B
{ {
~B() = default; // { dg-error "private" } ~B() = default; // { dg-message "private" }
}; };
B b; // { dg-error "context" } B b; // { dg-error "context" }
...@@ -12,7 +12,7 @@ struct two {char x[2];}; ...@@ -12,7 +12,7 @@ struct two {char x[2];};
class move_only class move_only
{ {
move_only(const move_only&); // { dg-error "is private" } move_only(const move_only&); // { dg-message "private" }
move_only& operator=(const move_only&); move_only& operator=(const move_only&);
public: public:
move_only() {} move_only() {}
......
...@@ -8,7 +8,7 @@ template <class T, class = typename T::I> void j(T) {} // { dg-error "this conte ...@@ -8,7 +8,7 @@ template <class T, class = typename T::I> void j(T) {} // { dg-error "this conte
class A class A
{ {
typedef int I; // { dg-error "private" } typedef int I; // { dg-message "private" }
template <class T, class> friend void f(T); template <class T, class> friend void f(T);
friend void g<A,I>(A); friend void g<A,I>(A);
friend void h<A>(A); friend void h<A>(A);
......
...@@ -8,7 +8,7 @@ struct A ...@@ -8,7 +8,7 @@ struct A
{ {
A() {} A() {}
private: private:
template <class T> A(T&); // { dg-error "private" } template <class T> A(T&); // { dg-message "private" }
}; };
struct B // { dg-error "implicitly deleted|this context" } struct B // { dg-error "implicitly deleted|this context" }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
class C class C
{ {
void operator delete (void *); // { dg-error "private" } void operator delete (void *); // { dg-message "private" }
public: public:
virtual ~C(); // { dg-error "overriding" } virtual ~C(); // { dg-error "overriding" }
}; };
......
...@@ -5,7 +5,7 @@ struct A ...@@ -5,7 +5,7 @@ struct A
{ {
A(); A();
private: private:
~A(); // { dg-error "private" } ~A(); // { dg-message "private" }
}; };
struct B: A { }; // { dg-error "implicitly deleted|context" } struct B: A { }; // { dg-error "implicitly deleted|context" }
......
...@@ -9,7 +9,7 @@ protected: ...@@ -9,7 +9,7 @@ protected:
struct B: A struct B: A
{ {
using A::A; // { dg-error "protected" } using A::A; // { dg-message "protected" }
}; };
B b(42); // { dg-error "this context" } B b(42); // { dg-error "this context" }
...@@ -28,8 +28,8 @@ struct container2 ...@@ -28,8 +28,8 @@ struct container2
struct container3 struct container3
{ {
private: private:
int *begin(); // { dg-error "is private" } int *begin(); // { dg-message "private" }
int *end(); // { dg-error "is private" } int *end(); // { dg-message "private" }
}; };
struct container4 struct container4
...@@ -70,7 +70,7 @@ struct container8 ...@@ -70,7 +70,7 @@ struct container8
struct private_callable struct private_callable
{ {
private: private:
int *operator()(); // { dg-error "is private" } int *operator()(); // { dg-message "private" }
}; };
struct container9 struct container9
......
...@@ -5,9 +5,9 @@ struct B { B(); }; ...@@ -5,9 +5,9 @@ struct B { B(); };
struct C { C(); C(const C&); }; struct C { C(); C(const C&); };
struct D { D& operator=(const D&); }; struct D { D& operator=(const D&); };
class E { private: E(); public: E(int); }; // { dg-error "private" } class E { private: E(); public: E(int); }; // { dg-message "private" }
class F { private: F(const F&); public: F(); }; // { dg-error "private" } class F { private: F(const F&); public: F(); }; // { dg-message "private" }
class G { private: G& operator=(const G&); }; // { dg-error "private" } class G { private: G& operator=(const G&); }; // { dg-message "private" }
void bar(); void bar();
void foo() void foo()
......
...@@ -5,9 +5,9 @@ struct S ...@@ -5,9 +5,9 @@ struct S
int s; int s;
S () : s (0) {} S () : s (0) {}
private: private:
#pragma omp declare reduction (+:S:omp_out.s += omp_in.s) // { dg-error "is private" } #pragma omp declare reduction (+:S:omp_out.s += omp_in.s) // { dg-message "private" }
protected: protected:
#pragma omp declare reduction (-:S:omp_out.s += omp_in.s) // { dg-error "is protected" } #pragma omp declare reduction (-:S:omp_out.s += omp_in.s) // { dg-message "protected" }
}; };
struct T : public S struct T : public S
......
// PR c++/28588 // PR c++/28588
class Foo { class Foo {
static void f(); // { dg-error "private" } static void f(); // { dg-message "private" }
static void f(int); static void f(int);
static void g(); // { dg-error "private" } static void g(); // { dg-message "private" }
}; };
void h() void h()
......
// PR c++/29048 // PR c++/29048
class A { int i; }; // { dg-bogus "is private.*is private" } class A { int i; }; // { dg-bogus "is private.*is private" }
// { dg-error "is private" "" { target *-*-* } 3 } // { dg-message "private" "" { target *-*-* } 3 }
class B:public A { B() { A::i=0; } }; // { dg-error "within this context" } class B:public A { B() { A::i=0; } }; // { dg-error "within this context" }
...@@ -12,7 +12,7 @@ struct S { ...@@ -12,7 +12,7 @@ struct S {
namespace NS { namespace NS {
class X { class X {
friend class S; friend class S;
static int *i; // { dg-error "private" } static int *i; // { dg-message "private" }
}; };
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
struct Baser struct Baser
{ {
enum { j, i }; // { dg-error "inaccessible" } enum { j, i }; // { dg-message "declared" }
}; };
struct Base : Baser struct Base : Baser
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
struct A struct A
{ {
static int i1; static int i1;
int i2; // { dg-error "inaccessible" "" } int i2; // { dg-message "declared" "" }
static void f1 (); static void f1 ();
void f2 (); void f2 ();
}; };
......
...@@ -9,7 +9,7 @@ struct A ...@@ -9,7 +9,7 @@ struct A
struct B struct B
{ {
private: private:
int next; // { dg-error "private" } int next; // { dg-message "private" }
}; };
struct C struct C
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
struct Baser struct Baser
{ {
enum { j, i }; // { dg-error "inaccessible" } enum { j, i }; // { dg-message "declared" }
}; };
struct Base : Baser struct Base : Baser
......
...@@ -18,7 +18,7 @@ public: ...@@ -18,7 +18,7 @@ public:
void test(); void test();
}; };
int Base::fooprivate=42; // { dg-error "private" } int Base::fooprivate=42; // { dg-message "private" }
int Base::fooprotected=42; int Base::fooprotected=42;
int Base::foopublic=42; int Base::foopublic=42;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
class C { class C {
private: private:
static int f(int); // { dg-error "private" } static int f(int); // { dg-message "private" }
static int f(char); static int f(char);
}; };
......
class A class A
{ {
int i; int i;
A(int i): i(i) {} // { dg-error "private" } A(int i): i(i) {} // { dg-message "private" }
}; };
void f (A = 1) { } // { dg-error "context" } void f (A = 1) { } // { dg-error "context" }
...@@ -2,24 +2,24 @@ ...@@ -2,24 +2,24 @@
class A { class A {
union { union {
int i; // { dg-error "private" } int i; // { dg-message "private" }
}; };
union { union {
int j; // { dg-error "private" } int j; // { dg-message "private" }
}; };
union { union {
union { union {
int k; // { dg-error "private" } int k; // { dg-message "private" }
}; };
union { union {
union { union {
int l; // { dg-error "private" } int l; // { dg-message "private" }
}; };
union { union {
int m; // { dg-error "private" } int m; // { dg-message "private" }
union { union {
int n; // { dg-error "private" } int n; // { dg-message "private" }
int o; // { dg-error "private" } int o; // { dg-message "private" }
}; };
}; };
}; };
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
// Deferred access checking of variable declaration. // Deferred access checking of variable declaration.
class A { class A {
typedef int X; // { dg-error "private" } typedef int X; // { dg-message "private" }
static X a, b, c; static X a, b, c;
}; };
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
class A { class A {
private: private:
void f(); // { dg-error "private" } void f(); // { dg-message "private" }
}; };
class B { class B {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
class A { class A {
protected: protected:
void foo() {} // { dg-error "protected" } void foo() {} // { dg-message "protected" }
public: public:
A(); A();
}; };
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
struct A struct A
{ {
protected: protected:
int a; // { dg-error "protected" } int a; // { dg-message "protected" }
}; };
struct B : A struct B : A
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
class A class A
{ {
public: public:
int foo() { return 1; } // { dg-error "inaccessible" } int foo() { return 1; } // { dg-message "declared" }
}; };
class B : public A class B : public A
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
class foo class foo
{ {
typedef int memfun; // { dg-error "private" } typedef int memfun; // { dg-message "private" }
}; };
template<foo::memfun> // { dg-error "context" } template<foo::memfun> // { dg-error "context" }
......
// PR c++/24782 // PR c++/24782
class Foo { public: typedef int type1; }; class Foo { public: typedef int type1; };
class Bar { private: typedef Foo type2; }; // { dg-error "private" } class Bar { private: typedef Foo type2; }; // { dg-message "private" }
void g(Bar::type2::type1) {} // { dg-error "context" } void g(Bar::type2::type1) {} // { dg-error "context" }
...@@ -10,7 +10,7 @@ struct C : A {}; ...@@ -10,7 +10,7 @@ struct C : A {};
class AA class AA
{ {
template<int> void foo(); /* { dg-error "is private" } */ template<int> void foo(); /* { dg-message "private" } */
}; };
struct BB : AA {}; struct BB : AA {};
...@@ -20,7 +20,7 @@ class AAA { ...@@ -20,7 +20,7 @@ class AAA {
struct BBB { struct BBB {
static BBB *foo(); static BBB *foo();
private: private:
int get() const {} /* { dg-error "is private" } */ int get() const {} /* { dg-message "private" } */
}; };
template<bool> struct S { template<bool> struct S {
S(unsigned int = BBB::foo()->AAA::get()); /* { dg-error "is not a base of" } */ S(unsigned int = BBB::foo()->AAA::get()); /* { dg-error "is not a base of" } */
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org> // Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
// DR142: Injection-related errors in access example // DR142: Injection-related errors in access example
class B { // { dg-error "inaccessible" } class B { // { dg-message "declared" }
public: public:
int mi; // { dg-error "inaccessible" } int mi; // { dg-message "declared" }
static int si; // { dg-error "inaccessible" } static int si; // { dg-message "declared" }
}; };
class D: private B { class D: private B {
......
...@@ -9,17 +9,17 @@ namespace N { ...@@ -9,17 +9,17 @@ namespace N {
namespace M { namespace M {
class A { class A {
friend void f<int>(int); // N::f friend void f<int>(int); // N::f
static int x; // { dg-error "private" } static int x; // { dg-message "private" }
}; };
class B { class B {
template <class T> friend void f(T); // M::f template <class T> friend void f(T); // M::f
static int x; // { dg-error "private" } static int x; // { dg-message "private" }
}; };
class C { class C {
friend void g(); // M::g friend void g(); // M::g
static int x; // { dg-error "private" } static int x; // { dg-message "private" }
}; };
template <class T> void f(T) // will be instantiated as f<long> template <class T> void f(T) // will be instantiated as f<long>
......
...@@ -17,7 +17,7 @@ struct B1 : B {}; ...@@ -17,7 +17,7 @@ struct B1 : B {};
struct B2 : B {}; struct B2 : B {};
struct C struct C
{ // { dg-error "C" } { // { dg-message "declared" }
void foo(void); void foo(void);
}; };
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
// Access checking during explicit instantiation. // Access checking during explicit instantiation.
class A { class A {
typedef int X; // { dg-error "private" } typedef int X; // { dg-message "private" }
}; };
class X { class X {
......
// DR 401 // DR 401
class X { class X {
typedef int a; // { dg-error "private" } typedef int a; // { dg-message "private" }
static const int b = 5; // { dg-error "private" } static const int b = 5; // { dg-message "private" }
template <typename> template <typename>
struct c; // { dg-error "private" } struct c; // { dg-message "private" }
}; };
template <typename = X::a> // { dg-error "context" } template <typename = X::a> // { dg-error "context" }
......
...@@ -9,7 +9,7 @@ public: ...@@ -9,7 +9,7 @@ public:
operator T&() { return value; } operator T&() { return value; }
private: private:
template< class U > template< class U >
explicit_t( U t ); /* { dg-error "with U = char, T = int|is private" } */ explicit_t( U t ); /* { dg-message "with U = char, T = int|private" } */
T value; T value;
}; };
......
...@@ -9,8 +9,8 @@ template <class T> struct A { ...@@ -9,8 +9,8 @@ template <class T> struct A {
}; };
class B { class B {
typedef int X; // { dg-error "private" } typedef int X; // { dg-message "private" }
static int i; // { dg-error "private" } static int i; // { dg-message "private" }
}; };
int main() int main()
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
template <typename T> struct B template <typename T> struct B
{ {
protected: protected:
T v; // { dg-error "protected" } T v; // { dg-message "protected" }
}; };
template <typename T> struct D : B<T> template <typename T> struct D : B<T>
{ {
......
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
template < typename T > template < typename T >
struct A { static int i; }; struct A { static int i; };
class B { typedef int X; }; // { dg-error "private" } class B { typedef int X; }; // { dg-message "private" }
void f() { A<B::X>::i = 0; } // { dg-error "this context" } void f() { A<B::X>::i = 0; } // { dg-error "this context" }
...@@ -8,7 +8,7 @@ template <class T> struct A { ...@@ -8,7 +8,7 @@ template <class T> struct A {
}; };
class B { class B {
template <class T> class X {}; // { dg-error "private" } template <class T> class X {}; // { dg-message "private" }
}; };
int main() int main()
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
template <typename A> template <typename A>
class S { class S {
class T {}; // { dg-error "private" } class T {}; // { dg-message "private" }
}; };
template <typename A> template <typename A>
......
...@@ -16,7 +16,7 @@ struct C2 ...@@ -16,7 +16,7 @@ struct C2
{ {
private: private:
template <class T> template <class T>
operator T(); // { dg-error "private" } operator T(); // { dg-message "private" }
public: public:
operator bool() { return false; } operator bool() { return false; }
} c2; } c2;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
template<typename T> class A template<typename T> class A
{ {
static int i; // { dg-error "is private" } static int i; // { dg-message "private" }
friend int T::foo(); // { dg-error "does not match" } friend int T::foo(); // { dg-error "does not match" }
}; };
......
...@@ -10,7 +10,7 @@ template <typename T, typename U> struct F; // { dg-message "previous declaratio ...@@ -10,7 +10,7 @@ template <typename T, typename U> struct F; // { dg-message "previous declaratio
class W class W
{ {
template<int i> friend class F; // { dg-error "template parameter" } template<int i> friend class F; // { dg-error "template parameter" }
int x; // { dg-error "private" } int x; // { dg-message "private" }
}; };
template <typename T, typename U> struct F template <typename T, typename U> struct F
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
template<class T> class A template<class T> class A
{ {
void f (); // { dg-error "private" } void f (); // { dg-message "private" }
}; };
template<class T> class B template<class T> class B
......
...@@ -17,7 +17,7 @@ template<class T> struct A ...@@ -17,7 +17,7 @@ template<class T> struct A
}; };
class C { class C {
int i; // { dg-error "private" } int i; // { dg-message "private" }
template<class T> friend struct A<T>::B1; template<class T> friend struct A<T>::B1;
}; };
......
...@@ -17,7 +17,7 @@ template<class T> struct A ...@@ -17,7 +17,7 @@ template<class T> struct A
}; };
class C { class C {
int i; // { dg-error "private" } int i; // { dg-message "private" }
template<class T> template <class U> friend struct A<T>::B1; template<class T> template <class U> friend struct A<T>::B1;
}; };
......
...@@ -18,7 +18,7 @@ template<typename Q> ...@@ -18,7 +18,7 @@ template<typename Q>
class F1 class F1
{ {
friend class A<Q>::B; friend class A<Q>::B;
enum { foo = 0 }; // { dg-error "private" } enum { foo = 0 }; // { dg-message "private" }
}; };
template<typename Q> template<typename Q>
......
...@@ -15,7 +15,7 @@ template <class T> struct A { ...@@ -15,7 +15,7 @@ template <class T> struct A {
}; };
class C { class C {
int ii; // { dg-error "private" } int ii; // { dg-message "private" }
template <class U> template <class V> template <class U> template <class V>
friend void A<U>::f(V); friend void A<U>::f(V);
template <class U> friend void A<U>::g(); template <class U> friend void A<U>::g();
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
struct B struct B
{ {
protected: protected:
template <class T> void f (); // { dg-error "protected" } template <class T> void f (); // { dg-message "protected" }
}; };
struct D : public B struct D : public B
......
...@@ -8,7 +8,7 @@ class foo { ...@@ -8,7 +8,7 @@ class foo {
public: public:
foo() {} foo() {}
protected: protected:
~foo() {} // { dg-error "~foo" } ~foo() {} // { dg-message "protected" }
}; };
int main() int main()
......
...@@ -11,7 +11,7 @@ template <class T> struct D { ...@@ -11,7 +11,7 @@ template <class T> struct D {
struct E { struct E {
private: private:
template <class T> class B {}; // { dg-error "private" } template <class T> class B {}; // { dg-message "private" }
}; };
D<E> d; // { dg-message "required" } D<E> d; // { dg-message "required" }
...@@ -9,8 +9,8 @@ template <typename> struct Template {}; ...@@ -9,8 +9,8 @@ template <typename> struct Template {};
template<template<typename> class D> template<template<typename> class D>
struct B { struct B {
static void foo1(const D<void> *); // { dg-error "const" } static void foo1(const D<void> *); // { dg-message "declared" }
static void foo2(volatile D<void> *);// { dg-error "volatile" } static void foo2(volatile D<void> *);// { dg-message "declared" }
}; };
class E : protected B<Template> {}; class E : protected B<Template> {};
......
...@@ -5,13 +5,13 @@ ...@@ -5,13 +5,13 @@
class Alpha class Alpha
{ {
typedef int X; // { dg-error "'typedef int Alpha::X' is private" } typedef int X; // { dg-message "private" }
}; };
template<int> template<int>
class Beta class Beta
{ {
typedef int Y; // { dg-error "'typedef int Beta<0>::Y' is private" } typedef int Y; // { dg-message "private" }
}; };
template <int> template <int>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
class A class A
{ {
typedef int mytype; // { dg-error "typedef int A::mytype' is private" } typedef int mytype; // { dg-message "private" }
}; };
template <class T> class B : public A template <class T> class B : public A
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
class A class A
{ {
typedef int mytype; // { dg-error "'typedef int A::mytype' is private" } typedef int mytype; // { dg-message "private" }
}; };
template <class T> template <class T>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
class x class x
{ {
typedef int privtype; // { dg-error "is private" } typedef int privtype; // { dg-message "private" }
protected: protected:
typedef int type; typedef int type;
......
...@@ -6,7 +6,7 @@ template <typename T> ...@@ -6,7 +6,7 @@ template <typename T>
struct B struct B
{ {
protected: protected:
typedef int M; // { dg-error "protected" } typedef int M; // { dg-message "protected" }
}; };
template <typename T> template <typename T>
......
...@@ -11,7 +11,7 @@ struct B ...@@ -11,7 +11,7 @@ struct B
{ {
class type class type
{ {
type(); // { dg-error "private" } type(); // { dg-message "private" }
}; };
}; };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
template<int> class A template<int> class A
{ {
virtual ~A(); // { dg-error "non-deleted|private" } virtual ~A(); // { dg-message "non-deleted|private" }
}; };
struct B : A<0>, A<1> // { dg-error "deleted|context" } struct B : A<0>, A<1> // { dg-error "deleted|context" }
......
...@@ -7,7 +7,7 @@ namespace std ...@@ -7,7 +7,7 @@ namespace std
template < typename _Tp > class allocator; template < typename _Tp > class allocator;
template < typename _Alloc > struct allocator_traits { template < typename _Alloc > struct allocator_traits {
private: private:
template < typename _Tp > auto construct ( _Alloc & __a, _Tp * __p)-> // { dg-error "is private" } template < typename _Tp > auto construct ( _Alloc & __a, _Tp * __p)-> // { dg-message "private" }
decltype (_S_construct (__a, __p)) { } decltype (_S_construct (__a, __p)) { }
}; };
namespace __gnu_cxx namespace __gnu_cxx
......
...@@ -6,7 +6,7 @@ public: ...@@ -6,7 +6,7 @@ public:
void z(); void z();
A(void) {} A(void) {}
private: private:
A(const A &) { abort(); } // { dg-error "private" } A(const A &) { abort(); } // { dg-message "private" }
const A& operator =(const A &) { abort(); } const A& operator =(const A &) { abort(); }
}; };
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
extern "C" int printf (const char *, ...); extern "C" int printf (const char *, ...);
class A { class A {
int i; // { dg-error "" } private int i; // { dg-message "" } private
int j; // { dg-error "" } private int j; // { dg-message "" } private
public: public:
int h; int h;
A() { i=10; j=20; } A() { i=10; j=20; }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// GROUPS passed enums // GROUPS passed enums
class X { class X {
private: private:
enum E1 {a1, b1}; // { dg-error "" } private enum E1 {a1, b1}; // { dg-message "" } private
public: public:
enum E2 {a2, b2}; enum E2 {a2, b2};
}; };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// GROUPS passed visibility // GROUPS passed visibility
class foo { class foo {
protected: protected:
int i; // { dg-error "" } protected int i; // { dg-message "" } protected
}; };
class bar : public foo { class bar : public foo {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
struct base struct base
{ {
protected: protected:
void base_func() {}// { dg-error "" } .*is protected.* void base_func() {}// { dg-message "" } .*protected.*
}; };
struct derived : public base struct derived : public base
......
// { dg-do assemble } // { dg-do assemble }
// GROUPS passed visibility // GROUPS passed visibility
class X { class X {
void g (int); // { dg-error "" } private void g (int); // { dg-message "" } private
public: public:
void g (double); void g (double);
}; };
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
class bottom class bottom
{ {
public: public:
int b; // { dg-error "" } private int b; // { dg-message "" } private
}; };
class middle : private bottom class middle : private bottom
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
class X class X
{ {
public: public:
void fn ();// { dg-error "" } .* void fn ();// { dg-message "" } .*
}; };
class Y : private X class Y : private X
{}; {};
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
class foo class foo
{ {
public: public:
static int y; // { dg-error "" } private static int y; // { dg-message "" } private
}; };
class foo1 : private foo class foo1 : private foo
{ }; { };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// GROUPS passed visibility // GROUPS passed visibility
class A { class A {
public: public:
void aMethod(void) {};// { dg-error "" } .* void aMethod(void) {};// { dg-message "" } .*
}; };
class AA : A { }; class AA : A { };
......
...@@ -18,7 +18,7 @@ public: ...@@ -18,7 +18,7 @@ public:
}; };
struct_0::struct_0 (int i) { } struct_0::struct_0 (int i) { }
struct_0::struct_0 (int, int) { } // { dg-error "is private" } struct_0::struct_0 (int, int) { } // { dg-message "private" }
struct struct_1 : public struct_0 { struct struct_1 : public struct_0 {
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
struct A { struct A {
protected: protected:
int i; // { dg-error "" } private int i; // { dg-message "" } private
int f (); // { dg-error "" } int f (); // { dg-message "" }
}; };
struct B: public A { struct B: public A {
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
int r = 0; int r = 0;
class A { class A {
private: private:
A() { r = 1; } // { dg-error "" } A() { r = 1; } // { dg-message "" }
~A() {} // { dg-error "" } ~A() {} // { dg-message "" }
}; };
class B : public A { class B : public A {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
class A class A
{ {
private: private:
static void foo() {} // { dg-error "" } static void foo() {} // { dg-message "" }
public: public:
void goo() {} void goo() {}
}; };
......
...@@ -17,24 +17,24 @@ public: ...@@ -17,24 +17,24 @@ public:
int PUB_A; int PUB_A;
protected: protected:
union { union {
long B; // { dg-error "" } protected long B; // { dg-message "" } protected
void *pY; // { dg-error "" } protected void *pY; // { dg-message "" } protected
} ; } ;
union Y { union Y {
long B; long B;
void *pY; void *pY;
} PRT; // { dg-error "" } protected } PRT; // { dg-message "" } protected
int PRT_A; // { dg-error "" } protected int PRT_A; // { dg-message "" } protected
private: private:
union { union {
long C; // { dg-error "" } private long C; // { dg-message "" } private
void *pZ; // { dg-error "" } private void *pZ; // { dg-message "" } private
}; };
union Z { union Z {
long C; long C;
void *pZ; void *pZ;
} PRV; // { dg-error "" } private } PRV; // { dg-message "" } private
int PRV_A; // { dg-error "" } private int PRV_A; // { dg-message "" } private
}; };
struct Bar : public Foo { struct Bar : public Foo {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
// Date: 25 Jan 1994 23:41:33 -0500 // Date: 25 Jan 1994 23:41:33 -0500
// Bug: g++ forgets access decls after the definition. // Bug: g++ forgets access decls after the definition.
class inh { // { dg-error "" } inaccessible class inh { // { dg-message "" } inaccessible
int a; int a;
protected: protected:
void myf(int); void myf(int);
......
...@@ -6,7 +6,7 @@ public: ...@@ -6,7 +6,7 @@ public:
A(); A();
~A(); ~A();
protected: protected:
void operator delete(void *); // { dg-error "" } protected void operator delete(void *); // { dg-message "" } protected
}; };
A::~A() A::~A()
......
...@@ -42,7 +42,7 @@ int foo2 (int (*a)(int) = &foo) ...@@ -42,7 +42,7 @@ int foo2 (int (*a)(int) = &foo)
} }
class X{ class X{
class Y{}; // { dg-error "" } private class Y{}; // { dg-message "" } private
}; };
typedef int const * bart (); typedef int const * bart ();
......
...@@ -10,7 +10,7 @@ template <class T> class Foo ...@@ -10,7 +10,7 @@ template <class T> class Foo
{ {
private: private:
friend class Bar; // To avoid warning. friend class Bar; // To avoid warning.
Foo(const T &v) {}; // { dg-error "" } private Foo(const T &v) {}; // { dg-message "" } private
}; };
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// Subject: bug with access control to member functions // Subject: bug with access control to member functions
class X { class X {
void g (int); // { dg-error "" } is private void g (int); // { dg-message "" } is private
public: public:
void g (double); void g (double);
}; };
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
// Subject: g++ 2.5.5 doesn't warn about inaccessible virtual base ctor // Subject: g++ 2.5.5 doesn't warn about inaccessible virtual base ctor
// Message-ID: <9403030024.AA04534@ses.com> // Message-ID: <9403030024.AA04534@ses.com>
class ForceLeafSterile { // { dg-error "" } class ForceLeafSterile { // { dg-message "" }
friend class Sterile; friend class Sterile;
ForceLeafSterile() {} // { dg-error "" } ForceLeafSterile() {} // { dg-message "" }
}; };
class Sterile : private virtual ForceLeafSterile { class Sterile : private virtual ForceLeafSterile {
......
...@@ -13,7 +13,7 @@ public: ...@@ -13,7 +13,7 @@ public:
protected: protected:
class nested_protected { int x; }; class nested_protected { int x; };
private: private:
class nested_private { int x; }; // { dg-error "" } private class nested_private { int x; }; // { dg-message "" } private
}; };
class derived : public enclose { class derived : public enclose {
......
...@@ -22,7 +22,7 @@ public: ...@@ -22,7 +22,7 @@ public:
Y(); Y();
}; };
X::X() // { dg-error "is private" } X::X() // { dg-message "private" }
{ {
std::cout << "X::X()" << std::endl; std::cout << "X::X()" << std::endl;
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
class X { class X {
private: private:
enum E1 {a1, b1}; // { dg-error "" } private enum E1 {a1, b1}; // { dg-message "" } private
public: public:
enum E2 {a2, b2}; enum E2 {a2, b2};
}; };
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
class A { class A {
A() {} // private constructor// { dg-error "" } .* A() {} // private constructor// { dg-message "" } .*
}; };
int main() { int main() {
......
...@@ -10,9 +10,9 @@ class A { ...@@ -10,9 +10,9 @@ class A {
public: public:
int x; int x;
private: private:
int y; // { dg-error "" } private int y; // { dg-message "" } private
union { union {
int z; // { dg-error "" } private int z; // { dg-message "" } private
}; };
}; };
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
// Subject: member access rule bug // Subject: member access rule bug
// Message-ID: <9306300528.AA17185@coda.mel.dit.CSIRO.AU> // Message-ID: <9306300528.AA17185@coda.mel.dit.CSIRO.AU>
struct a { struct a {
int aa; // { dg-error "" } private int aa; // { dg-message "" } private
}; };
class b : private a { class b : private a {
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
class X { class X {
private: private:
void* operator new(size_t) throw(){// { dg-error "" } .* void* operator new(size_t) throw(){// { dg-message "" } .*
printf("Inside private new().\n"); printf("Inside private new().\n");
return NULL; return NULL;
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// Message-ID: <9308051553.AA07639@nwd2sun1.analog.com> // Message-ID: <9308051553.AA07639@nwd2sun1.analog.com>
class A { class A {
protected: protected:
int astuff; // { dg-error "" } protected int astuff; // { dg-message "" } protected
A() { A() {
astuff = 3; astuff = 3;
} }
......
...@@ -31,12 +31,12 @@ private: ...@@ -31,12 +31,12 @@ private:
int num_; int num_;
}; };
Base::Base() // { dg-error "is private" } Base::Base() // { dg-message "private" }
{ {
name_ = std::strcpy(new char[std::strlen(" ") + 1], " "); name_ = std::strcpy(new char[std::strlen(" ") + 1], " ");
} }
Base::Base(char* str) // { dg-error "is private" } Base::Base(char* str) // { dg-message "private" }
{ {
if(str != NULL) if(str != NULL)
name_ = std::strcpy(new char[std::strlen(str) + 1], str); name_ = std::strcpy(new char[std::strlen(str) + 1], str);
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// Message-ID: <9308061142.AA08533@iiserv> // Message-ID: <9308061142.AA08533@iiserv>
struct T1 { int i; }; struct T1 { int i; };
struct T2 { int j; }; // { dg-error "" } private struct T2 { int j; }; // { dg-message "" } private
struct T3 : public T1, private T2 { struct T3 : public T1, private T2 {
} x; } x;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// Message-ID: <9308252030.AA02352@tnt.acsys.com> // Message-ID: <9308252030.AA02352@tnt.acsys.com>
class B { class B {
protected: protected:
int i; // { dg-error "" } protected int i; // { dg-message "" } protected
}; };
class D1 : public B { class D1 : public B {
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
class Base { class Base {
protected: protected:
void protectedBaseFunction() {} // { dg-error "" } protected void protectedBaseFunction() {} // { dg-message "" } protected
public: public:
Base() {} Base() {}
}; };
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// Message-ID: <9308121003.AA02294@mi.el.utwente.nl> // Message-ID: <9308121003.AA02294@mi.el.utwente.nl>
class A { class A {
protected: protected:
void foo(); // { dg-error "" } protected void foo(); // { dg-message "" } protected
}; };
class B : public A class B : public A
......
...@@ -14,7 +14,7 @@ template <class T> ...@@ -14,7 +14,7 @@ template <class T>
class A class A
{ {
public: public:
void Fun() { printf( "Fun fun fun!\n" ); } // { dg-error "" } private void Fun() { printf( "Fun fun fun!\n" ); } // { dg-message "" } private
}; };
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
class A { class A {
public: public:
int b; // { dg-error "" } private int b; // { dg-message "" } private
}; };
class C : private A { // NOTE WELL. private, not public class C : private A { // NOTE WELL. private, not public
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
class a { class a {
private: private:
a (int i);// { dg-error "" } .* a (int i);// { dg-message "" } .*
public: public:
a (); a ();
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
class Top { class Top {
public: public:
Top() {} Top() {}
void val() {} // { dg-error "" } private base class void val() {} // { dg-message "" } private base class
}; };
class Derived : private Top { class Derived : private Top {
......
...@@ -15,9 +15,9 @@ class A { ...@@ -15,9 +15,9 @@ class A {
{} {}
virtual ~A() virtual ~A()
{} {}
virtual void Number(int c) // { dg-error "inaccessible" } virtual void Number(int c) // { dg-message "declared" }
{ number = c; } { number = c; }
virtual int Number() // { dg-error "inaccessible" } virtual int Number() // { dg-message "declared" }
{ return number; } { return number; }
}; };
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// Message-ID: <m0nof3E-0021ifC@jts.com // Message-ID: <m0nof3E-0021ifC@jts.com
class t1 { class t1 {
protected: protected:
int a; // { dg-error "" } protected int a; // { dg-message "" } protected
}; };
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
class A { class A {
protected: protected:
int a; // { dg-error "" } protected int a; // { dg-message "" } protected
}; };
class B : public A { class B : public A {
......
...@@ -8,7 +8,7 @@ public: ...@@ -8,7 +8,7 @@ public:
class C2 class C2
{ {
int data_member; // { dg-error "" } int data_member; // { dg-message "" }
friend class C1; // { dg-error "" } friend class C1; // { dg-error "" }
}; };
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
struct foo { struct foo {
foo() {} foo() {}
private: private:
void operator delete(void *) {} // { dg-error "" } private void operator delete(void *) {} // { dg-message "" } private
} foo_; } foo_;
struct bar : foo { struct bar : foo {
......
...@@ -9,7 +9,7 @@ template <typename T> void foo(T*); ...@@ -9,7 +9,7 @@ template <typename T> void foo(T*);
template <typename T> class bar { template <typename T> class bar {
private: private:
int i; // { dg-error "" } this variable int i; // { dg-message "" } this variable
friend void foo<T>(T); friend void foo<T>(T);
}; };
......
...@@ -10,7 +10,7 @@ private: ...@@ -10,7 +10,7 @@ private:
}; };
template <> template <>
void A::g<int>(int t) { i = 1; } // { dg-error "" } private void A::g<int>(int t) { i = 1; } // { dg-message "" } private
int main() int main()
{ {
......
// { dg-do assemble } // { dg-do assemble }
struct A { // { dg-error "" } inaccessible struct A { // { dg-message "" } inaccessible
static int i; static int i;
}; };
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
class A { class A {
static int I1; // { dg-error "" } private static int I1; // { dg-message "" } private
struct B1 { }; // { dg-error "" } private struct B1 { }; // { dg-message "" } private
public: public:
static int I2; static int I2;
struct B2 { }; struct B2 { };
......
// { dg-do assemble } // { dg-do assemble }
class A class A
{ {
enum B { ONE, TWO, THREE }; // { dg-error "" } private enum B { ONE, TWO, THREE }; // { dg-message "" } private
}; };
class A::B; // { dg-error "" } A::B is not a class type, context class A::B; // { dg-error "" } A::B is not a class type, context
...@@ -4,7 +4,7 @@ void f() ...@@ -4,7 +4,7 @@ void f()
{ {
union { union {
private: private:
int i; // { dg-error "" } private int i; // { dg-message "" } private
} u; } u;
u.i = 3; // { dg-error "" } within this context u.i = 3; // { dg-error "" } within this context
......
...@@ -22,7 +22,7 @@ struct R; ...@@ -22,7 +22,7 @@ struct R;
class B { class B {
protected: protected:
int i; // { dg-error "" } in this context int i; // { dg-message "" } protected
static int j; static int j;
}; };
...@@ -51,7 +51,7 @@ D d; ...@@ -51,7 +51,7 @@ D d;
void f() void f()
{ {
b.i = 3; // { dg-error "" } protected b.i = 3; // { dg-error "" } in this context
d.i = 4; d.i = 4;
B::j = 5; B::j = 5;
D::j = 6; D::j = 6;
...@@ -60,7 +60,7 @@ void f() ...@@ -60,7 +60,7 @@ void f()
template <typename T> template <typename T>
void g() void g()
{ {
b.i = 3; // { dg-error "" } protected b.i = 3; // { dg-error "" } in this context
d.i = 4; d.i = 4;
B::j = 5; B::j = 5;
D::j = 6; D::j = 6;
...@@ -70,7 +70,7 @@ template void g<int>(); ...@@ -70,7 +70,7 @@ template void g<int>();
void S::h() void S::h()
{ {
b.i = 3; // { dg-error "" } protected b.i = 3; // { dg-error "" } in this context
d.i = 4; d.i = 4;
B::j = 5; B::j = 5;
D::j = 6; D::j = 6;
...@@ -79,7 +79,7 @@ void S::h() ...@@ -79,7 +79,7 @@ void S::h()
template <typename T> template <typename T>
void R<T>::h() void R<T>::h()
{ {
b.i = 3; // { dg-error "" } protected b.i = 3; // { dg-error "" } in this context
d.i = 4; d.i = 4;
B::j = 5; B::j = 5;
D::j = 6; D::j = 6;
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
template <class A, class B> void foo(); template <class A, class B> void foo();
template <class C> class bar { template <class C> class bar {
int i; // { dg-error "" } private int i; // { dg-message "" } private
template <class B> friend void foo<C,B>(); // { dg-error "" } bogus declaration template <class B> friend void foo<C,B>(); // { dg-error "" } bogus declaration
}; };
template <class A, class B> void foo() { template <class A, class B> void foo() {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
class F class F
{ {
class Internal; // { dg-error "" } is private class Internal; // { dg-message "" } private
}; };
class C class C
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
class A class A
{ {
A(); // { dg-error "" } private A(); // { dg-message "" } private
~A(); // { dg-error "" } private ~A(); // { dg-message "" } private
}; };
static A a; // { dg-error "" } here static A a; // { dg-error "" } here
......
...@@ -3,7 +3,7 @@ class D2; ...@@ -3,7 +3,7 @@ class D2;
class B { class B {
private: private:
int a; // { dg-error "" } B::a is private int a; // { dg-message "" } B::a declared private
protected: protected:
int b; int b;
......
...@@ -24,8 +24,8 @@ template <class> ...@@ -24,8 +24,8 @@ template <class>
struct B struct B
{ {
private: private:
enum foo {bar}; // { dg-error "" } private enum foo {bar}; // { dg-message "" } private
typedef int baz; // { dg-error "" } private typedef int baz; // { dg-message "" } private
}; };
struct D: public B<int> struct D: public B<int>
......
...@@ -21,7 +21,7 @@ class C ...@@ -21,7 +21,7 @@ class C
template <class U> template <class U>
friend void S<T>::f(U); friend void S<T>::f(U);
int i; // { dg-error "" } private int i; // { dg-message "" } private
}; };
......
...@@ -7,7 +7,7 @@ template <class T> struct A { ...@@ -7,7 +7,7 @@ template <class T> struct A {
template <class T> class B template <class T> class B
{ {
friend class A<T>; friend class A<T>;
static int i; // { dg-error "" } private static int i; // { dg-message "" } private
}; };
template <class T> class C template <class T> class C
......
...@@ -7,7 +7,7 @@ class C ...@@ -7,7 +7,7 @@ class C
{ {
friend void f<>(double); friend void f<>(double);
int i; // { dg-error "" } private int i; // { dg-message "" } private
}; };
......
...@@ -24,7 +24,7 @@ template <class T> class B ...@@ -24,7 +24,7 @@ template <class T> class B
static T value_AC; static T value_AC;
}; };
template <typename T> T B<T>::valueA_AA; template <typename T> T B<T>::valueA_AA;
template <typename T> T B<T>::valueA_AC;// { dg-error "" "" } private - template <typename T> T B<T>::valueA_AC;// { dg-message "" "" } private -
template <typename T> T B<T>::value_AC; // { dg-bogus "" "" } - template <typename T> T B<T>::value_AC; // { dg-bogus "" "" } -
// this one is a friend // this one is a friend
......
...@@ -5,11 +5,11 @@ class S ...@@ -5,11 +5,11 @@ class S
{ {
protected: protected:
template <class U> template <class U>
void f(U); // { dg-error "" } is protected void f(U); // { dg-message "" } protected
private: private:
template <class U> template <class U>
void g(U); // { dg-error "" } is private void g(U); // { dg-message "" } private
}; };
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
class Q { class Q {
template<class T> template<class T>
class X { // { dg-error "" } Q::X private class X { // { dg-message "" } Q::X private
}; };
}; };
template<template<class> class XX> template<template<class> class XX>
......
...@@ -10,7 +10,7 @@ static int variable; ...@@ -10,7 +10,7 @@ static int variable;
class myClass : public baseClass class myClass : public baseClass
{ {
private: private:
static int variable; // { dg-error "private" } static int variable; // { dg-message "private" }
}; };
myClass::variable = 0; //{ dg-error "" } no type myClass::variable = 0; //{ dg-error "" } no type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment