diff options
author | Denton Liu <liu.denton+github@gmail.com> | 2016-08-15 22:58:01 +0800 |
---|---|---|
committer | Denton Liu <liu.denton+github@gmail.com> | 2016-08-19 22:34:50 +0800 |
commit | e00f802f725e284af453d70a48d450a4d5c9925e (patch) | |
tree | 26e5ef14ebbd9a47dbf6cd5e5ed95d2dba9776a0 | |
parent | 64cec9793a881e5a8ee77cb73e3f3599f330c044 (diff) | |
download | dexon-solidity-e00f802f725e284af453d70a48d450a4d5c9925e.tar.gz dexon-solidity-e00f802f725e284af453d70a48d450a4d5c9925e.tar.zst dexon-solidity-e00f802f725e284af453d70a48d450a4d5c9925e.zip |
Remove standard contracts
-rw-r--r-- | libsolidity/interface/CompilerStack.cpp | 33 | ||||
-rw-r--r-- | libsolidity/interface/CompilerStack.h | 5 | ||||
-rw-r--r-- | solc/CommandLineInterface.cpp | 2 | ||||
-rw-r--r-- | solc/jsonCompiler.cpp | 2 | ||||
-rw-r--r-- | test/contracts/AuctionRegistrar.cpp | 2 | ||||
-rw-r--r-- | test/contracts/FixedFeeRegistrar.cpp | 2 | ||||
-rw-r--r-- | test/contracts/Wallet.cpp | 2 | ||||
-rw-r--r-- | test/libsolidity/SolidityABIJSON.cpp | 2 | ||||
-rw-r--r-- | test/libsolidity/SolidityEndToEndTest.cpp | 15 | ||||
-rw-r--r-- | test/libsolidity/SolidityExecutionFramework.h | 3 | ||||
-rw-r--r-- | test/libsolidity/SolidityNatspecJSON.cpp | 2 |
11 files changed, 16 insertions, 54 deletions
diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 0e5ead2b..bd79bb73 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -42,26 +42,8 @@ using namespace std; using namespace dev; using namespace dev::solidity; -const map<string, string> StandardSources = map<string, string>{ - {"coin", R"(import "CoinReg";import "Config";import "configUser";contract coin is configUser{function coin(bytes3 name, uint denom) {CoinReg(Config(configAddr()).lookup(3)).register(name, denom);}})"}, - {"Coin", R"(contract Coin{function isApprovedFor(address _target,address _proxy)constant returns(bool _r){}function isApproved(address _proxy)constant returns(bool _r){}function sendCoinFrom(address _from,uint256 _val,address _to){}function coinBalanceOf(address _a)constant returns(uint256 _r){}function sendCoin(uint256 _val,address _to){}function coinBalance()constant returns(uint256 _r){}function approve(address _a){}})"}, - {"CoinReg", R"(contract CoinReg{function count()constant returns(uint256 r){}function info(uint256 i)constant returns(address addr,bytes3 name,uint256 denom){}function register(bytes3 name,uint256 denom){}function unregister(){}})"}, - {"configUser", R"(contract configUser{function configAddr()constant returns(address a){ return 0xc6d9d2cd449a754c494264e1809c50e34d64562b;}})"}, - {"Config", R"(contract Config{function lookup(uint256 service)constant returns(address a){}function kill(){}function unregister(uint256 id){}function register(uint256 id,address service){}})"}, - {"mortal", R"(import "owned";contract mortal is owned {function kill() { if (msg.sender == owner) suicide(owner); }})"}, - {"named", R"(import "Config";import "NameReg";import "configUser";contract named is configUser {function named(bytes32 name) {NameReg(Config(configAddr()).lookup(1)).register(name);}})"}, - {"NameReg", R"(contract NameReg{function register(bytes32 name){}function addressOf(bytes32 name)constant returns(address addr){}function unregister(){}function nameOf(address addr)constant returns(bytes32 name){}})"}, - {"owned", R"(contract owned{function owned(){owner = msg.sender;}modifier onlyowner(){if(msg.sender==owner)_}address owner;})"}, - {"service", R"(import "Config";import "configUser";contract service is configUser{function service(uint _n){Config(configAddr()).register(_n, this);}})"}, - {"std", R"(import "owned";import "mortal";import "Config";import "configUser";import "NameReg";import "named";)"} -}; - -CompilerStack::CompilerStack(bool _addStandardSources, ReadFileCallback const& _readFile): - m_readFile(_readFile), m_parseSuccessful(false) -{ - if (_addStandardSources) - addSources(StandardSources, true); // add them as libraries -} +CompilerStack::CompilerStack(ReadFileCallback const& _readFile): + m_readFile(_readFile), m_parseSuccessful(false) {} void CompilerStack::setRemappings(vector<string> const& _remappings) { @@ -81,7 +63,7 @@ void CompilerStack::setRemappings(vector<string> const& _remappings) swap(m_remappings, remappings); } -void CompilerStack::reset(bool _keepSources, bool _addStandardSources) +void CompilerStack::reset(bool _keepSources) { m_parseSuccessful = false; if (_keepSources) @@ -90,8 +72,6 @@ void CompilerStack::reset(bool _keepSources, bool _addStandardSources) else { m_sources.clear(); - if (_addStandardSources) - addSources(StandardSources, true); } m_globalContext.reset(); m_sourceOrder.clear(); @@ -616,10 +596,9 @@ CompilerStack::Contract const& CompilerStack::contract(string const& _contractNa if (_contractName.empty()) // try to find some user-supplied contract for (auto const& it: m_sources) - if (!StandardSources.count(it.first)) - for (ASTPointer<ASTNode> const& node: it.second.ast->nodes()) - if (auto contract = dynamic_cast<ContractDefinition const*>(node.get())) - contractName = contract->name(); + for (ASTPointer<ASTNode> const& node: it.second.ast->nodes()) + if (auto contract = dynamic_cast<ContractDefinition const*>(node.get())) + contractName = contract->name(); auto it = m_contracts.find(contractName); if (it == m_contracts.end()) BOOST_THROW_EXCEPTION(CompilerError() << errinfo_comment("Contract " + _contractName + " not found.")); diff --git a/libsolidity/interface/CompilerStack.h b/libsolidity/interface/CompilerStack.h index b3c4450c..da479638 100644 --- a/libsolidity/interface/CompilerStack.h +++ b/libsolidity/interface/CompilerStack.h @@ -85,14 +85,13 @@ public: /// Creates a new compiler stack. /// @param _readFile callback to used to read files for import statements. Should return - /// @param _addStandardSources Adds standard sources if @a _addStandardSources. - explicit CompilerStack(bool _addStandardSources = true, ReadFileCallback const& _readFile = ReadFileCallback()); + explicit CompilerStack(ReadFileCallback const& _readFile = ReadFileCallback()); /// Sets path remappings in the format "context:prefix=target" void setRemappings(std::vector<std::string> const& _remappings); /// Resets the compiler to a state where the sources are not parsed or even removed. - void reset(bool _keepSources = false, bool _addStandardSources = true); + void reset(bool _keepSources = false); /// Adds a source object (e.g. file) to the parser. After this, parse has to be called again. /// @returns true if a source object by the name already existed and was replaced. diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 08c08797..fbef56f0 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -560,7 +560,7 @@ bool CommandLineInterface::processInput() } }; - m_compiler.reset(new CompilerStack(m_args.count(g_argAddStandard) > 0, fileReader)); + m_compiler.reset(new CompilerStack(fileReader)); auto scannerFromSourceName = [&](string const& _sourceName) -> solidity::Scanner const& { return m_compiler->scanner(_sourceName); }; try { diff --git a/solc/jsonCompiler.cpp b/solc/jsonCompiler.cpp index 896a5922..5cdee2e2 100644 --- a/solc/jsonCompiler.cpp +++ b/solc/jsonCompiler.cpp @@ -159,7 +159,7 @@ string compile(StringMap const& _sources, bool _optimize, CStyleReadFileCallback return result; }; } - CompilerStack compiler(true, readCallback); + CompilerStack compiler(readCallback); auto scannerFromSourceName = [&](string const& _sourceName) -> solidity::Scanner const& { return compiler.scanner(_sourceName); }; bool success = false; try diff --git a/test/contracts/AuctionRegistrar.cpp b/test/contracts/AuctionRegistrar.cpp index 8860727d..b7ced0ed 100644 --- a/test/contracts/AuctionRegistrar.cpp +++ b/test/contracts/AuctionRegistrar.cpp @@ -231,7 +231,7 @@ protected: if (!s_compiledRegistrar) { m_optimize = true; - m_compiler.reset(false, m_addStandardSources); + m_compiler.reset(false); m_compiler.addSource("", registrarCode); ETH_TEST_REQUIRE_NO_THROW(m_compiler.compile(m_optimize, m_optimizeRuns), "Compiling contract failed"); s_compiledRegistrar.reset(new bytes(m_compiler.object("GlobalRegistrar").bytecode)); diff --git a/test/contracts/FixedFeeRegistrar.cpp b/test/contracts/FixedFeeRegistrar.cpp index 63db0531..3c9e60d5 100644 --- a/test/contracts/FixedFeeRegistrar.cpp +++ b/test/contracts/FixedFeeRegistrar.cpp @@ -132,7 +132,7 @@ protected: if (!s_compiledRegistrar) { m_optimize = true; - m_compiler.reset(false, m_addStandardSources); + m_compiler.reset(false); m_compiler.addSource("", registrarCode); ETH_TEST_REQUIRE_NO_THROW(m_compiler.compile(m_optimize, m_optimizeRuns), "Compiling contract failed"); s_compiledRegistrar.reset(new bytes(m_compiler.object("FixedFeeRegistrar").bytecode)); diff --git a/test/contracts/Wallet.cpp b/test/contracts/Wallet.cpp index 27bdb396..de70e920 100644 --- a/test/contracts/Wallet.cpp +++ b/test/contracts/Wallet.cpp @@ -446,7 +446,7 @@ protected: if (!s_compiledWallet) { m_optimize = true; - m_compiler.reset(false, m_addStandardSources); + m_compiler.reset(false); m_compiler.addSource("", walletCode); ETH_TEST_REQUIRE_NO_THROW(m_compiler.compile(m_optimize, m_optimizeRuns), "Compiling contract failed"); s_compiledWallet.reset(new bytes(m_compiler.object("Wallet").bytecode)); diff --git a/test/libsolidity/SolidityABIJSON.cpp b/test/libsolidity/SolidityABIJSON.cpp index 77b39978..b21e03eb 100644 --- a/test/libsolidity/SolidityABIJSON.cpp +++ b/test/libsolidity/SolidityABIJSON.cpp @@ -35,7 +35,7 @@ namespace test class JSONInterfaceChecker { public: - JSONInterfaceChecker(): m_compilerStack(false) {} + JSONInterfaceChecker(): m_compilerStack() {} void checkInterface(std::string const& _code, std::string const& _expectedInterfaceString) { diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index 4e6f68b0..6b39795b 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -2458,21 +2458,6 @@ BOOST_AUTO_TEST_CASE(function_modifier_for_constructor) BOOST_CHECK(callContractFunction("getData()") == encodeArgs(4 | 2)); } -BOOST_AUTO_TEST_CASE(use_std_lib) -{ - char const* sourceCode = R"( - import "mortal"; - contract Icarus is mortal { } - )"; - m_addStandardSources = true; - u256 amount(130 * ether); - compileAndRun(sourceCode, amount, "Icarus"); - u256 balanceBefore = balanceAt(m_sender); - BOOST_CHECK(callContractFunction("kill()") == bytes()); - BOOST_CHECK(!addressHasCode(m_contractAddress)); - BOOST_CHECK(balanceAt(m_sender) > balanceBefore); -} - BOOST_AUTO_TEST_CASE(crazy_elementary_typenames_on_stack) { char const* sourceCode = R"( diff --git a/test/libsolidity/SolidityExecutionFramework.h b/test/libsolidity/SolidityExecutionFramework.h index c34b00ec..f4bdc657 100644 --- a/test/libsolidity/SolidityExecutionFramework.h +++ b/test/libsolidity/SolidityExecutionFramework.h @@ -67,7 +67,7 @@ public: std::map<std::string, Address> const& _libraryAddresses = std::map<std::string, Address>() ) { - m_compiler.reset(false, m_addStandardSources); + m_compiler.reset(false); m_compiler.addSource("", _sourceCode); if (!m_compiler.compile(m_optimize, m_optimizeRuns)) { @@ -290,7 +290,6 @@ protected: size_t m_optimizeRuns = 200; bool m_optimize = false; - bool m_addStandardSources = false; dev::solidity::CompilerStack m_compiler; Address m_sender; Address m_contractAddress; diff --git a/test/libsolidity/SolidityNatspecJSON.cpp b/test/libsolidity/SolidityNatspecJSON.cpp index 8c0c2098..56572b43 100644 --- a/test/libsolidity/SolidityNatspecJSON.cpp +++ b/test/libsolidity/SolidityNatspecJSON.cpp @@ -37,7 +37,7 @@ namespace test class DocumentationChecker { public: - DocumentationChecker(): m_compilerStack(false) {} + DocumentationChecker(): m_compilerStack() {} void checkNatspec( std::string const& _code, |