diff options
author | Christian <c@ethdev.com> | 2015-01-14 01:12:19 +0800 |
---|---|---|
committer | Christian <c@ethdev.com> | 2015-01-14 01:12:30 +0800 |
commit | b440d7e321793e0b053d3b467934a45f880863e0 (patch) | |
tree | 9144aea74cfd5c67188bd9a75ba9fb1673c0e0b1 /Parser.cpp | |
parent | ec022783c4ba2a319ce60dc818e4f0e0e8872093 (diff) | |
download | dexon-solidity-b440d7e321793e0b053d3b467934a45f880863e0.tar dexon-solidity-b440d7e321793e0b053d3b467934a45f880863e0.tar.gz dexon-solidity-b440d7e321793e0b053d3b467934a45f880863e0.tar.bz2 dexon-solidity-b440d7e321793e0b053d3b467934a45f880863e0.tar.lz dexon-solidity-b440d7e321793e0b053d3b467934a45f880863e0.tar.xz dexon-solidity-b440d7e321793e0b053d3b467934a45f880863e0.tar.zst dexon-solidity-b440d7e321793e0b053d3b467934a45f880863e0.zip |
Specify value for contract creation.
Diffstat (limited to 'Parser.cpp')
-rw-r--r-- | Parser.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
@@ -466,17 +466,7 @@ ASTPointer<Expression> Parser::parseUnaryExpression() { ASTNodeFactory nodeFactory(*this); Token::Value token = m_scanner->getCurrentToken(); - if (token == Token::NEW) - { - expectToken(Token::NEW); - ASTPointer<Identifier> contractName = ASTNodeFactory(*this).createNode<Identifier>(expectIdentifierToken()); - expectToken(Token::LPAREN); - vector<ASTPointer<Expression>> arguments(parseFunctionCallArguments()); - expectToken(Token::RPAREN); - nodeFactory.markEndPosition(); - return nodeFactory.createNode<NewExpression>(contractName, arguments); - } - else if (Token::isUnaryOp(token) || Token::isCountOp(token)) + if (Token::isUnaryOp(token) || Token::isCountOp(token)) { // prefix expression m_scanner->next(); @@ -500,7 +490,17 @@ ASTPointer<Expression> Parser::parseUnaryExpression() ASTPointer<Expression> Parser::parseLeftHandSideExpression() { ASTNodeFactory nodeFactory(*this); - ASTPointer<Expression> expression = parsePrimaryExpression(); + ASTPointer<Expression> expression; + if (m_scanner->getCurrentToken() == Token::NEW) + { + expectToken(Token::NEW); + ASTPointer<Identifier> contractName = ASTNodeFactory(*this).createNode<Identifier>(expectIdentifierToken()); + nodeFactory.markEndPosition(); + expression = nodeFactory.createNode<NewExpression>(contractName); + } + else + expression = parsePrimaryExpression(); + while (true) { switch (m_scanner->getCurrentToken()) |