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

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

Issue 2742283003: Fix for parsing named constructors with Fasta. (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | no next file » | 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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.analyzer.ast_builder; 5 library fasta.analyzer.ast_builder;
6 6
7 import 'package:analyzer/analyzer.dart'; 7 import 'package:analyzer/analyzer.dart';
8 import 'package:analyzer/dart/ast/ast_factory.dart' show AstFactory; 8 import 'package:analyzer/dart/ast/ast_factory.dart' show AstFactory;
9 import 'package:analyzer/dart/ast/standard_ast_factory.dart' as standard; 9 import 'package:analyzer/dart/ast/standard_ast_factory.dart' as standard;
10 import 'package:analyzer/dart/ast/token.dart' as analyzer show Token; 10 import 'package:analyzer/dart/ast/token.dart' as analyzer show Token;
(...skipping 1276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 ConstructorName redirectedConstructor = null; // TODO(paulberry) 1287 ConstructorName redirectedConstructor = null; // TODO(paulberry)
1288 List<ConstructorInitializer> initializers = null; // TODO(paulberry) 1288 List<ConstructorInitializer> initializers = null; // TODO(paulberry)
1289 Token separator = null; // TODO(paulberry) 1289 Token separator = null; // TODO(paulberry)
1290 FormalParameterList parameters = pop(); 1290 FormalParameterList parameters = pop();
1291 TypeParameterList typeParameters = pop(); // TODO(paulberry) 1291 TypeParameterList typeParameters = pop(); // TODO(paulberry)
1292 var name = pop(); 1292 var name = pop();
1293 TypeAnnotation returnType = pop(); // TODO(paulberry) 1293 TypeAnnotation returnType = pop(); // TODO(paulberry)
1294 _Modifiers modifiers = pop(); 1294 _Modifiers modifiers = pop();
1295 List<Annotation> metadata = pop(); 1295 List<Annotation> metadata = pop();
1296 Comment comment = pop(); 1296 Comment comment = pop();
1297 Token period; 1297
1298 void unnamedConstructor( 1298 void constructor(SimpleIdentifier returnType, analyzer.Token period,
1299 SimpleIdentifier returnType, SimpleIdentifier name) { 1299 SimpleIdentifier name) {
1300 push(ast.constructorDeclaration( 1300 push(ast.constructorDeclaration(
1301 comment, 1301 comment,
1302 metadata, 1302 metadata,
1303 toAnalyzerToken(modifiers?.externalKeyword), 1303 toAnalyzerToken(modifiers?.externalKeyword),
1304 toAnalyzerToken(modifiers?.finalConstOrVarKeyword), 1304 toAnalyzerToken(modifiers?.finalConstOrVarKeyword),
1305 null, // TODO(paulberry): factoryKeyword 1305 null, // TODO(paulberry): factoryKeyword
1306 returnType, 1306 returnType,
1307 toAnalyzerToken(period), 1307 period,
1308 name, 1308 name,
1309 parameters, 1309 parameters,
1310 toAnalyzerToken(separator), 1310 toAnalyzerToken(separator),
1311 initializers, 1311 initializers,
1312 redirectedConstructor, 1312 redirectedConstructor,
1313 body)); 1313 body));
1314 } 1314 }
1315 1315
1316 void method(Token operatorKeyword, SimpleIdentifier name) { 1316 void method(Token operatorKeyword, SimpleIdentifier name) {
1317 push(ast.methodDeclaration( 1317 push(ast.methodDeclaration(
1318 comment, 1318 comment,
1319 metadata, 1319 metadata,
1320 toAnalyzerToken(modifiers?.externalKeyword), 1320 toAnalyzerToken(modifiers?.externalKeyword),
1321 toAnalyzerToken( 1321 toAnalyzerToken(
1322 modifiers?.abstractKeyword ?? modifiers?.staticKeyword), 1322 modifiers?.abstractKeyword ?? modifiers?.staticKeyword),
1323 returnType, 1323 returnType,
1324 toAnalyzerToken(getOrSet), 1324 toAnalyzerToken(getOrSet),
1325 toAnalyzerToken(operatorKeyword), 1325 toAnalyzerToken(operatorKeyword),
1326 name, 1326 name,
1327 typeParameters, 1327 typeParameters,
1328 parameters, 1328 parameters,
1329 body)); 1329 body));
1330 } 1330 }
1331 1331
1332 if (name is SimpleIdentifier) { 1332 if (name is SimpleIdentifier) {
1333 if (name.name == className) { 1333 if (name.name == className) {
1334 unnamedConstructor(name, null); 1334 constructor(name, null, null);
1335 } else { 1335 } else {
1336 method(null, name); 1336 method(null, name);
1337 } 1337 }
1338 } else if (name is _OperatorName) { 1338 } else if (name is _OperatorName) {
1339 method(name.operatorKeyword, name.name); 1339 method(name.operatorKeyword, name.name);
1340 } else if (name is PrefixedIdentifier) {
1341 constructor(name.prefix, name.period, name.identifier);
1340 } else { 1342 } else {
1341 throw new UnimplementedError(); 1343 throw new UnimplementedError();
1342 } 1344 }
1343 } 1345 }
1344 1346
1345 @override 1347 @override
1346 void endMember() { 1348 void endMember() {
1347 debugEvent("Member"); 1349 debugEvent("Member");
1348 } 1350 }
1349 1351
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1586 } else if (identical('static', s)) { 1588 } else if (identical('static', s)) {
1587 staticKeyword = token; 1589 staticKeyword = token;
1588 } else if (identical('var', s)) { 1590 } else if (identical('var', s)) {
1589 finalConstOrVarKeyword = token; 1591 finalConstOrVarKeyword = token;
1590 } else { 1592 } else {
1591 internalError('Unhandled modifier: $s'); 1593 internalError('Unhandled modifier: $s');
1592 } 1594 }
1593 } 1595 }
1594 } 1596 }
1595 } 1597 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698