mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
CLI: Add checks for invalid output-modes for --import-asm-json.
This commit is contained in:
parent
00f034362b
commit
0c0853e635
@ -161,7 +161,11 @@ static bool coloredOutput(CommandLineOptions const& _options)
|
||||
|
||||
void CommandLineInterface::handleBinary(string const& _contract)
|
||||
{
|
||||
solAssert(m_options.input.mode == InputMode::Compiler || m_options.input.mode == InputMode::CompilerWithASTImport, "");
|
||||
solAssert(
|
||||
m_options.input.mode == InputMode::Compiler ||
|
||||
m_options.input.mode == InputMode::CompilerWithASTImport ||
|
||||
m_options.input.mode == InputMode::CompilerWithEvmAssemblyJsonImport, ""
|
||||
);
|
||||
|
||||
if (m_options.compiler.outputs.binary)
|
||||
{
|
||||
@ -187,7 +191,11 @@ void CommandLineInterface::handleBinary(string const& _contract)
|
||||
|
||||
void CommandLineInterface::handleOpcode(string const& _contract)
|
||||
{
|
||||
solAssert(m_options.input.mode == InputMode::Compiler || m_options.input.mode == InputMode::CompilerWithASTImport, "");
|
||||
solAssert(
|
||||
m_options.input.mode == InputMode::Compiler ||
|
||||
m_options.input.mode == InputMode::CompilerWithASTImport ||
|
||||
m_options.input.mode == InputMode::CompilerWithEvmAssemblyJsonImport, ""
|
||||
);
|
||||
|
||||
if (!m_options.output.dir.empty())
|
||||
createFile(m_compiler->filesystemFriendlyName(_contract) + ".opcode", evmasm::disassemble(m_compiler->object(_contract).bytecode));
|
||||
|
@ -455,6 +455,13 @@ void CommandLineParser::parseOutputSelection()
|
||||
CompilerOutputs::componentName(&CompilerOutputs::ewasm),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::ewasmIR),
|
||||
};
|
||||
static set<string> const evmAssemblyJsonImportModeOutputs = {
|
||||
CompilerOutputs::componentName(&CompilerOutputs::asm_),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::binary),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::binaryRuntime),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::opcodes),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::asmJson),
|
||||
};
|
||||
|
||||
switch (_mode)
|
||||
{
|
||||
@ -465,8 +472,9 @@ void CommandLineParser::parseOutputSelection()
|
||||
solAssert(false);
|
||||
case InputMode::Compiler:
|
||||
case InputMode::CompilerWithASTImport:
|
||||
case InputMode::CompilerWithEvmAssemblyJsonImport:
|
||||
return util::contains(compilerModeOutputs, _outputName);
|
||||
case InputMode::CompilerWithEvmAssemblyJsonImport:
|
||||
return util::contains(evmAssemblyJsonImportModeOutputs, _outputName);
|
||||
case InputMode::Assembler:
|
||||
return util::contains(assemblerModeOutputs, _outputName);
|
||||
case InputMode::StandardJson:
|
||||
@ -936,7 +944,6 @@ void CommandLineParser::processArgs()
|
||||
return;
|
||||
|
||||
checkMutuallyExclusive({g_strColor, g_strNoColor});
|
||||
|
||||
array<string, 9> const conflictingWithStopAfter{
|
||||
CompilerOutputs::componentName(&CompilerOutputs::binary),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::ir),
|
||||
@ -952,9 +959,27 @@ void CommandLineParser::processArgs()
|
||||
for (auto& option: conflictingWithStopAfter)
|
||||
checkMutuallyExclusive({g_strStopAfter, option});
|
||||
|
||||
array<string, 11> const conflictingWithAsmJsonImport{
|
||||
CompilerOutputs::componentName(&CompilerOutputs::ir),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::irOptimized),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::ewasm),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::ewasmIR),
|
||||
g_strGas,
|
||||
CompilerOutputs::componentName(&CompilerOutputs::metadata),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::natspecDev),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::natspecUser),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::signatureHashes),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::storageLayout),
|
||||
CompilerOutputs::componentName(&CompilerOutputs::astCompactJson),
|
||||
};
|
||||
|
||||
for (auto& option: conflictingWithAsmJsonImport)
|
||||
checkMutuallyExclusive({g_strImportEvmAssemblerJson, option});
|
||||
|
||||
if (
|
||||
m_options.input.mode != InputMode::Compiler &&
|
||||
m_options.input.mode != InputMode::CompilerWithASTImport &&
|
||||
m_options.input.mode != InputMode::CompilerWithEvmAssemblyJsonImport &&
|
||||
m_options.input.mode != InputMode::Assembler
|
||||
)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user