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

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

Issue 2655843002: Make remaining dart2js unit tests pass. (Closed)
Patch Set: Created 3 years, 11 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 21 matching lines...) Expand all
32 VariableList; 32 VariableList;
33 import '../elements/visitor.dart' show ElementVisitor; 33 import '../elements/visitor.dart' show ElementVisitor;
34 import 'package:dart_scanner/dart_scanner.dart' show Token; 34 import 'package:dart_scanner/dart_scanner.dart' show Token;
35 import 'package:dart_scanner/dart_scanner.dart' as Tokens show EOF_TOKEN; 35 import 'package:dart_scanner/dart_scanner.dart' as Tokens show EOF_TOKEN;
36 import '../tree/tree.dart'; 36 import '../tree/tree.dart';
37 import 'package:dart_parser/dart_parser.dart' 37 import 'package:dart_parser/dart_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 PartialParser extends ClassMemberParser { 42 class ClassElementParser extends ClassMemberParser {
43 PartialParser(Listener listener) 43 ClassElementParser(Listener listener)
44 : super(listener); 44 : super(listener);
45 45
46 Token parseFormalParameters(Token token) => skipFormalParameters(token); 46 Token parseFormalParameters(Token token) => skipFormalParameters(token);
47 } 47 }
48 48
49 abstract class PartialElement implements DeclarationSite { 49 abstract class PartialElement implements DeclarationSite {
50 Token beginToken; 50 Token beginToken;
51 Token endToken; 51 Token endToken;
52 52
53 bool hasParseError = false; 53 bool hasParseError = false;
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 return cachedNode; 373 return cachedNode;
374 } 374 }
375 375
376 ClassNode parseNode(ParsingContext parsing) { 376 ClassNode parseNode(ParsingContext parsing) {
377 if (cachedNode != null) return cachedNode; 377 if (cachedNode != null) return cachedNode;
378 DiagnosticReporter reporter = parsing.reporter; 378 DiagnosticReporter reporter = parsing.reporter;
379 reporter.withCurrentElement(this, () { 379 reporter.withCurrentElement(this, () {
380 parsing.measure(() { 380 parsing.measure(() {
381 MemberListener listener = new MemberListener( 381 MemberListener listener = new MemberListener(
382 parsing.getScannerOptionsFor(this), reporter, this); 382 parsing.getScannerOptionsFor(this), reporter, this);
383 Parser parser = new PartialParser(listener); 383 Parser parser = new ClassElementParser(listener);
384 try { 384 try {
385 Token token = parser.parseTopLevelDeclaration(beginToken); 385 Token token = parser.parseTopLevelDeclaration(beginToken);
386 assert(identical(token, endToken.next)); 386 assert(identical(token, endToken.next));
387 cachedNode = listener.popNode(); 387 cachedNode = listener.popNode();
388 assert(invariant(reporter.spanFromToken(beginToken), 388 assert(invariant(reporter.spanFromToken(beginToken),
389 listener.nodes.isEmpty, 389 listener.nodes.isEmpty,
390 message: "Non-empty listener stack: ${listener.nodes}")); 390 message: "Non-empty listener stack: ${listener.nodes}"));
391 } on ParserError { 391 } on ParserError {
392 // TODO(ahe): Often, a ParserError is thrown while parsing the class 392 // TODO(ahe): Often, a ParserError is thrown while parsing the class
393 // body. This means that the stack actually contains most of the 393 // body. This means that the stack actually contains most of the
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 } on ParserError catch (e) { 451 } on ParserError catch (e) {
452 partial.hasParseError = true; 452 partial.hasParseError = true;
453 return new ErrorNode(element.position, e.kind, e.arguments); 453 return new ErrorNode(element.position, e.kind, e.arguments);
454 } 454 }
455 Node node = listener.popNode(); 455 Node node = listener.popNode();
456 assert(listener.nodes.isEmpty); 456 assert(listener.nodes.isEmpty);
457 return node; 457 return node;
458 }); 458 });
459 }); 459 });
460 } 460 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/parser/diet_parser_task.dart ('k') | pkg/compiler/lib/src/patch_parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698