summaryrefslogtreecommitdiff
path: root/test/Analysis/enum.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/enum.cpp')
-rw-r--r--test/Analysis/enum.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Analysis/enum.cpp b/test/Analysis/enum.cpp
index b561e65ac86ea..96408473cede9 100644
--- a/test/Analysis/enum.cpp
+++ b/test/Analysis/enum.cpp
@@ -37,3 +37,33 @@ bool testNoCrashOnSwitchEnumBool(EnumBool E) {
}
return true;
}
+
+bool testNoCrashOnSwitchEnumBoolConstant() {
+ EnumBool E = EnumBool::F;
+ switch (E) {
+ case EnumBool::F:
+ return false;
+ }
+ return true;
+}
+
+typedef __INTPTR_TYPE__ intptr_t;
+bool testNoCrashOnSwitchEnumBoolConstantCastedFromNullptr() {
+ EnumBool E = static_cast<EnumBool>((intptr_t)nullptr);
+ switch (E) {
+ case EnumBool::F:
+ return false;
+ }
+ return true;
+}
+
+bool testNoCrashOnSwitchEnumBoolConstantCastedFromPtr() {
+ int X;
+ intptr_t P = (intptr_t)&X;
+ EnumBool E = static_cast<EnumBool>(P);
+ switch (E) {
+ case EnumBool::F:
+ return false;
+ }
+ return true;
+}