Merge pull request #14473 from ethereum/refactor-syntax-test-setup

Refactor syntax test setup
This commit is contained in:
Kamil Śliwak 2023-08-07 17:30:58 +02:00 committed by GitHub
commit 65587d87c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 20 additions and 22 deletions

View File

@ -75,6 +75,11 @@ AnalysisFramework::parseAnalyseAndReturnError(
return make_pair(&compiler().ast(""), std::move(errors)); return make_pair(&compiler().ast(""), std::move(errors));
} }
std::unique_ptr<CompilerStack> AnalysisFramework::createStack() const
{
return std::make_unique<CompilerStack>();
}
ErrorList AnalysisFramework::filterErrors(ErrorList const& _errorList, bool _includeWarningsAndInfos) const ErrorList AnalysisFramework::filterErrors(ErrorList const& _errorList, bool _includeWarningsAndInfos) const
{ {
ErrorList errors; ErrorList errors;

View File

@ -76,7 +76,7 @@ protected:
solidity::frontend::CompilerStack& compiler() solidity::frontend::CompilerStack& compiler()
{ {
if (!m_compiler) if (!m_compiler)
m_compiler = std::make_unique<solidity::frontend::CompilerStack>(); m_compiler = createStack();
return *m_compiler; return *m_compiler;
} }
@ -84,10 +84,14 @@ protected:
solidity::frontend::CompilerStack const& compiler() const solidity::frontend::CompilerStack const& compiler() const
{ {
if (!m_compiler) if (!m_compiler)
m_compiler = std::make_unique<solidity::frontend::CompilerStack>(); m_compiler = createStack();
return *m_compiler; return *m_compiler;
} }
/// Creates a new instance of @p CompilerStack. Override if your test case needs to pass in
/// custom constructor arguments.
virtual std::unique_ptr<CompilerStack> createStack() const;
private: private:
mutable std::unique_ptr<solidity::frontend::CompilerStack> m_compiler; mutable std::unique_ptr<solidity::frontend::CompilerStack> m_compiler;
}; };

View File

@ -127,14 +127,11 @@ SMTCheckerTest::SMTCheckerTest(string const& _filename): SyntaxTest(_filename, E
m_modelCheckerSettings.bmcLoopIterations = std::optional<unsigned>{bmcLoopIterations}; m_modelCheckerSettings.bmcLoopIterations = std::optional<unsigned>{bmcLoopIterations};
} }
TestCase::TestResult SMTCheckerTest::run(ostream& _stream, string const& _linePrefix, bool _formatted) void SMTCheckerTest::setupCompiler()
{ {
setupCompiler(); SyntaxTest::setupCompiler();
compiler().setModelCheckerSettings(m_modelCheckerSettings);
parseAndAnalyze();
filterObtainedErrors();
return conclude(_stream, _linePrefix, _formatted); compiler().setModelCheckerSettings(m_modelCheckerSettings);
} }
void SMTCheckerTest::filterObtainedErrors() void SMTCheckerTest::filterObtainedErrors()

View File

@ -38,8 +38,7 @@ public:
} }
SMTCheckerTest(std::string const& _filename); SMTCheckerTest(std::string const& _filename);
TestResult run(std::ostream& _stream, std::string const& _linePrefix = "", bool _formatted = false) override; void setupCompiler() override;
void filterObtainedErrors() override; void filterObtainedErrors() override;
void printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix) const override; void printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix) const override;

View File

@ -43,15 +43,6 @@ SyntaxTest::SyntaxTest(string const& _filename, langutil::EVMVersion _evmVersion
m_parserErrorRecovery = _parserErrorRecovery; m_parserErrorRecovery = _parserErrorRecovery;
} }
TestCase::TestResult SyntaxTest::run(ostream& _stream, string const& _linePrefix, bool _formatted)
{
setupCompiler();
parseAndAnalyze();
filterObtainedErrors();
return conclude(_stream, _linePrefix, _formatted);
}
string SyntaxTest::addPreamble(string const& _sourceCode) string SyntaxTest::addPreamble(string const& _sourceCode)
{ {
// Silence compiler version warning // Silence compiler version warning
@ -83,6 +74,8 @@ void SyntaxTest::setupCompiler()
void SyntaxTest::parseAndAnalyze() void SyntaxTest::parseAndAnalyze()
{ {
setupCompiler();
if (compiler().parse() && compiler().analyze()) if (compiler().parse() && compiler().analyze())
try try
{ {
@ -112,6 +105,8 @@ void SyntaxTest::parseAndAnalyze()
-1 -1
}); });
} }
filterObtainedErrors();
} }
void SyntaxTest::filterObtainedErrors() void SyntaxTest::filterObtainedErrors()

View File

@ -47,13 +47,11 @@ public:
} }
SyntaxTest(std::string const& _filename, langutil::EVMVersion _evmVersion, bool _parserErrorRecovery = false); SyntaxTest(std::string const& _filename, langutil::EVMVersion _evmVersion, bool _parserErrorRecovery = false);
TestResult run(std::ostream& _stream, std::string const& _linePrefix = "", bool _formatted = false) override;
protected: protected:
/// Returns @param _sourceCode prefixed with the version pragma and the SPDX license identifier. /// Returns @param _sourceCode prefixed with the version pragma and the SPDX license identifier.
static std::string addPreamble(std::string const& _sourceCode); static std::string addPreamble(std::string const& _sourceCode);
void setupCompiler(); virtual void setupCompiler();
void parseAndAnalyze() override; void parseAndAnalyze() override;
virtual void filterObtainedErrors(); virtual void filterObtainedErrors();