mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Additional tests for user type operators
This commit is contained in:
parent
f6543f772d
commit
9badef916e
@ -0,0 +1,29 @@
|
||||
type Int is int128;
|
||||
|
||||
function add(Int, Int) pure returns (Int) {
|
||||
return Int.wrap(3);
|
||||
}
|
||||
|
||||
function another_add(Int, Int) pure returns (Int) {
|
||||
return Int.wrap(7);
|
||||
}
|
||||
|
||||
contract B {
|
||||
using {add as +} for Int;
|
||||
|
||||
function f() pure public returns (Int) {
|
||||
return Int.wrap(0) + Int.wrap(0);
|
||||
}
|
||||
}
|
||||
|
||||
contract C is B {
|
||||
using {another_add as +} for Int;
|
||||
|
||||
function g() pure public returns (Int) {
|
||||
return Int.wrap(0) + Int.wrap(0);
|
||||
}
|
||||
}
|
||||
|
||||
// ----
|
||||
// f() -> 3
|
||||
// g() -> 7
|
@ -0,0 +1,12 @@
|
||||
type Int is int;
|
||||
|
||||
using {
|
||||
f as +
|
||||
} for Int;
|
||||
|
||||
function f() returns (Int) {
|
||||
return Int.wrap(0);
|
||||
}
|
||||
|
||||
// ----
|
||||
// TypeError 4731: (30-31): The function "f" does not have any parameters, and therefore cannot be bound to the type "Int".
|
@ -0,0 +1,34 @@
|
||||
type Int is int128;
|
||||
|
||||
function add(Int, Int) pure returns (Int) {
|
||||
return Int.wrap(3);
|
||||
}
|
||||
|
||||
function another_add(Int, Int) pure returns (Int) {
|
||||
return Int.wrap(7);
|
||||
}
|
||||
|
||||
contract B {
|
||||
using {add as +} for Int;
|
||||
|
||||
function f() pure public returns (Int) {
|
||||
return Int.wrap(0) + Int.wrap(0);
|
||||
}
|
||||
}
|
||||
|
||||
contract C is B {
|
||||
using {another_add as +} for Int;
|
||||
|
||||
function g() pure public returns (Int) {
|
||||
return Int.wrap(0) + Int.wrap(0);
|
||||
}
|
||||
}
|
||||
|
||||
contract D is B {
|
||||
function h() pure public returns (Int) {
|
||||
return Int.wrap(0) + Int.wrap(0);
|
||||
}
|
||||
}
|
||||
|
||||
// ----
|
||||
// TypeError 2271: (542-567): Operator + not compatible with types Int and Int. No matching user-defined operator found.
|
@ -0,0 +1,22 @@
|
||||
type Int is int;
|
||||
|
||||
using {add as +} for Int;
|
||||
|
||||
function add(Int, Int) pure returns (Int) {
|
||||
return Int.wrap(0);
|
||||
}
|
||||
|
||||
function another_add(Int, Int) pure returns (Int) {
|
||||
return Int.wrap(0);
|
||||
}
|
||||
|
||||
contract C {
|
||||
using {another_add as +} for Int;
|
||||
|
||||
function f() public {
|
||||
Int.wrap(0) + Int.wrap(0);
|
||||
}
|
||||
}
|
||||
|
||||
// ----
|
||||
// TypeError 2271: (281-306): Operator + not compatible with types Int and Int. Multiple user-defined functions provided for this operator.
|
@ -1,14 +1,23 @@
|
||||
using {
|
||||
shiftL as <<,
|
||||
shiftR as >>,
|
||||
exp as **,
|
||||
neg as !,
|
||||
f as x
|
||||
f as <<,
|
||||
f as >>,
|
||||
f as **,
|
||||
f as ++,
|
||||
f as !,
|
||||
f as x,
|
||||
f as delete,
|
||||
f as new,
|
||||
f as ()
|
||||
} for int256;
|
||||
|
||||
// ----
|
||||
// ParserError 4403: (22-24): The operator << cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (40-42): The operator >> cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (55-57): The operator ** cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (70-71): The operator ! cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (82-83): The operator cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (17-19): The operator << cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (30-32): The operator >> cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (43-45): The operator ** cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (56-58): The operator ++ cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (69-70): The operator ! cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (81-82): The operator cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (93-99): The operator delete cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (110-113): The operator new cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 4403: (124-125): The operator ( cannot be user-implemented. This is only possible for the following operators: |, &, ^, +, -, *, /, %, ==, !=, <, >, <=, >=, ~
|
||||
// ParserError 2314: (125-126): Expected '}' but got ')'
|
||||
|
@ -0,0 +1,12 @@
|
||||
type Int is int;
|
||||
|
||||
using {
|
||||
f as ~
|
||||
} for Int;
|
||||
|
||||
function f() returns (Int) {
|
||||
return Int.wrap(0);
|
||||
}
|
||||
|
||||
// ----
|
||||
// TypeError 4731: (30-31): The function "f" does not have any parameters, and therefore cannot be bound to the type "Int".
|
Loading…
Reference in New Issue
Block a user