aboutsummaryrefslogtreecommitdiffstats
path: root/test/liblll
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-06-22 07:43:01 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-06-23 09:52:44 +0800
commitaf57c083f2aa144e765a7345f15713330b192e36 (patch)
treeb0c36e96f70704090fa3211eca09d56bad3b0e18 /test/liblll
parent1ffe286a81b9bad005cfefa3fc8672aecb0ec0f8 (diff)
downloaddexon-solidity-af57c083f2aa144e765a7345f15713330b192e36.tar.gz
dexon-solidity-af57c083f2aa144e765a7345f15713330b192e36.tar.zst
dexon-solidity-af57c083f2aa144e765a7345f15713330b192e36.zip
LLL: fix the set keyword (create symbol if not present)
Diffstat (limited to 'test/liblll')
-rw-r--r--test/liblll/EndToEndTest.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/liblll/EndToEndTest.cpp b/test/liblll/EndToEndTest.cpp
index 02d024a4..3037b14b 100644
--- a/test/liblll/EndToEndTest.cpp
+++ b/test/liblll/EndToEndTest.cpp
@@ -57,6 +57,26 @@ BOOST_AUTO_TEST_CASE(panic)
BOOST_REQUIRE(m_output.empty());
}
+BOOST_AUTO_TEST_CASE(variables)
+{
+ char const* sourceCode = R"(
+ (returnlll
+ (seq
+ (set 'x 1)
+ (set 'y 2)
+ ;; this should equal to 3
+ (set 'z (add (get 'x) (get 'y)))
+ ;; overwriting it here
+ (set 'y 4)
+ ;; each variable has a 32 byte slot, starting from memory location 0x80
+ ;; variable addresses can also be retrieved by x or (ref 'x)
+ (set 'k (add (add (ref 'x) (ref 'y)) z))
+ (return (add (add (get 'x) (add (get 'y) (get 'z))) (get 'k)))))
+ )";
+ compileAndRun(sourceCode);
+ BOOST_CHECK(callFallback() == encodeArgs(u256(488)));
+}
+
BOOST_AUTO_TEST_CASE(when)
{
char const* sourceCode = R"(