aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2017-05-12 13:20:21 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2017-05-12 13:20:21 +0000
commit9206028e8c65941431301ad405d2c87cd3eb2f7f (patch)
tree192f9a3bdf48c077b681cbfea4df6d4e18afdcb4
parent06ace75d4bcebf8bcc021dfe918b9866fba3108c (diff)
downloadgcc-9206028e8c65941431301ad405d2c87cd3eb2f7f.zip
gcc-9206028e8c65941431301ad405d2c87cd3eb2f7f.tar.gz
gcc-9206028e8c65941431301ad405d2c87cd3eb2f7f.tar.bz2
re PR c++/49604 (forward-declared enum's elements in class scope gets default access (class vs struct))
2017-05-12 Paolo Carlini <paolo.carlini@oracle.com> PR c++/49604 * g++.dg/cpp0x/forw_enum14.C: New. * g++.dg/cpp0x/forw_enum15.C: Likewise. From-SVN: r247969
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/forw_enum14.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/forw_enum15.C14
3 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ff4327a..4b9297b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2017-05-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/49604
+ * g++.dg/cpp0x/forw_enum14.C: New.
+ * g++.dg/cpp0x/forw_enum15.C: Likewise.
+
2017-05-12 Richard Biener <rguenther@suse.de>
* g++.dg/tree-ssa/ssa-dse-2.C: Adjust.
diff --git a/gcc/testsuite/g++.dg/cpp0x/forw_enum14.C b/gcc/testsuite/g++.dg/cpp0x/forw_enum14.C
new file mode 100644
index 0000000..ac38c18
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/forw_enum14.C
@@ -0,0 +1,16 @@
+// PR c++/49604
+// { dg-do compile { target c++11 } }
+
+class MyTable {
+public:
+ enum Constants : unsigned;
+};
+
+enum MyTable::Constants : unsigned {
+ LENGTH = 12,
+};
+
+int main()
+{
+ return MyTable::LENGTH;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/forw_enum15.C b/gcc/testsuite/g++.dg/cpp0x/forw_enum15.C
new file mode 100644
index 0000000..6581604
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/forw_enum15.C
@@ -0,0 +1,14 @@
+// PR c++/49604
+// { dg-do compile { target c++11 } }
+
+struct Foo
+{
+private:
+ int val;
+ enum impl_t : int;
+public:
+ Foo(impl_t v) : val(v) {}
+};
+enum Foo::impl_t : int { X };
+
+Foo test = Foo::X; // { dg-error "private" }