diff --git a/regression/cpp/Function_Overloading3/main.cpp b/regression/cpp/Function_Overloading3/main.cpp new file mode 100644 index 00000000000..36b415a48a5 --- /dev/null +++ b/regression/cpp/Function_Overloading3/main.cpp @@ -0,0 +1,28 @@ +class t1 +{ +public: + t1(int n) : value(n) + { + } + + int value; + int operator[](int n) + { + return n * value; + } +}; + +int operator+(t1 left, int right) +{ + return left.value + right; +} + +int main() +{ + t1 t(10); + int t_1 = t + 5; + int t_2 = t[5]; + __CPROVER_assert(t_1 == 15, ""); + __CPROVER_assert(t_2 == 50, ""); + return 0; +} diff --git a/regression/cpp/Function_Overloading3/test.desc b/regression/cpp/Function_Overloading3/test.desc new file mode 100644 index 00000000000..a003b07b93c --- /dev/null +++ b/regression/cpp/Function_Overloading3/test.desc @@ -0,0 +1,8 @@ +CORE +main.cpp + +^EXIT=0$ +^SIGNAL=0$ +-- +^warning: ignoring +^CONVERSION ERROR$ diff --git a/regression/cpp/Unary_Function_Overload1/test.desc b/regression/cpp/Unary_Function_Overload1/test.desc index 5893356edf6..a003b07b93c 100644 --- a/regression/cpp/Unary_Function_Overload1/test.desc +++ b/regression/cpp/Unary_Function_Overload1/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +CORE main.cpp ^EXIT=0$ diff --git a/regression/cpp/Unary_Function_Overload2/test.desc b/regression/cpp/Unary_Function_Overload2/test.desc index 5893356edf6..a003b07b93c 100644 --- a/regression/cpp/Unary_Function_Overload2/test.desc +++ b/regression/cpp/Unary_Function_Overload2/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +CORE main.cpp ^EXIT=0$ diff --git a/regression/cpp/Unary_Function_Overload3/test.desc b/regression/cpp/Unary_Function_Overload3/test.desc index 5893356edf6..a003b07b93c 100644 --- a/regression/cpp/Unary_Function_Overload3/test.desc +++ b/regression/cpp/Unary_Function_Overload3/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +CORE main.cpp ^EXIT=0$ diff --git a/src/cpp/parse.cpp b/src/cpp/parse.cpp index 4fc00affe96..e658d418aa4 100644 --- a/src/cpp/parse.cpp +++ b/src/cpp/parse.cpp @@ -3402,7 +3402,7 @@ bool Parser::rOperatorName(irept &name) case '<': case '>': case ',': - operator_id=irep_idt(std::string(static_cast(t), 1)); + operator_id = std::string(1, static_cast(t)); break; case TOK_MULTASSIGN: operator_id="*="; break;