Merge pull request #13578 from ethereum/imported-source-type-refactoring

[libsolidity] Refactor Compiler Stack imported source type.
This commit is contained in:
chriseth 2022-10-20 15:27:36 +02:00 committed by GitHub
commit 08af255658
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 3 deletions

View File

@ -411,7 +411,7 @@ void CompilerStack::importASTs(map<string, Json::Value> const& _sources)
m_sources[path] = std::move(source);
}
m_stackState = ParsedAndImported;
m_importedSources = true;
m_compilationSourceType = CompilationSourceType::SolidityAST;
storeContractDefinitions();
}
@ -1483,7 +1483,17 @@ string CompilerStack::createMetadata(Contract const& _contract, bool _forIR) con
{
Json::Value meta{Json::objectValue};
meta["version"] = 1;
meta["language"] = m_importedSources ? "SolidityAST" : "Solidity";
string sourceType;
switch (m_compilationSourceType)
{
case CompilationSourceType::Solidity:
sourceType = "Solidity";
break;
case CompilationSourceType::SolidityAST:
sourceType = "SolidityAST";
break;
}
meta["language"] = sourceType;
meta["compiler"]["version"] = VersionStringStrict;
/// All the source files (including self), which should be included in the metadata.

View File

@ -117,6 +117,13 @@ public:
None
};
enum class CompilationSourceType {
/// Regular compilation from Solidity source files.
Solidity,
/// Compilation from an imported Solidity AST.
SolidityAST
};
/// Creates a new compiler stack.
/// @param _readFile callback used to read files for import statements. Must return
/// and must not emit exceptions.
@ -514,7 +521,7 @@ private:
langutil::DebugInfoSelection m_debugInfoSelection = langutil::DebugInfoSelection::Default();
bool m_parserErrorRecovery = false;
State m_stackState = Empty;
bool m_importedSources = false;
CompilationSourceType m_compilationSourceType = CompilationSourceType::Solidity;
/// Whether or not there has been an error during processing.
/// If this is true, the stack will refuse to generate code.
bool m_hasError = false;