| OLD | NEW |
| 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 | 8 import '../common/resolution.dart' show |
| 9 Parsing, | 9 Parsing, |
| 10 Resolution; | 10 Resolution; |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 420 return cachedNode; | 420 return cachedNode; |
| 421 } | 421 } |
| 422 | 422 |
| 423 ClassNode parseNode(Parsing parsing) { | 423 ClassNode parseNode(Parsing parsing) { |
| 424 if (cachedNode != null) return cachedNode; | 424 if (cachedNode != null) return cachedNode; |
| 425 DiagnosticReporter reporter = parsing.reporter; | 425 DiagnosticReporter reporter = parsing.reporter; |
| 426 reporter.withCurrentElement(this, () { | 426 reporter.withCurrentElement(this, () { |
| 427 parsing.measure(() { | 427 parsing.measure(() { |
| 428 MemberListener listener = new MemberListener( | 428 MemberListener listener = new MemberListener( |
| 429 parsing.getScannerOptionsFor(this), reporter, this); | 429 parsing.getScannerOptionsFor(this), reporter, this); |
| 430 Parser parser = new ClassElementParser(listener); | 430 Parser parser = new ClassElementParser(listener, parsing.parserOptions); |
| 431 try { | 431 try { |
| 432 Token token = parser.parseTopLevelDeclaration(beginToken); | 432 Token token = parser.parseTopLevelDeclaration(beginToken); |
| 433 assert(identical(token, endToken.next)); | 433 assert(identical(token, endToken.next)); |
| 434 cachedNode = listener.popNode(); | 434 cachedNode = listener.popNode(); |
| 435 assert( | 435 assert( |
| 436 invariant( | 436 invariant( |
| 437 beginToken, listener.nodes.isEmpty, | 437 beginToken, listener.nodes.isEmpty, |
| 438 message: "Non-empty listener stack: ${listener.nodes}")); | 438 message: "Non-empty listener stack: ${listener.nodes}")); |
| 439 } on ParserError { | 439 } on ParserError { |
| 440 // TODO(ahe): Often, a ParserError is thrown while parsing the class | 440 // TODO(ahe): Often, a ParserError is thrown while parsing the class |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 return parsing.measure(() { | 484 return parsing.measure(() { |
| 485 return reporter.withCurrentElement(element, () { | 485 return reporter.withCurrentElement(element, () { |
| 486 CompilationUnitElement unit = element.compilationUnit; | 486 CompilationUnitElement unit = element.compilationUnit; |
| 487 NodeListener listener = new NodeListener( | 487 NodeListener listener = new NodeListener( |
| 488 parsing.getScannerOptionsFor(element), reporter, unit); | 488 parsing.getScannerOptionsFor(element), reporter, unit); |
| 489 listener.memberErrors = listener.memberErrors.prepend(false); | 489 listener.memberErrors = listener.memberErrors.prepend(false); |
| 490 try { | 490 try { |
| 491 if (partial.hasParseError) { | 491 if (partial.hasParseError) { |
| 492 listener.suppressParseErrors = true; | 492 listener.suppressParseErrors = true; |
| 493 } | 493 } |
| 494 doParse(new Parser(listener)); | 494 doParse(new Parser(listener, parsing.parserOptions)); |
| 495 } on ParserError catch (e) { | 495 } on ParserError catch (e) { |
| 496 partial.hasParseError = true; | 496 partial.hasParseError = true; |
| 497 return new ErrorNode(element.position, e.reason); | 497 return new ErrorNode(element.position, e.reason); |
| 498 } | 498 } |
| 499 Node node = listener.popNode(); | 499 Node node = listener.popNode(); |
| 500 assert(listener.nodes.isEmpty); | 500 assert(listener.nodes.isEmpty); |
| 501 return node; | 501 return node; |
| 502 }); | 502 }); |
| 503 }); | 503 }); |
| 504 } | 504 } |
| OLD | NEW |