mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			991 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			991 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <test/tools/ossfuzz/abiV2FuzzerCommon.h>
 | 
						|
 | 
						|
using namespace solidity::test::abiv2fuzzer;
 | 
						|
 | 
						|
SolidityCompilationFramework::SolidityCompilationFramework(langutil::EVMVersion _evmVersion)
 | 
						|
{
 | 
						|
	m_evmVersion = _evmVersion;
 | 
						|
}
 | 
						|
 | 
						|
solidity::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;
 | 
						|
	}
 | 
						|
	evmasm::LinkerObject obj = m_compiler.object(
 | 
						|
		_contractName.empty() ?
 | 
						|
		m_compiler.lastContractName() :
 | 
						|
		_contractName
 | 
						|
	);
 | 
						|
	return obj.bytecode;
 | 
						|
}
 |