mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Support --strict-assembly in CLI
This commit is contained in:
parent
c269a12c5e
commit
bc1fffb42f
@ -1,6 +1,7 @@
|
|||||||
### 0.4.20 (unreleased)
|
### 0.4.20 (unreleased)
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
* Commandline interface: Support strict mode of assembly with the ``--strict--assembly`` switch.
|
||||||
* Limit the number of warnings raised for creating abstract contracts.
|
* Limit the number of warnings raised for creating abstract contracts.
|
||||||
* Inline Assembly: Issue warning for using jump labels (already existed for jump instructions).
|
* Inline Assembly: Issue warning for using jump labels (already existed for jump instructions).
|
||||||
* Inline Assembly: Support some restricted tokens (return, byte, address) as identifiers in Julia mode.
|
* Inline Assembly: Support some restricted tokens (return, byte, address) as identifiers in Julia mode.
|
||||||
|
@ -97,6 +97,7 @@ static string const g_strJulia = "julia";
|
|||||||
static string const g_strLicense = "license";
|
static string const g_strLicense = "license";
|
||||||
static string const g_strLibraries = "libraries";
|
static string const g_strLibraries = "libraries";
|
||||||
static string const g_strLink = "link";
|
static string const g_strLink = "link";
|
||||||
|
static string const g_strMachine = "machine";
|
||||||
static string const g_strMetadata = "metadata";
|
static string const g_strMetadata = "metadata";
|
||||||
static string const g_strMetadataLiteral = "metadata-literal";
|
static string const g_strMetadataLiteral = "metadata-literal";
|
||||||
static string const g_strNatspecDev = "devdoc";
|
static string const g_strNatspecDev = "devdoc";
|
||||||
@ -112,6 +113,7 @@ static string const g_strSourceList = "sourceList";
|
|||||||
static string const g_strSrcMap = "srcmap";
|
static string const g_strSrcMap = "srcmap";
|
||||||
static string const g_strSrcMapRuntime = "srcmap-runtime";
|
static string const g_strSrcMapRuntime = "srcmap-runtime";
|
||||||
static string const g_strStandardJSON = "standard-json";
|
static string const g_strStandardJSON = "standard-json";
|
||||||
|
static string const g_strStrictAssembly = "strict-assembly";
|
||||||
static string const g_strPrettyJson = "pretty-json";
|
static string const g_strPrettyJson = "pretty-json";
|
||||||
static string const g_strVersion = "version";
|
static string const g_strVersion = "version";
|
||||||
|
|
||||||
@ -134,10 +136,10 @@ static string const g_argFormal = g_strFormal;
|
|||||||
static string const g_argGas = g_strGas;
|
static string const g_argGas = g_strGas;
|
||||||
static string const g_argHelp = g_strHelp;
|
static string const g_argHelp = g_strHelp;
|
||||||
static string const g_argInputFile = g_strInputFile;
|
static string const g_argInputFile = g_strInputFile;
|
||||||
static string const g_argJulia = "julia";
|
static string const g_argJulia = g_strJulia;
|
||||||
static string const g_argLibraries = g_strLibraries;
|
static string const g_argLibraries = g_strLibraries;
|
||||||
static string const g_argLink = g_strLink;
|
static string const g_argLink = g_strLink;
|
||||||
static string const g_argMachine = "machine";
|
static string const g_argMachine = g_strMachine;
|
||||||
static string const g_argMetadata = g_strMetadata;
|
static string const g_argMetadata = g_strMetadata;
|
||||||
static string const g_argMetadataLiteral = g_strMetadataLiteral;
|
static string const g_argMetadataLiteral = g_strMetadataLiteral;
|
||||||
static string const g_argNatspecDev = g_strNatspecDev;
|
static string const g_argNatspecDev = g_strNatspecDev;
|
||||||
@ -148,6 +150,7 @@ static string const g_argOptimizeRuns = g_strOptimizeRuns;
|
|||||||
static string const g_argOutputDir = g_strOutputDir;
|
static string const g_argOutputDir = g_strOutputDir;
|
||||||
static string const g_argSignatureHashes = g_strSignatureHashes;
|
static string const g_argSignatureHashes = g_strSignatureHashes;
|
||||||
static string const g_argStandardJSON = g_strStandardJSON;
|
static string const g_argStandardJSON = g_strStandardJSON;
|
||||||
|
static string const g_argStrictAssembly = g_strStrictAssembly;
|
||||||
static string const g_argVersion = g_strVersion;
|
static string const g_argVersion = g_strVersion;
|
||||||
static string const g_stdinFileName = g_stdinFileNameStr;
|
static string const g_stdinFileName = g_stdinFileNameStr;
|
||||||
|
|
||||||
@ -574,6 +577,10 @@ Allowed options)",
|
|||||||
g_argJulia.c_str(),
|
g_argJulia.c_str(),
|
||||||
"Switch to JULIA mode, ignoring all options except --machine and assumes input is JULIA."
|
"Switch to JULIA mode, ignoring all options except --machine and assumes input is JULIA."
|
||||||
)
|
)
|
||||||
|
(
|
||||||
|
g_argStrictAssembly.c_str(),
|
||||||
|
"Switch to strict assembly mode, ignoring all options except --machine and assumes input is strict assembly."
|
||||||
|
)
|
||||||
(
|
(
|
||||||
g_argMachine.c_str(),
|
g_argMachine.c_str(),
|
||||||
po::value<string>()->value_name(boost::join(g_machineArgs, ",")),
|
po::value<string>()->value_name(boost::join(g_machineArgs, ",")),
|
||||||
@ -737,13 +744,13 @@ bool CommandLineInterface::processInput()
|
|||||||
if (!parseLibraryOption(library))
|
if (!parseLibraryOption(library))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (m_args.count(g_argAssemble) || m_args.count(g_argJulia))
|
if (m_args.count(g_argAssemble) || m_args.count(g_argStrictAssembly) || m_args.count(g_argJulia))
|
||||||
{
|
{
|
||||||
// switch to assembly mode
|
// switch to assembly mode
|
||||||
m_onlyAssemble = true;
|
m_onlyAssemble = true;
|
||||||
using Input = AssemblyStack::Language;
|
using Input = AssemblyStack::Language;
|
||||||
using Machine = AssemblyStack::Machine;
|
using Machine = AssemblyStack::Machine;
|
||||||
Input inputLanguage = m_args.count(g_argJulia) ? Input::JULIA : Input::Assembly;
|
Input inputLanguage = m_args.count(g_argJulia) ? Input::JULIA : (m_args.count(g_argStrictAssembly) ? Input::StrictAssembly : Input::Assembly);
|
||||||
Machine targetMachine = Machine::EVM;
|
Machine targetMachine = Machine::EVM;
|
||||||
if (m_args.count(g_argMachine))
|
if (m_args.count(g_argMachine))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user