diff --git a/test/libsolidity/semanticTests/modifiers/many_simple.sol b/test/libsolidity/semanticTests/modifiers/many_simple.sol new file mode 100644 index 000000000..281457a32 --- /dev/null +++ b/test/libsolidity/semanticTests/modifiers/many_simple.sol @@ -0,0 +1,24 @@ +contract C { + uint256 public x; + modifier m() { + x ++; + _; + } + + modifier mdouble() { + _; + _; + } + + function f() public m m m m m m m m m m mdouble m m m m m m m m m m m m m m m m returns (uint) { + return x; + } +} + +// ==== +// compileToEwasm: also +// compileViaYul: also +// ---- +// x() -> 0 +// f() -> 0x2a +// x() -> 0x2a diff --git a/test/libsolidity/semanticTests/modifiers/simple_and_nonsimple_modifier.sol b/test/libsolidity/semanticTests/modifiers/simple_and_nonsimple_modifier.sol new file mode 100644 index 000000000..89decd6af --- /dev/null +++ b/test/libsolidity/semanticTests/modifiers/simple_and_nonsimple_modifier.sol @@ -0,0 +1,26 @@ +contract C { + uint256 public x; + modifier m1() { + x = 1; + _; + } + + modifier m2(bool abort) { + if (abort) return; + _; + } + + function f(bool abort) public m1 m2(abort) { + x += 2; + } +} + +// ==== +// compileToEwasm: also +// compileViaYul: also +// ---- +// x() -> 0 +// f(bool): false -> +// x() -> 3 +// f(bool): true -> +// x() -> 1