| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package com.google.dart.compiler.parser; | 5 package com.google.dart.compiler.parser; |
| 6 | 6 |
| 7 import com.google.common.annotations.VisibleForTesting; | 7 import com.google.common.annotations.VisibleForTesting; |
| 8 import com.google.common.collect.ImmutableSet; | 8 import com.google.common.collect.ImmutableSet; |
| 9 import com.google.common.io.CharStreams; | 9 import com.google.common.io.CharStreams; |
| 10 import com.google.dart.compiler.DartCompilationError; | 10 import com.google.dart.compiler.DartCompilationError; |
| (...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1365 // operator []= ( | 1365 // operator []= ( |
| 1366 if (peek(2).equals(Token.ASSIGN) && peek(3).equals(Token.LPAREN)) { | 1366 if (peek(2).equals(Token.ASSIGN) && peek(3).equals(Token.LPAREN)) { |
| 1367 return true; | 1367 return true; |
| 1368 } | 1368 } |
| 1369 } | 1369 } |
| 1370 return false; | 1370 return false; |
| 1371 } | 1371 } |
| 1372 | 1372 |
| 1373 if (peekPseudoKeyword(0, GETTER_KEYWORD) | 1373 if (peekPseudoKeyword(0, GETTER_KEYWORD) |
| 1374 || peekPseudoKeyword(0, SETTER_KEYWORD)) { | 1374 || peekPseudoKeyword(0, SETTER_KEYWORD)) { |
| 1375 boolean isGetter = peekPseudoKeyword(0, GETTER_KEYWORD); |
| 1375 next(); | 1376 next(); |
| 1376 // Using 'get' or 'set' as a field name is valid | 1377 // Using 'get' or 'set' as a field name is valid |
| 1377 if (peek(0).equals(Token.SEMICOLON) || peek(0).equals(Token.ASSIGN)) { | 1378 if (peek(0).equals(Token.SEMICOLON) || peek(0).equals(Token.ASSIGN)) { |
| 1378 return false; | 1379 return false; |
| 1379 } | 1380 } |
| 1380 // Using 'get' or 'set' as a method name is valid (but discouraged) | 1381 // Using 'get' or 'set' as a method name is valid (but discouraged) |
| 1381 if (peek(0).equals(Token.LPAREN)) { | 1382 if (peek(0).equals(Token.LPAREN)) { |
| 1382 return true; | 1383 return true; |
| 1383 } | 1384 } |
| 1384 // normal case: get foo ( | 1385 // normal case: get foo ( |
| 1385 if (peek(0).equals(Token.IDENTIFIER) && peek(1).equals(Token.LPAREN)) { | 1386 if (peek(0).equals(Token.IDENTIFIER) && (isGetter || peek(1).equals(Toke
n.LPAREN))) { |
| 1386 return true; | 1387 return true; |
| 1387 } | 1388 } |
| 1388 return false; | 1389 return false; |
| 1389 } | 1390 } |
| 1390 | 1391 |
| 1391 consume(Token.IDENTIFIER); | 1392 consume(Token.IDENTIFIER); |
| 1392 | 1393 |
| 1393 if (peek(0).equals(Token.PERIOD) && peek(1).equals(Token.IDENTIFIER)) { | 1394 if (peek(0).equals(Token.PERIOD) && peek(1).equals(Token.IDENTIFIER)) { |
| 1394 consume(Token.PERIOD); | 1395 consume(Token.PERIOD); |
| 1395 consume(Token.IDENTIFIER); | 1396 consume(Token.IDENTIFIER); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1550 done(null); | 1551 done(null); |
| 1551 } | 1552 } |
| 1552 | 1553 |
| 1553 // Parse the parameters definitions. | 1554 // Parse the parameters definitions. |
| 1554 List<DartParameter> parameters; | 1555 List<DartParameter> parameters; |
| 1555 if (modifiers.isGetter() && peek(0) != Token.LPAREN) { | 1556 if (modifiers.isGetter() && peek(0) != Token.LPAREN) { |
| 1556 // TODO: For now the parameters are optional so that both the old and new
style will be | 1557 // TODO: For now the parameters are optional so that both the old and new
style will be |
| 1557 // accepted, but eventually parameters should be disallowed. | 1558 // accepted, but eventually parameters should be disallowed. |
| 1558 parameters = new ArrayList<DartParameter>(); | 1559 parameters = new ArrayList<DartParameter>(); |
| 1559 } else { | 1560 } else { |
| 1560 if (modifiers.isSetter()) { | |
| 1561 // TODO: For now we optionally allow an equal sign before the formal par
ameter list, but | |
| 1562 // eventually it should be required. | |
| 1563 optional(Token.ASSIGN); | |
| 1564 } | |
| 1565 parameters = parseFormalParameterList(); | 1561 parameters = parseFormalParameterList(); |
| 1566 } | 1562 } |
| 1567 | 1563 |
| 1568 if (arity != -1) { | 1564 if (arity != -1) { |
| 1569 if (parameters.size() != arity) { | 1565 if (parameters.size() != arity) { |
| 1570 reportError(position(), ParserErrorCode.ILLEGAL_NUMBER_OF_PARAMETERS); | 1566 reportError(position(), ParserErrorCode.ILLEGAL_NUMBER_OF_PARAMETERS); |
| 1571 } | 1567 } |
| 1572 // In methods with required arity each parameter is required. | 1568 // In methods with required arity each parameter is required. |
| 1573 for (DartParameter parameter : parameters) { | 1569 for (DartParameter parameter : parameters) { |
| 1574 if (parameter.getModifiers().isNamed()) { | 1570 if (parameter.getModifiers().isNamed()) { |
| (...skipping 3289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4864 private void reportError(DartNode node, ErrorCode errorCode, Object... argumen
ts) { | 4860 private void reportError(DartNode node, ErrorCode errorCode, Object... argumen
ts) { |
| 4865 if (node != null) { | 4861 if (node != null) { |
| 4866 reportError(new DartCompilationError(node, errorCode, arguments)); | 4862 reportError(new DartCompilationError(node, errorCode, arguments)); |
| 4867 } | 4863 } |
| 4868 } | 4864 } |
| 4869 | 4865 |
| 4870 private boolean currentlyParsingToplevel() { | 4866 private boolean currentlyParsingToplevel() { |
| 4871 return !(isParsingInterface || isTopLevelAbstract || isParsingClass); | 4867 return !(isParsingInterface || isTopLevelAbstract || isParsingClass); |
| 4872 } | 4868 } |
| 4873 } | 4869 } |
| OLD | NEW |