mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #14473 from ethereum/refactor-syntax-test-setup
Refactor syntax test setup
This commit is contained in:
commit
65587d87c9
@ -75,6 +75,11 @@ AnalysisFramework::parseAnalyseAndReturnError(
|
||||
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 errors;
|
||||
|
@ -76,7 +76,7 @@ protected:
|
||||
solidity::frontend::CompilerStack& compiler()
|
||||
{
|
||||
if (!m_compiler)
|
||||
m_compiler = std::make_unique<solidity::frontend::CompilerStack>();
|
||||
m_compiler = createStack();
|
||||
return *m_compiler;
|
||||
}
|
||||
|
||||
@ -84,10 +84,14 @@ protected:
|
||||
solidity::frontend::CompilerStack const& compiler() const
|
||||
{
|
||||
if (!m_compiler)
|
||||
m_compiler = std::make_unique<solidity::frontend::CompilerStack>();
|
||||
m_compiler = createStack();
|
||||
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:
|
||||
mutable std::unique_ptr<solidity::frontend::CompilerStack> m_compiler;
|
||||
};
|
||||
|
@ -127,14 +127,11 @@ SMTCheckerTest::SMTCheckerTest(string const& _filename): SyntaxTest(_filename, E
|
||||
m_modelCheckerSettings.bmcLoopIterations = std::optional<unsigned>{bmcLoopIterations};
|
||||
}
|
||||
|
||||
TestCase::TestResult SMTCheckerTest::run(ostream& _stream, string const& _linePrefix, bool _formatted)
|
||||
void SMTCheckerTest::setupCompiler()
|
||||
{
|
||||
setupCompiler();
|
||||
compiler().setModelCheckerSettings(m_modelCheckerSettings);
|
||||
parseAndAnalyze();
|
||||
filterObtainedErrors();
|
||||
SyntaxTest::setupCompiler();
|
||||
|
||||
return conclude(_stream, _linePrefix, _formatted);
|
||||
compiler().setModelCheckerSettings(m_modelCheckerSettings);
|
||||
}
|
||||
|
||||
void SMTCheckerTest::filterObtainedErrors()
|
||||
|
@ -38,8 +38,7 @@ public:
|
||||
}
|
||||
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 printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix) const override;
|
||||
|
@ -43,15 +43,6 @@ SyntaxTest::SyntaxTest(string const& _filename, langutil::EVMVersion _evmVersion
|
||||
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)
|
||||
{
|
||||
// Silence compiler version warning
|
||||
@ -83,6 +74,8 @@ void SyntaxTest::setupCompiler()
|
||||
|
||||
void SyntaxTest::parseAndAnalyze()
|
||||
{
|
||||
setupCompiler();
|
||||
|
||||
if (compiler().parse() && compiler().analyze())
|
||||
try
|
||||
{
|
||||
@ -112,6 +105,8 @@ void SyntaxTest::parseAndAnalyze()
|
||||
-1
|
||||
});
|
||||
}
|
||||
|
||||
filterObtainedErrors();
|
||||
}
|
||||
|
||||
void SyntaxTest::filterObtainedErrors()
|
||||
|
@ -47,13 +47,11 @@ public:
|
||||
}
|
||||
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:
|
||||
/// Returns @param _sourceCode prefixed with the version pragma and the SPDX license identifier.
|
||||
static std::string addPreamble(std::string const& _sourceCode);
|
||||
|
||||
void setupCompiler();
|
||||
virtual void setupCompiler();
|
||||
void parseAndAnalyze() override;
|
||||
virtual void filterObtainedErrors();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user