diff options
author | Lu Guanqun <guanqun.lu@gmail.com> | 2016-01-19 10:18:01 +0800 |
---|---|---|
committer | Lu Guanqun <guanqun.lu@gmail.com> | 2016-01-19 11:24:58 +0800 |
commit | df728581ce1bb05a338519efc6b834adfed68d90 (patch) | |
tree | bbb96a4c9da2d42e653e0cdb6d7ae6ae7c76ed17 | |
parent | c8886ed5cfc4f0b7bf4e8d52eb94da7137c9b70e (diff) | |
download | dexon-solidity-df728581ce1bb05a338519efc6b834adfed68d90.tar.gz dexon-solidity-df728581ce1bb05a338519efc6b834adfed68d90.tar.zst dexon-solidity-df728581ce1bb05a338519efc6b834adfed68d90.zip |
add another test case for continue not in loop
-rw-r--r-- | libsolidity/analysis/SyntaxChecker.cpp | 8 | ||||
-rw-r--r-- | test/libsolidity/SolidityNameAndTypeResolution.cpp | 15 |
2 files changed, 19 insertions, 4 deletions
diff --git a/libsolidity/analysis/SyntaxChecker.cpp b/libsolidity/analysis/SyntaxChecker.cpp index f1cdaf0f..e94ce9fe 100644 --- a/libsolidity/analysis/SyntaxChecker.cpp +++ b/libsolidity/analysis/SyntaxChecker.cpp @@ -40,24 +40,24 @@ void SyntaxChecker::syntaxError(SourceLocation const& _location, std::string con m_errors.push_back(err); } -bool SyntaxChecker::visit(WhileStatement const& _whileStatement) +bool SyntaxChecker::visit(WhileStatement const&) { m_inLoopDepth++; return true; } -void SyntaxChecker::endVisit(WhileStatement const& _whileStatement) +void SyntaxChecker::endVisit(WhileStatement const&) { m_inLoopDepth--; } -bool SyntaxChecker::visit(ForStatement const& _forStatement) +bool SyntaxChecker::visit(ForStatement const&) { m_inLoopDepth++; return true; } -void SyntaxChecker::endVisit(ForStatement const& _forStatement) +void SyntaxChecker::endVisit(ForStatement const&) { m_inLoopDepth--; } diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 11e78d94..a95021ea 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -2934,6 +2934,21 @@ BOOST_AUTO_TEST_CASE(continue_not_in_loop) BOOST_CHECK(expectError(text) == Error::Type::SyntaxError); } +BOOST_AUTO_TEST_CASE(continue_not_in_loop_2) +{ + char const* text = R"( + contract C { + function f() { + while (true) + { + } + continue; + } + } + )"; + BOOST_CHECK(expectError(text) == Error::Type::SyntaxError); +} + BOOST_AUTO_TEST_SUITE_END() } |