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

Side by Side Diff: pkg/front_end/lib/src/fasta/parser/parser.dart

Issue 2672993003: Handle type variables. (Closed)
Patch Set: Rebased on 15b143e0e898b882a8c038ac72d396bdc9efe68e. Created 3 years, 10 months 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
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 fasta.parser.parser; 5 library fasta.parser.parser;
6 6
7 import '../scanner.dart' show 7 import '../scanner.dart' show
8 ErrorToken; 8 ErrorToken;
9 9
10 import '../scanner/recover.dart' show 10 import '../scanner/recover.dart' show
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 if (isTopLevel) { 1103 if (isTopLevel) {
1104 listener.endTopLevelFields(fieldCount, start, semicolon); 1104 listener.endTopLevelFields(fieldCount, start, semicolon);
1105 } else { 1105 } else {
1106 listener.endFields(fieldCount, start, semicolon); 1106 listener.endFields(fieldCount, start, semicolon);
1107 } 1107 }
1108 return token; 1108 return token;
1109 } 1109 }
1110 1110
1111 Token parseTopLevelMethod(Token start, Link<Token> modifiers, Token type, 1111 Token parseTopLevelMethod(Token start, Link<Token> modifiers, Token type,
1112 Token getOrSet, Token name) { 1112 Token getOrSet, Token name) {
1113 listener.beginTopLevelMethod(start, name);
1113 Token externalModifier; 1114 Token externalModifier;
1114 // TODO(johnniwinther): Move error reporting to resolution to give more 1115 // TODO(johnniwinther): Move error reporting to resolution to give more
1115 // specific error messages. 1116 // specific error messages.
1116 for (Token modifier in modifiers) { 1117 for (Token modifier in modifiers) {
1117 if (externalModifier == null && optional('external', modifier)) { 1118 if (externalModifier == null && optional('external', modifier)) {
1118 externalModifier = modifier; 1119 externalModifier = modifier;
1119 } else { 1120 } else {
1120 reportRecoverableError( 1121 reportRecoverableError(
1121 modifier, ErrorKind.ExtraneousModifier, {'modifier': modifier}); 1122 modifier, ErrorKind.ExtraneousModifier, {'modifier': modifier});
1122 } 1123 }
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 var modifiers = identifiers.reverse(); 1509 var modifiers = identifiers.reverse();
1509 token = isField 1510 token = isField
1510 ? parseFields(start, modifiers, type, getOrSet, name, false) 1511 ? parseFields(start, modifiers, type, getOrSet, name, false)
1511 : parseMethod(start, modifiers, type, getOrSet, name); 1512 : parseMethod(start, modifiers, type, getOrSet, name);
1512 listener.endMember(); 1513 listener.endMember();
1513 return token; 1514 return token;
1514 } 1515 }
1515 1516
1516 Token parseMethod(Token start, Link<Token> modifiers, Token type, 1517 Token parseMethod(Token start, Link<Token> modifiers, Token type,
1517 Token getOrSet, Token name) { 1518 Token getOrSet, Token name) {
1519 listener.beginMethod(start, name);
1518 Token externalModifier; 1520 Token externalModifier;
1519 Token staticModifier; 1521 Token staticModifier;
1520 Token constModifier; 1522 Token constModifier;
1521 int modifierCount = 0; 1523 int modifierCount = 0;
1522 int allowedModifierCount = 1; 1524 int allowedModifierCount = 1;
1523 // TODO(johnniwinther): Move error reporting to resolution to give more 1525 // TODO(johnniwinther): Move error reporting to resolution to give more
1524 // specific error messages. 1526 // specific error messages.
1525 for (Token modifier in modifiers) { 1527 for (Token modifier in modifiers) {
1526 if (externalModifier == null && optional('external', modifier)) { 1528 if (externalModifier == null && optional('external', modifier)) {
1527 modifierCount++; 1529 modifierCount++;
(...skipping 1784 matching lines...) Expand 10 before | Expand all | Expand 10 after
3312 break; 3314 break;
3313 } 3315 }
3314 if (isRecoverable) { 3316 if (isRecoverable) {
3315 listener.handleRecoverableError(token, kind, arguments); 3317 listener.handleRecoverableError(token, kind, arguments);
3316 return null; 3318 return null;
3317 } else { 3319 } else {
3318 return listener.handleUnrecoverableError(token, kind, arguments); 3320 return listener.handleUnrecoverableError(token, kind, arguments);
3319 } 3321 }
3320 } 3322 }
3321 } 3323 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698