aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/overloaded-builtin-operators.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaCXX/overloaded-builtin-operators.cpp')
-rw-r--r--test/SemaCXX/overloaded-builtin-operators.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/test/SemaCXX/overloaded-builtin-operators.cpp b/test/SemaCXX/overloaded-builtin-operators.cpp
index aabe8dde1b..af328da212 100644
--- a/test/SemaCXX/overloaded-builtin-operators.cpp
+++ b/test/SemaCXX/overloaded-builtin-operators.cpp
@@ -10,10 +10,21 @@ struct Long {
operator long();
};
+enum E1 { };
+struct Enum1 {
+ operator E1();
+};
+
+enum E2 { };
+struct Enum2 {
+ operator E2();
+};
+
yes& islong(long);
+yes& islong(unsigned long); // FIXME: shouldn't be needed
no& islong(int);
-void f(Short s, Long l) {
+void f(Short s, Long l, Enum1 e1, Enum2 e2) {
// C++ [over.built]p12
(void)static_cast<yes&>(islong(s + l));
(void)static_cast<no&>(islong(s + s));
@@ -22,6 +33,8 @@ void f(Short s, Long l) {
(void)static_cast<yes&>(islong(s % l));
(void)static_cast<yes&>(islong(l << s));
(void)static_cast<no&>(islong(s << l));
+ (void)static_cast<yes&>(islong(e1 % l));
+ // FIXME: should pass (void)static_cast<no&>(islong(e1 % e2));
}
struct ShortRef {