Add more tests for inlineasm/AsmAnalyzer

This commit is contained in:
Alex Beregszaszi 2018-07-24 01:14:45 +01:00
parent d647761058
commit ab3978723a
5 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,16 @@
contract C {
function f() public pure {
assembly {
function f(a) {}
f()
f(1)
f(1, 2)
}
}
}
// ----
// TypeError: (87-88): Expected 1 arguments but got 0.
// Warning: (87-90): Top-level expressions are not supposed to return values (this expression returns -1 values). Use ``pop()`` or assign them.
// TypeError: (108-109): Expected 1 arguments but got 2.
// Warning: (108-115): Top-level expressions are not supposed to return values (this expression returns 1 value). Use ``pop()`` or assign them.

View File

@ -0,0 +1,9 @@
contract C {
function f() public pure {
assembly {
k()
}
}
}
// ----
// DeclarationError: (63-64): Function not found.

View File

@ -0,0 +1,13 @@
contract C {
function f() public pure {
assembly {
l:
l()
}
}
}
// ----
// Warning: (63-64): The use of labels is deprecated. Please use "if", "switch", "for" or function calls instead.
// Warning: (63-64): Jump instructions and labels are low-level EVM features that can lead to incorrect stack access. Because of that they are discouraged. Please consider using "switch", "if" or "for" statements instead.
// TypeError: (73-74): Attempt to call label instead of function.

View File

@ -0,0 +1,11 @@
contract C {
function f() public pure {
assembly {
let x := 1
x()
}
}
}
// ----
// TypeError: (81-82): Attempt to call variable instead of function.

View File

@ -0,0 +1,11 @@
contract C {
function f() public pure {
assembly {
function k() {}
k
}
}
}
// ----
// TypeError: (86-87): Function k used without being called.