summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-05-05 16:13:52 +0000
committerDouglas Gregor <dgregor@apple.com>2011-05-05 16:13:52 +0000
commit21673c4e7ec08457b53798b9879b7cc9a5909eb8 (patch)
tree07b139f6687feace3d931d1493d735cf0b57c8e1 /clang/test
parent951471482cb05936993f6e43358dd0b55dadcb4c (diff)
downloadbcm5719-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.cpp10
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')}}
+ }
+}
OpenPOWER on IntegriCloud