aboutsummaryrefslogtreecommitdiffstats
path: root/solc
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-06-15 16:10:18 +0800
committerGitHub <noreply@github.com>2017-06-15 16:10:18 +0800
commit9084d48750afeed128e4d1b7cfe5e836d773d3f3 (patch)
tree83e7a9cc3375f0406bd6152e2963243c33849439 /solc
parent3cb71ac51624377174029e244b3cef950dedbfe8 (diff)
parent5f7bca94e5174738aea294c51f4bea2f8b450d0d (diff)
downloaddexon-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.cpp3
-rw-r--r--solc/jsonCompiler.cpp10
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 : "";