| 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 library dart2js.parser; | 5 library dart2js.parser; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../tokens/keyword.dart' show | 8 import '../tokens/keyword.dart' show |
| 9 Keyword; | 9 Keyword; |
| 10 import '../tokens/precedence.dart' show | 10 import '../tokens/precedence.dart' show |
| (...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 924 return token; | 924 return token; |
| 925 } | 925 } |
| 926 | 926 |
| 927 Token parseTopLevelMethod(Token start, | 927 Token parseTopLevelMethod(Token start, |
| 928 Link<Token> modifiers, | 928 Link<Token> modifiers, |
| 929 Token type, | 929 Token type, |
| 930 Token getOrSet, | 930 Token getOrSet, |
| 931 Token name) { | 931 Token name) { |
| 932 | 932 |
| 933 Token externalModifier; | 933 Token externalModifier; |
| 934 // TODO(johnniwinther): Move error reporting to resolution to give more |
| 935 // specific error messages. |
| 934 for (Token modifier in modifiers) { | 936 for (Token modifier in modifiers) { |
| 935 if (externalModifier == null && optional('external', modifier)) { | 937 if (externalModifier == null && optional('external', modifier)) { |
| 936 externalModifier = modifier; | 938 externalModifier = modifier; |
| 937 } else { | 939 } else { |
| 938 listener.reportError( | 940 listener.reportError( |
| 939 modifier, MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); | 941 modifier, MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); |
| 940 } | 942 } |
| 941 } | 943 } |
| 942 if (externalModifier != null) { | 944 if (externalModifier != null) { |
| 943 parseModifier(externalModifier); | 945 parseModifier(externalModifier); |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1299 Token parseMethod(Token start, | 1301 Token parseMethod(Token start, |
| 1300 Link<Token> modifiers, | 1302 Link<Token> modifiers, |
| 1301 Token type, | 1303 Token type, |
| 1302 Token getOrSet, | 1304 Token getOrSet, |
| 1303 Token name) { | 1305 Token name) { |
| 1304 Token externalModifier; | 1306 Token externalModifier; |
| 1305 Token staticModifier; | 1307 Token staticModifier; |
| 1306 Token constModifier; | 1308 Token constModifier; |
| 1307 int modifierCount = 0; | 1309 int modifierCount = 0; |
| 1308 int allowedModifierCount = 1; | 1310 int allowedModifierCount = 1; |
| 1311 // TODO(johnniwinther): Move error reporting to resolution to give more |
| 1312 // specific error messages. |
| 1309 for (Token modifier in modifiers) { | 1313 for (Token modifier in modifiers) { |
| 1310 if (externalModifier == null && optional('external', modifier)) { | 1314 if (externalModifier == null && optional('external', modifier)) { |
| 1311 modifierCount++; | 1315 modifierCount++; |
| 1312 externalModifier = modifier; | 1316 externalModifier = modifier; |
| 1313 if (modifierCount != allowedModifierCount) { | 1317 if (modifierCount != allowedModifierCount) { |
| 1314 listener.reportError( | 1318 listener.reportError( |
| 1315 modifier, | 1319 modifier, |
| 1316 MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); | 1320 MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); |
| 1317 } | 1321 } |
| 1318 allowedModifierCount++; | 1322 allowedModifierCount++; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1330 if (modifierCount != allowedModifierCount) { | 1334 if (modifierCount != allowedModifierCount) { |
| 1331 listener.reportError( | 1335 listener.reportError( |
| 1332 modifier, | 1336 modifier, |
| 1333 MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); | 1337 MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); |
| 1334 } | 1338 } |
| 1335 } else { | 1339 } else { |
| 1336 listener.reportError( | 1340 listener.reportError( |
| 1337 modifier, MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); | 1341 modifier, MessageKind.EXTRANEOUS_MODIFIER, {'modifier': modifier}); |
| 1338 } | 1342 } |
| 1339 } | 1343 } |
| 1344 if (getOrSet != null && constModifier != null) { |
| 1345 listener.reportError( |
| 1346 constModifier, MessageKind.EXTRANEOUS_MODIFIER, |
| 1347 {'modifier': constModifier}); |
| 1348 } |
| 1340 parseModifierList(modifiers); | 1349 parseModifierList(modifiers); |
| 1341 | 1350 |
| 1342 if (type == null) { | 1351 if (type == null) { |
| 1343 listener.handleNoType(name); | 1352 listener.handleNoType(name); |
| 1344 } else { | 1353 } else { |
| 1345 parseReturnTypeOpt(type); | 1354 parseReturnTypeOpt(type); |
| 1346 } | 1355 } |
| 1347 Token token; | 1356 Token token; |
| 1348 if (optional('operator', name)) { | 1357 if (optional('operator', name)) { |
| 1349 token = parseOperatorName(name); | 1358 token = parseOperatorName(name); |
| 1350 if (staticModifier != null) { | 1359 if (staticModifier != null) { |
| 1351 // TODO(ahe): Consider a more specific error message. | |
| 1352 listener.reportError( | 1360 listener.reportError( |
| 1353 staticModifier, MessageKind.EXTRANEOUS_MODIFIER, | 1361 staticModifier, MessageKind.EXTRANEOUS_MODIFIER, |
| 1354 {'modifier': staticModifier}); | 1362 {'modifier': staticModifier}); |
| 1355 } | 1363 } |
| 1356 } else { | 1364 } else { |
| 1357 token = parseIdentifier(name); | 1365 token = parseIdentifier(name); |
| 1358 } | 1366 } |
| 1359 | 1367 |
| 1360 token = parseQualifiedRestOpt(token); | 1368 token = parseQualifiedRestOpt(token); |
| 1361 token = parseFormalParametersOpt(token); | 1369 token = parseFormalParametersOpt(token); |
| (...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2724 } | 2732 } |
| 2725 listener.handleContinueStatement(hasTarget, continueKeyword, token); | 2733 listener.handleContinueStatement(hasTarget, continueKeyword, token); |
| 2726 return expectSemicolon(token); | 2734 return expectSemicolon(token); |
| 2727 } | 2735 } |
| 2728 | 2736 |
| 2729 Token parseEmptyStatement(Token token) { | 2737 Token parseEmptyStatement(Token token) { |
| 2730 listener.handleEmptyStatement(token); | 2738 listener.handleEmptyStatement(token); |
| 2731 return expectSemicolon(token); | 2739 return expectSemicolon(token); |
| 2732 } | 2740 } |
| 2733 } | 2741 } |
| OLD | NEW |