mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
37 lines
990 B
C++
37 lines
990 B
C++
|
#include <test/tools/ossfuzz/abiV2FuzzerCommon.h>
|
||
|
|
||
|
using namespace dev::test::abiv2fuzzer;
|
||
|
|
||
|
SolidityCompilationFramework::SolidityCompilationFramework(langutil::EVMVersion _evmVersion)
|
||
|
{
|
||
|
m_evmVersion = _evmVersion;
|
||
|
}
|
||
|
|
||
|
dev::bytes SolidityCompilationFramework::compileContract(
|
||
|
std::string const& _sourceCode,
|
||
|
std::string const& _contractName
|
||
|
)
|
||
|
{
|
||
|
std::string sourceCode = _sourceCode;
|
||
|
m_compiler.setSources({{"", sourceCode}});
|
||
|
m_compiler.setEVMVersion(m_evmVersion);
|
||
|
m_compiler.setOptimiserSettings(m_optimiserSettings);
|
||
|
if (!m_compiler.compile())
|
||
|
{
|
||
|
langutil::SourceReferenceFormatter formatter(std::cerr);
|
||
|
|
||
|
for (auto const& error: m_compiler.errors())
|
||
|
formatter.printExceptionInformation(
|
||
|
*error,
|
||
|
formatter.formatErrorInformation(*error)
|
||
|
);
|
||
|
std::cerr << "Compiling contract failed" << std::endl;
|
||
|
}
|
||
|
dev::eth::LinkerObject obj = m_compiler.runtimeObject(
|
||
|
_contractName.empty() ?
|
||
|
m_compiler.lastContractName() :
|
||
|
_contractName
|
||
|
);
|
||
|
return obj.bytecode;
|
||
|
}
|