From 8239eaa1b86fd77037eae37057a55014c1b75a17 Mon Sep 17 00:00:00 2001 From: Alexander Arlt Date: Fri, 23 Apr 2021 09:56:19 -0500 Subject: [PATCH] Fix test builtins & add simple smoke test. --- test/libsolidity/SemanticTest.cpp | 11 +++++++++++ test/libsolidity/SemanticTest.h | 1 + .../libsolidity/semanticTests/builtins/smoke_test.sol | 7 +++++++ test/libsolidity/util/TestFileParser.cpp | 2 ++ 4 files changed, 21 insertions(+) create mode 100644 test/libsolidity/semanticTests/builtins/smoke_test.sol diff --git a/test/libsolidity/SemanticTest.cpp b/test/libsolidity/SemanticTest.cpp index 0afeaa577..7a06f0ba1 100644 --- a/test/libsolidity/SemanticTest.cpp +++ b/test/libsolidity/SemanticTest.cpp @@ -61,6 +61,8 @@ SemanticTest::SemanticTest( m_enforceGasCost(_enforceGasCost), m_enforceGasCostMinValue(_enforceGasCostMinValue) { + initializeBuiltins(); + string choice = m_reader.stringSetting("compileViaYul", "default"); if (choice == "also") { @@ -122,6 +124,15 @@ SemanticTest::SemanticTest( } } +void SemanticTest::initializeBuiltins() +{ + solAssert(m_builtins.count("smokeTest") == 0, ""); + m_builtins["smokeTest"] = [](FunctionCall const&) -> std::optional + { + return util::toBigEndian(u256(0x1234)); + }; +} + TestCase::TestResult SemanticTest::run(ostream& _stream, string const& _linePrefix, bool _formatted) { TestResult result = TestResult::Success; diff --git a/test/libsolidity/SemanticTest.h b/test/libsolidity/SemanticTest.h index 9520c1bc7..2bba341f4 100644 --- a/test/libsolidity/SemanticTest.h +++ b/test/libsolidity/SemanticTest.h @@ -78,6 +78,7 @@ public: private: TestResult runTest(std::ostream& _stream, std::string const& _linePrefix, bool _formatted, bool _compileViaYul, bool _compileToEwasm); bool checkGasCostExpectation(TestFunctionCall& io_test, bool _compileViaYul) const; + void initializeBuiltins(); SourceMap m_sources; std::size_t m_lineOffset; std::vector m_tests; diff --git a/test/libsolidity/semanticTests/builtins/smoke_test.sol b/test/libsolidity/semanticTests/builtins/smoke_test.sol new file mode 100644 index 000000000..d41b0e15e --- /dev/null +++ b/test/libsolidity/semanticTests/builtins/smoke_test.sol @@ -0,0 +1,7 @@ +contract SmokeTest { +} +// ==== +// compileViaYul: also +// ---- +// constructor() +// smokeTest -> 0x1234 diff --git a/test/libsolidity/util/TestFileParser.cpp b/test/libsolidity/util/TestFileParser.cpp index aa34c2844..19819ac1c 100644 --- a/test/libsolidity/util/TestFileParser.cpp +++ b/test/libsolidity/util/TestFileParser.cpp @@ -127,6 +127,8 @@ vector TestFileParser::parseFunctionCall tie(call.signature, lowLevelCall) = parseFunctionSignature(); if (lowLevelCall) call.kind = FunctionCall::Kind::LowLevel; + else if (isBuiltinFunction(call.signature)) + call.kind = FunctionCall::Kind::Builtin; if (accept(Token::Comma, true)) call.value = parseFunctionCallValue();