diff options
author | chriseth <chris@ethereum.org> | 2017-06-15 16:10:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-15 16:10:18 +0800 |
commit | 9084d48750afeed128e4d1b7cfe5e836d773d3f3 (patch) | |
tree | 83e7a9cc3375f0406bd6152e2963243c33849439 /solc | |
parent | 3cb71ac51624377174029e244b3cef950dedbfe8 (diff) | |
parent | 5f7bca94e5174738aea294c51f4bea2f8b450d0d (diff) | |
download | dexon-solidity-9084d48750afeed128e4d1b7cfe5e836d773d3f3.tar.gz dexon-solidity-9084d48750afeed128e4d1b7cfe5e836d773d3f3.tar.zst dexon-solidity-9084d48750afeed128e4d1b7cfe5e836d773d3f3.zip |
Merge pull request #2382 from ruchevits/combined-json-hashes
Allow including hashes of method signatures in --combined-json output
Diffstat (limited to 'solc')
-rw-r--r-- | solc/CommandLineInterface.cpp | 3 | ||||
-rw-r--r-- | solc/jsonCompiler.cpp | 10 |
2 files changed, 4 insertions, 9 deletions
diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 58c8bf73..e37922c6 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -165,6 +165,7 @@ static set<string> const g_combinedJsonArgs g_strNatspecUser, g_strNatspecDev, g_strOpcodes, + g_strSignatureHashes, g_strSrcMap, g_strSrcMapRuntime }; @@ -887,6 +888,8 @@ void CommandLineInterface::handleCombinedJSON() auto map = m_compiler->runtimeSourceMapping(contractName); contractData[g_strSrcMapRuntime] = map ? *map : ""; } + if (requests.count(g_strSignatureHashes)) + contractData[g_strSignatureHashes] = m_compiler->functionHashes(m_compiler->contractDefinition(contractName)); if (requests.count(g_strNatspecDev)) contractData[g_strNatspecDev] = dev::jsonCompactPrint(m_compiler->natspec(contractName, DocumentationType::NatspecDev)); if (requests.count(g_strNatspecUser)) diff --git a/solc/jsonCompiler.cpp b/solc/jsonCompiler.cpp index 353258a6..c01c8061 100644 --- a/solc/jsonCompiler.cpp +++ b/solc/jsonCompiler.cpp @@ -88,14 +88,6 @@ ReadFile::Callback wrapReadCallback(CStyleReadFileCallback _readCallback = nullp return readCallback; } -Json::Value functionHashes(ContractDefinition const& _contract) -{ - Json::Value functionHashes(Json::objectValue); - for (auto const& it: _contract.interfaceFunctions()) - functionHashes[it.second->externalSignature()] = toHex(it.first.ref()); - return functionHashes; -} - /// Translates a gas value as a string to a JSON number or null Json::Value gasToJson(Json::Value const& _value) { @@ -200,7 +192,7 @@ string compile(StringMap const& _sources, bool _optimize, CStyleReadFileCallback contractData["runtimeBytecode"] = compiler.runtimeObject(contractName).toHex(); contractData["opcodes"] = solidity::disassemble(compiler.object(contractName).bytecode); contractData["metadata"] = compiler.onChainMetadata(contractName); - contractData["functionHashes"] = functionHashes(compiler.contractDefinition(contractName)); + contractData["functionHashes"] = compiler.functionHashes(compiler.contractDefinition(contractName)); contractData["gasEstimates"] = estimateGas(compiler, contractName); auto sourceMap = compiler.sourceMapping(contractName); contractData["srcmap"] = sourceMap ? *sourceMap : ""; |