aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/AnalysisFramework.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-04-04 20:52:01 +0800
committerGitHub <noreply@github.com>2018-04-04 20:52:01 +0800
commit016f562348d5192b7d2f514a1aca961d4d665083 (patch)
treeab5f3421cb79a1f4caa193f988d755b2bef778b8 /test/libsolidity/AnalysisFramework.cpp
parent2fe5607a5a6618f27f4ed5c1effb4273c662ee3a (diff)
parent87ad337ae0c055c21476ef9961e52a9d7d3072bb (diff)
downloaddexon-solidity-016f562348d5192b7d2f514a1aca961d4d665083.tar
dexon-solidity-016f562348d5192b7d2f514a1aca961d4d665083.tar.gz
dexon-solidity-016f562348d5192b7d2f514a1aca961d4d665083.tar.bz2
dexon-solidity-016f562348d5192b7d2f514a1aca961d4d665083.tar.lz
dexon-solidity-016f562348d5192b7d2f514a1aca961d4d665083.tar.xz
dexon-solidity-016f562348d5192b7d2f514a1aca961d4d665083.tar.zst
dexon-solidity-016f562348d5192b7d2f514a1aca961d4d665083.zip
Merge pull request #3808 from ethereum/parserTests
SyntaxTests: extend syntax tests and isoltest to support parser error…
Diffstat (limited to 'test/libsolidity/AnalysisFramework.cpp')
-rw-r--r--test/libsolidity/AnalysisFramework.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/test/libsolidity/AnalysisFramework.cpp b/test/libsolidity/AnalysisFramework.cpp
index 4538757d..72b86767 100644
--- a/test/libsolidity/AnalysisFramework.cpp
+++ b/test/libsolidity/AnalysisFramework.cpp
@@ -56,12 +56,23 @@ AnalysisFramework::parseAnalyseAndReturnError(
m_compiler.analyze();
+ ErrorList errors = filterErrors(m_compiler.errors(), _reportWarnings);
+ if (errors.size() > 1 && !_allowMultipleErrors)
+ BOOST_FAIL("Multiple errors found: " + formatErrors());
+
+ return make_pair(&m_compiler.ast(""), std::move(errors));
+}
+
+ErrorList AnalysisFramework::filterErrors(ErrorList const& _errorList, bool _includeWarnings) const
+{
ErrorList errors;
- for (auto const& currentError: m_compiler.errors())
+ for (auto const& currentError: _errorList)
{
solAssert(currentError->comment(), "");
if (currentError->type() == Error::Type::Warning)
{
+ if (!_includeWarnings)
+ continue;
bool ignoreWarning = false;
for (auto const& filter: m_warningsToFilter)
if (currentError->comment()->find(filter) == 0)
@@ -73,17 +84,10 @@ AnalysisFramework::parseAnalyseAndReturnError(
continue;
}
- if (_reportWarnings || (currentError->type() != Error::Type::Warning))
- {
- if (!_allowMultipleErrors && !errors.empty())
- {
- BOOST_FAIL("Multiple errors found: " + formatErrors());
- }
- errors.emplace_back(std::move(currentError));
- }
+ errors.emplace_back(currentError);
}
- return make_pair(&m_compiler.ast(""), errors);
+ return errors;
}
SourceUnit const* AnalysisFramework::parseAndAnalyse(string const& _source)
@@ -110,7 +114,7 @@ ErrorList AnalysisFramework::expectError(std::string const& _source, bool _warni
return sourceAndErrors.second;
}
-string AnalysisFramework::formatErrors()
+string AnalysisFramework::formatErrors() const
{
string message;
for (auto const& error: m_compiler.errors())
@@ -118,7 +122,7 @@ string AnalysisFramework::formatErrors()
return message;
}
-string AnalysisFramework::formatError(Error const& _error)
+string AnalysisFramework::formatError(Error const& _error) const
{
return SourceReferenceFormatter::formatExceptionInformation(
_error,