aboutsummaryrefslogtreecommitdiffstats
path: root/Parser.cpp
diff options
context:
space:
mode:
authorChristian <c@ethdev.com>2015-01-14 01:12:19 +0800
committerChristian <c@ethdev.com>2015-01-14 01:12:30 +0800
commitb440d7e321793e0b053d3b467934a45f880863e0 (patch)
tree9144aea74cfd5c67188bd9a75ba9fb1673c0e0b1 /Parser.cpp
parentec022783c4ba2a319ce60dc818e4f0e0e8872093 (diff)
downloaddexon-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.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/Parser.cpp b/Parser.cpp
index e287319d..ebff3ba4 100644
--- a/Parser.cpp
+++ b/Parser.cpp
@@ -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())