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

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

Issue 2521073003: Remove the ability in dart2js to turn off syntax-only generic methods. (Closed)
Patch Set: eernst Created 4 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
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 '../dart_types.dart' show DynamicType; 9 import '../dart_types.dart' show DynamicType;
10 import '../elements/elements.dart' 10 import '../elements/elements.dart'
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 return cachedNode; 367 return cachedNode;
368 } 368 }
369 369
370 ClassNode parseNode(ParsingContext parsing) { 370 ClassNode parseNode(ParsingContext parsing) {
371 if (cachedNode != null) return cachedNode; 371 if (cachedNode != null) return cachedNode;
372 DiagnosticReporter reporter = parsing.reporter; 372 DiagnosticReporter reporter = parsing.reporter;
373 reporter.withCurrentElement(this, () { 373 reporter.withCurrentElement(this, () {
374 parsing.measure(() { 374 parsing.measure(() {
375 MemberListener listener = new MemberListener( 375 MemberListener listener = new MemberListener(
376 parsing.getScannerOptionsFor(this), reporter, this); 376 parsing.getScannerOptionsFor(this), reporter, this);
377 Parser parser = new ClassElementParser(listener, parsing.parserOptions); 377 Parser parser = new ClassElementParser(listener);
378 try { 378 try {
379 Token token = parser.parseTopLevelDeclaration(beginToken); 379 Token token = parser.parseTopLevelDeclaration(beginToken);
380 assert(identical(token, endToken.next)); 380 assert(identical(token, endToken.next));
381 cachedNode = listener.popNode(); 381 cachedNode = listener.popNode();
382 assert(invariant(beginToken, listener.nodes.isEmpty, 382 assert(invariant(beginToken, listener.nodes.isEmpty,
383 message: "Non-empty listener stack: ${listener.nodes}")); 383 message: "Non-empty listener stack: ${listener.nodes}"));
384 } on ParserError { 384 } on ParserError {
385 // TODO(ahe): Often, a ParserError is thrown while parsing the class 385 // TODO(ahe): Often, a ParserError is thrown while parsing the class
386 // body. This means that the stack actually contains most of the 386 // body. This means that the stack actually contains most of the
387 // information synthesized below. Consider rewriting the parser so 387 // information synthesized below. Consider rewriting the parser so
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 return parsing.measure(() { 433 return parsing.measure(() {
434 return reporter.withCurrentElement(element, () { 434 return reporter.withCurrentElement(element, () {
435 CompilationUnitElement unit = element.compilationUnit; 435 CompilationUnitElement unit = element.compilationUnit;
436 NodeListener listener = new NodeListener( 436 NodeListener listener = new NodeListener(
437 parsing.getScannerOptionsFor(element), reporter, unit); 437 parsing.getScannerOptionsFor(element), reporter, unit);
438 listener.memberErrors = listener.memberErrors.prepend(false); 438 listener.memberErrors = listener.memberErrors.prepend(false);
439 try { 439 try {
440 if (partial.hasParseError) { 440 if (partial.hasParseError) {
441 listener.suppressParseErrors = true; 441 listener.suppressParseErrors = true;
442 } 442 }
443 doParse(new Parser(listener, parsing.parserOptions)); 443 doParse(new Parser(listener));
444 } on ParserError catch (e) { 444 } on ParserError catch (e) {
445 partial.hasParseError = true; 445 partial.hasParseError = true;
446 return new ErrorNode(element.position, e.reason); 446 return new ErrorNode(element.position, e.reason);
447 } 447 }
448 Node node = listener.popNode(); 448 Node node = listener.popNode();
449 assert(listener.nodes.isEmpty); 449 assert(listener.nodes.isEmpty);
450 return node; 450 return node;
451 }); 451 });
452 }); 452 });
453 } 453 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/parser/parser_task.dart ('k') | pkg/compiler/lib/src/parser/partial_parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698