Parse "virtual" keyword

This commit is contained in:
Mathias Baumann
2019-11-13 13:28:01 +01:00
parent 8569fe7764
commit 7d4e4b6088
8 changed files with 85 additions and 9 deletions
+8
View File
@@ -118,6 +118,14 @@ while(0)
BOOST_AUTO_TEST_SUITE(SolidityParser)
BOOST_AUTO_TEST_CASE(reserved_keywords)
{
BOOST_CHECK(!TokenTraits::isReservedKeyword(Token::Identifier));
BOOST_CHECK(TokenTraits::isReservedKeyword(Token::Abstract));
BOOST_CHECK(TokenTraits::isReservedKeyword(Token::Unchecked));
BOOST_CHECK(!TokenTraits::isReservedKeyword(Token::Illegal));
}
BOOST_AUTO_TEST_CASE(unsatisfied_version)
{
char const* text = R"(
+1 -1
View File
@@ -208,7 +208,7 @@ BOOST_AUTO_TEST_CASE(type_identifiers)
// TypeType is tested with contract
auto emptyParams = make_shared<ParameterList>(SourceLocation(), std::vector<ASTPointer<VariableDeclaration>>());
ModifierDefinition mod(SourceLocation{}, make_shared<string>("modif"), {}, emptyParams, {}, {});
ModifierDefinition mod(SourceLocation{}, make_shared<string>("modif"), {}, emptyParams, {}, {}, {});
BOOST_CHECK_EQUAL(ModifierType(mod).identifier(), "t_modifier$__$");
SourceUnit su({}, {});
@@ -0,0 +1,10 @@
contract C
{
function foo() virtual public virtual {}
modifier modi() virtual virtual {_;}
int virtual public virtual variable;
}
// ----
// ParserError: (44-51): Virtual already specified.
// ParserError: (80-87): Virtual already specified.
// ParserError: (113-120): Virtual already specified.
@@ -0,0 +1,8 @@
contract C
{
function foo() public virtual {}
function foo2() virtual public {}
modifier modi() virtual {_;}
int public virtual variable;
int virtual public variable2;
}