mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Generate separate metadata for the old and the new codegen
This commit is contained in:
@@ -344,24 +344,42 @@ BOOST_AUTO_TEST_CASE(metadata_viair)
|
||||
}
|
||||
)";
|
||||
|
||||
auto check = [](char const* _src, bool _viair)
|
||||
auto check = [](char const* _src, bool _viaIR)
|
||||
{
|
||||
CompilerStack compilerStack;
|
||||
compilerStack.setSources({{"", std::string(_src)}});
|
||||
compilerStack.setEVMVersion(solidity::test::CommonOptions::get().evmVersion());
|
||||
compilerStack.setOptimiserSettings(solidity::test::CommonOptions::get().optimize);
|
||||
compilerStack.setViaIR(_viair);
|
||||
compilerStack.setViaIR(_viaIR);
|
||||
BOOST_REQUIRE_MESSAGE(compilerStack.compile(), "Compiling contract failed");
|
||||
string metadata_str = compilerStack.metadata("test");
|
||||
|
||||
Json::Value metadata;
|
||||
BOOST_REQUIRE(util::jsonParseStrict(metadata_str, metadata));
|
||||
BOOST_REQUIRE(util::jsonParseStrict(compilerStack.metadata("test"), metadata));
|
||||
BOOST_CHECK(solidity::test::isValidMetadata(metadata));
|
||||
BOOST_CHECK(metadata.isMember("settings"));
|
||||
if (_viair)
|
||||
if (_viaIR)
|
||||
{
|
||||
BOOST_CHECK(metadata["settings"].isMember("viaIR"));
|
||||
BOOST_CHECK(metadata["settings"]["viaIR"].asBool());
|
||||
}
|
||||
else
|
||||
BOOST_CHECK(!metadata["settings"].isMember("viaIR"));
|
||||
|
||||
BOOST_CHECK(compilerStack.cborMetadata("test") == compilerStack.cborMetadata("test", _viaIR));
|
||||
BOOST_CHECK(compilerStack.cborMetadata("test") != compilerStack.cborMetadata("test", !_viaIR));
|
||||
|
||||
map<string, string> const parsedCBORMetadata = requireParsedCBORMetadata(
|
||||
compilerStack.runtimeObject("test").bytecode,
|
||||
CompilerStack::MetadataFormat::WithReleaseVersionTag
|
||||
);
|
||||
|
||||
if (_viaIR)
|
||||
{
|
||||
BOOST_CHECK(parsedCBORMetadata.count("experimental") == 1);
|
||||
BOOST_CHECK(parsedCBORMetadata.at("experimental") == "true");
|
||||
}
|
||||
else
|
||||
BOOST_CHECK(parsedCBORMetadata.count("experimental") == 0);
|
||||
};
|
||||
|
||||
check(sourceCode, true);
|
||||
|
||||
Reference in New Issue
Block a user