Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: pkg/compiler/lib/src/parser/parser.dart

Issue 1512573002: Disallow const getters. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tests/language/const_getter_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | tests/language/const_getter_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698