diff options
author | Nathan Sidwell <nathan@gcc.gnu.org> | 2015-05-24 23:17:58 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2015-05-24 23:17:58 +0000 |
commit | 6f2d72e0e1038dbd57131bdeee8569c4397ad706 (patch) | |
tree | 31c442197b0ab466c1ed27cd1a65f1b98830d743 | |
parent | bce0e38df986d827d49928f0021e4e995e605ad7 (diff) | |
download | gcc-6f2d72e0e1038dbd57131bdeee8569c4397ad706.zip gcc-6f2d72e0e1038dbd57131bdeee8569c4397ad706.tar.gz gcc-6f2d72e0e1038dbd57131bdeee8569c4397ad706.tar.bz2 |
re PR c++/66243 (enum class value is allowed to be initialized by value from other enum class)
cp/
PR c++/66243
* decl.c (build_enumerator): Don't silently convert scoped enums.
testsuite/
PR c++/66243
* g++.dg/cpp0x/pr66243.C: New.
From-SVN: r223636
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/decl.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr66243.C | 12 |
4 files changed, 26 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b5168c2..92c4738 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4 +1,9 @@ -2015-05-22 Jan Hubicka <hubicka@ucw.cz> +2015-05-24 Nathan Sidwell <nathan@acm.org> + + PR c++/66243 + * decl.c (build_enumerator): Don't silently convert scoped enums. + +2015-05-24 Jan Hubicka <hubicka@ucw.cz> PR lto/66180 * mangle.c (mangle_decl): Mangle anonymous namespace types as diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 06fbbd5..41530c1 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -13097,7 +13097,8 @@ build_enumerator (tree name, tree value, tree enumtype, tree attributes, if (tmp_value) value = tmp_value; } - else if (! INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value))) + else if (! INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P + (TREE_TYPE (value))) value = perform_implicit_conversion_flags (ENUM_UNDERLYING_TYPE (enumtype), value, tf_warning_or_error, LOOKUP_IMPLICIT | LOOKUP_NO_NARROWING); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7e6122d..e41d7e8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,9 @@ -2015-05-22 Jan Hubicka <hubicka@ucw.cz> +2015-05-23 Nathan Sidwell <nathan@acm.org> + + PR c++/66243 + * g++.dg/cpp0x/pr66243.C: New. + +2015-05-24 Jan Hubicka <hubicka@ucw.cz> PR lto/66180 * g++.dg/lto/pr66180_0.C: New testcase. diff --git a/gcc/testsuite/g++.dg/cpp0x/pr66243.C b/gcc/testsuite/g++.dg/cpp0x/pr66243.C new file mode 100644 index 0000000..41465a0 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr66243.C @@ -0,0 +1,12 @@ +// { dg-do compile { target c++11 } } + +enum class A +{ + X +}; + +enum class B +{ + X = A::X // { dg-error "could not convert" } +}; + |