summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg
diff options
context:
space:
mode:
authorlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>2003-08-19 12:55:00 +0000
committerlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>2003-08-19 12:55:00 +0000
commit3d5bde252d37e6c274e15709d1327b6e356f939c (patch)
tree2af4698f783f34d32d20523a83a198c5df2680ae /gcc/testsuite/g++.dg
parent1e9d74f8db463d04bef33f76a3d6fd5cd0400bb0 (diff)
downloadgcc-3d5bde252d37e6c274e15709d1327b6e356f939c.tar.gz
PR c++/11174
* init.c (build_offset_ref): Perform access checking for pointer to member correctly. * g++.dg/parse/access4.C: New test. * g++.dg/parse/access5.C: Likewise. * g++.old-deja/g++.jason/access17.C: Adjust error message. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70566 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r--gcc/testsuite/g++.dg/parse/access4.C20
-rw-r--r--gcc/testsuite/g++.dg/parse/access5.C18
2 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/parse/access4.C b/gcc/testsuite/g++.dg/parse/access4.C
new file mode 100644
index 00000000000..d3870bd3497
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/access4.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
+// Origin: Mike Reed <mike.reed@amadron.com>
+
+// PR c++/11174: Access checking of pointer-to-member function
+
+class A {
+protected:
+ void foo() {} // { dg-error "protected" }
+public:
+ A();
+};
+
+class B : public A {
+ void bar() {
+ A a;
+ void (A::*pmf)() = &A::foo; // { dg-error "this context" }
+ (a.*pmf)();
+ }
+};
diff --git a/gcc/testsuite/g++.dg/parse/access5.C b/gcc/testsuite/g++.dg/parse/access5.C
new file mode 100644
index 00000000000..cd1789eedda
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/access5.C
@@ -0,0 +1,18 @@
+// { dg-do compile }
+
+// Origin: Giovanni Bajo <giovannibajo@libero.it>
+
+// PR c++/11174: Access checking on pointer to member data.
+
+struct A
+{
+protected:
+ int a; // { dg-error "protected" }
+};
+
+struct B : A
+{
+ void foo() {
+ (void)&A::a; // { dg-error "this context" }
+ }
+};