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 |