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

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

Issue 2675103003: Refactor BackendHelpers to be reusageable with KernelWorldBuilder (Closed)
Patch Set: Updated cf. comments 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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.partial_elements; 5 library dart2js.parser.partial_elements;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/resolution.dart' show ParsingContext, Resolution; 8 import '../common/resolution.dart' show ParsingContext, Resolution;
9 import '../elements/resolution_types.dart' show ResolutionDynamicType; 9 import '../elements/resolution_types.dart' show ResolutionDynamicType;
10 import '../elements/elements.dart' 10 import '../elements/elements.dart'
(...skipping 22 matching lines...) Expand all
33 import '../elements/visitor.dart' show ElementVisitor; 33 import '../elements/visitor.dart' show ElementVisitor;
34 import 'package:front_end/src/fasta/scanner.dart' show Token; 34 import 'package:front_end/src/fasta/scanner.dart' show Token;
35 import 'package:front_end/src/fasta/scanner.dart' as Tokens show EOF_TOKEN; 35 import 'package:front_end/src/fasta/scanner.dart' as Tokens show EOF_TOKEN;
36 import '../tree/tree.dart'; 36 import '../tree/tree.dart';
37 import 'package:front_end/src/fasta/parser.dart' 37 import 'package:front_end/src/fasta/parser.dart'
38 show ClassMemberParser, Listener, Parser, ParserError; 38 show ClassMemberParser, Listener, Parser, ParserError;
39 import 'member_listener.dart' show MemberListener; 39 import 'member_listener.dart' show MemberListener;
40 import 'node_listener.dart' show NodeListener; 40 import 'node_listener.dart' show NodeListener;
41 41
42 class ClassElementParser extends ClassMemberParser { 42 class ClassElementParser extends ClassMemberParser {
43 ClassElementParser(Listener listener) 43 ClassElementParser(Listener listener) : super(listener);
44 : super(listener);
45 44
46 Token parseFormalParameters(Token token) => skipFormalParameters(token); 45 Token parseFormalParameters(Token token) => skipFormalParameters(token);
47 } 46 }
48 47
49 abstract class PartialElement implements DeclarationSite { 48 abstract class PartialElement implements DeclarationSite {
50 Token beginToken; 49 Token beginToken;
51 Token endToken; 50 Token endToken;
52 51
53 bool hasParseError = false; 52 bool hasParseError = false;
54 53
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 DiagnosticReporter reporter = parsing.reporter; 377 DiagnosticReporter reporter = parsing.reporter;
379 reporter.withCurrentElement(this, () { 378 reporter.withCurrentElement(this, () {
380 parsing.measure(() { 379 parsing.measure(() {
381 MemberListener listener = new MemberListener( 380 MemberListener listener = new MemberListener(
382 parsing.getScannerOptionsFor(this), reporter, this); 381 parsing.getScannerOptionsFor(this), reporter, this);
383 Parser parser = new ClassElementParser(listener); 382 Parser parser = new ClassElementParser(listener);
384 try { 383 try {
385 Token token = parser.parseTopLevelDeclaration(beginToken); 384 Token token = parser.parseTopLevelDeclaration(beginToken);
386 assert(identical(token, endToken.next)); 385 assert(identical(token, endToken.next));
387 cachedNode = listener.popNode(); 386 cachedNode = listener.popNode();
388 assert(invariant(reporter.spanFromToken(beginToken), 387 assert(invariant(
389 listener.nodes.isEmpty, 388 reporter.spanFromToken(beginToken), listener.nodes.isEmpty,
390 message: "Non-empty listener stack: ${listener.nodes}")); 389 message: "Non-empty listener stack: ${listener.nodes}"));
391 } on ParserError { 390 } on ParserError {
392 // TODO(ahe): Often, a ParserError is thrown while parsing the class 391 // TODO(ahe): Often, a ParserError is thrown while parsing the class
393 // body. This means that the stack actually contains most of the 392 // body. This means that the stack actually contains most of the
394 // information synthesized below. Consider rewriting the parser so 393 // information synthesized below. Consider rewriting the parser so
395 // endClassDeclaration is called before parsing the class body. 394 // endClassDeclaration is called before parsing the class body.
396 Identifier name = new Identifier(findMyName(beginToken)); 395 Identifier name = new Identifier(findMyName(beginToken));
397 NodeList typeParameters = null; 396 NodeList typeParameters = null;
398 Node supertype = null; 397 Node supertype = null;
399 NodeList interfaces = listener.makeNodeList(0, null, null, ","); 398 NodeList interfaces = listener.makeNodeList(0, null, null, ",");
400 Token extendsKeyword = null; 399 Token extendsKeyword = null;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 } on ParserError catch (e) { 450 } on ParserError catch (e) {
452 partial.hasParseError = true; 451 partial.hasParseError = true;
453 return new ErrorNode(element.position, e.kind, e.arguments); 452 return new ErrorNode(element.position, e.kind, e.arguments);
454 } 453 }
455 Node node = listener.popNode(); 454 Node node = listener.popNode();
456 assert(listener.nodes.isEmpty); 455 assert(listener.nodes.isEmpty);
457 return node; 456 return node;
458 }); 457 });
459 }); 458 });
460 } 459 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/parser/parser_task.dart ('k') | pkg/compiler/lib/src/resolution/members.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698