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_sources[path] = std::move(source);
} }
m_stackState = ParsedAndImported; m_stackState = ParsedAndImported;
m_importedSources = true; m_compilationSourceType = CompilationSourceType::SolidityAST;
storeContractDefinitions(); storeContractDefinitions();
} }
@ -1483,7 +1483,17 @@ string CompilerStack::createMetadata(Contract const& _contract, bool _forIR) con
{ {
Json::Value meta{Json::objectValue}; Json::Value meta{Json::objectValue};
meta["version"] = 1; 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; meta["compiler"]["version"] = VersionStringStrict;
/// All the source files (including self), which should be included in the metadata. /// All the source files (including self), which should be included in the metadata.

View File

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