diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-05-05 16:13:52 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-05-05 16:13:52 +0000 |
| commit | 21673c4e7ec08457b53798b9879b7cc9a5909eb8 (patch) | |
| tree | 07b139f6687feace3d931d1493d735cf0b57c8e1 /clang/test | |
| parent | 951471482cb05936993f6e43358dd0b55dadcb4c (diff) | |
| download | bcm5719-llvm-21673c4e7ec08457b53798b9879b7cc9a5909eb8.tar.gz bcm5719-llvm-21673c4e7ec08457b53798b9879b7cc9a5909eb8.zip | |
Scoped enumerations should not be treated as integer types (in the C
sense). Fixes <rdar://problem/9366066> by eliminating an inconsistency
between C++ overloading (which handled scoped enumerations correctly)
and C binary operator type-checking (which didn't).
llvm-svn: 130924
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/SemaCXX/enum-scoped.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/enum-scoped.cpp b/clang/test/SemaCXX/enum-scoped.cpp index 8c4bfe72d3e..fc871cf3792 100644 --- a/clang/test/SemaCXX/enum-scoped.cpp +++ b/clang/test/SemaCXX/enum-scoped.cpp @@ -109,3 +109,13 @@ void PR9333() { scoped_enum e = scoped_enum::yes; if (e == scoped_enum::no) { } } + +// <rdar://problem/9366066> +namespace rdar9366066 { + enum class X : unsigned { value }; + + void f(X x) { + x % X::value; // expected-error{{invalid operands to binary expression ('rdar9366066::X' and 'rdar9366066::X')}} + x % 8; // expected-error{{invalid operands to binary expression ('rdar9366066::X' and 'int')}} + } +} |

