diff options
Diffstat (limited to 'test/SemaCXX/overloaded-builtin-operators.cpp')
-rw-r--r-- | test/SemaCXX/overloaded-builtin-operators.cpp | 15 |
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 { |