mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Allow including hashes of method signatures in --combined-json output
This commit is contained in:
parent
6b052249da
commit
2e816967d3
@ -481,6 +481,14 @@ Json::Value const& CompilerStack::natspec(Contract const& _contract, Documentati
|
|||||||
return *(*doc);
|
return *(*doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Json::Value CompilerStack::functionHashes(ContractDefinition const& _contract)
|
||||||
|
{
|
||||||
|
Json::Value functionHashes(Json::objectValue);
|
||||||
|
for (auto const& it: _contract.interfaceFunctions())
|
||||||
|
functionHashes[toHex(it.first.ref())] = it.second->externalSignature();
|
||||||
|
return functionHashes;
|
||||||
|
}
|
||||||
|
|
||||||
string const& CompilerStack::onChainMetadata(string const& _contractName) const
|
string const& CompilerStack::onChainMetadata(string const& _contractName) const
|
||||||
{
|
{
|
||||||
if (m_stackState != CompilationSuccessful)
|
if (m_stackState != CompilationSuccessful)
|
||||||
|
@ -177,6 +177,9 @@ public:
|
|||||||
/// @param type The type of the documentation to get.
|
/// @param type The type of the documentation to get.
|
||||||
/// Can be one of 4 types defined at @c DocumentationType
|
/// Can be one of 4 types defined at @c DocumentationType
|
||||||
Json::Value const& natspec(std::string const& _contractName, DocumentationType _type) const;
|
Json::Value const& natspec(std::string const& _contractName, DocumentationType _type) const;
|
||||||
|
|
||||||
|
Json::Value functionHashes(ContractDefinition const& _contract);
|
||||||
|
|
||||||
std::string const& onChainMetadata(std::string const& _contractName) const;
|
std::string const& onChainMetadata(std::string const& _contractName) const;
|
||||||
void useMetadataLiteralSources(bool _metadataLiteralSources) { m_metadataLiteralSources = _metadataLiteralSources; }
|
void useMetadataLiteralSources(bool _metadataLiteralSources) { m_metadataLiteralSources = _metadataLiteralSources; }
|
||||||
|
|
||||||
|
@ -165,6 +165,7 @@ static set<string> const g_combinedJsonArgs
|
|||||||
g_strNatspecUser,
|
g_strNatspecUser,
|
||||||
g_strNatspecDev,
|
g_strNatspecDev,
|
||||||
g_strOpcodes,
|
g_strOpcodes,
|
||||||
|
g_strSignatureHashes,
|
||||||
g_strSrcMap,
|
g_strSrcMap,
|
||||||
g_strSrcMapRuntime
|
g_strSrcMapRuntime
|
||||||
};
|
};
|
||||||
@ -887,6 +888,8 @@ void CommandLineInterface::handleCombinedJSON()
|
|||||||
auto map = m_compiler->runtimeSourceMapping(contractName);
|
auto map = m_compiler->runtimeSourceMapping(contractName);
|
||||||
contractData[g_strSrcMapRuntime] = map ? *map : "";
|
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))
|
if (requests.count(g_strNatspecDev))
|
||||||
contractData[g_strNatspecDev] = dev::jsonCompactPrint(m_compiler->natspec(contractName, DocumentationType::NatspecDev));
|
contractData[g_strNatspecDev] = dev::jsonCompactPrint(m_compiler->natspec(contractName, DocumentationType::NatspecDev));
|
||||||
if (requests.count(g_strNatspecUser))
|
if (requests.count(g_strNatspecUser))
|
||||||
|
Loading…
Reference in New Issue
Block a user