aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2018-07-24 08:14:45 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2018-07-25 17:45:31 +0800
commitab3978723ad5651832ec49f9217882bf0b14d981 (patch)
tree64bf8ce899af36c221af779e4a495081b1567127
parentd647761058e3bb4b32846bd8b51f2de72fb85169 (diff)
downloaddexon-solidity-ab3978723ad5651832ec49f9217882bf0b14d981.tar.gz
dexon-solidity-ab3978723ad5651832ec49f9217882bf0b14d981.tar.zst
dexon-solidity-ab3978723ad5651832ec49f9217882bf0b14d981.zip
Add more tests for inlineasm/AsmAnalyzer
-rw-r--r--test/libsolidity/syntaxTests/inlineAssembly/function_call_invalid_argument_count.sol16
-rw-r--r--test/libsolidity/syntaxTests/inlineAssembly/function_call_not_found.sol9
-rw-r--r--test/libsolidity/syntaxTests/inlineAssembly/function_call_to_label.sol13
-rw-r--r--test/libsolidity/syntaxTests/inlineAssembly/function_call_to_variable.sol11
-rw-r--r--test/libsolidity/syntaxTests/inlineAssembly/function_without_call.sol11
5 files changed, 60 insertions, 0 deletions
diff --git a/test/libsolidity/syntaxTests/inlineAssembly/function_call_invalid_argument_count.sol b/test/libsolidity/syntaxTests/inlineAssembly/function_call_invalid_argument_count.sol
new file mode 100644
index 00000000..cbea8991
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inlineAssembly/function_call_invalid_argument_count.sol
@@ -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.
diff --git a/test/libsolidity/syntaxTests/inlineAssembly/function_call_not_found.sol b/test/libsolidity/syntaxTests/inlineAssembly/function_call_not_found.sol
new file mode 100644
index 00000000..57534bd6
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inlineAssembly/function_call_not_found.sol
@@ -0,0 +1,9 @@
+contract C {
+ function f() public pure {
+ assembly {
+ k()
+ }
+ }
+}
+// ----
+// DeclarationError: (63-64): Function not found.
diff --git a/test/libsolidity/syntaxTests/inlineAssembly/function_call_to_label.sol b/test/libsolidity/syntaxTests/inlineAssembly/function_call_to_label.sol
new file mode 100644
index 00000000..5de492e1
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inlineAssembly/function_call_to_label.sol
@@ -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.
diff --git a/test/libsolidity/syntaxTests/inlineAssembly/function_call_to_variable.sol b/test/libsolidity/syntaxTests/inlineAssembly/function_call_to_variable.sol
new file mode 100644
index 00000000..c0071855
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inlineAssembly/function_call_to_variable.sol
@@ -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.
diff --git a/test/libsolidity/syntaxTests/inlineAssembly/function_without_call.sol b/test/libsolidity/syntaxTests/inlineAssembly/function_without_call.sol
new file mode 100644
index 00000000..8557e2fa
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inlineAssembly/function_without_call.sol
@@ -0,0 +1,11 @@
+contract C {
+ function f() public pure {
+ assembly {
+ function k() {}
+
+ k
+ }
+ }
+}
+// ----
+// TypeError: (86-87): Function k used without being called.