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

Unified Diff: pkg/compiler/lib/src/parser/member_listener.dart

Issue 1311783012: Split parser/listener.dart, parser/class_element_listener.dart and tokens/token.dart into smaller l… (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/parser/member_listener.dart
diff --git a/pkg/compiler/lib/src/parser/member_listener.dart b/pkg/compiler/lib/src/parser/member_listener.dart
index 6a72ad0f3f3538f0615aaf2e261595566b897e7c..08656d3325b7f692a430a05880ab6b19d4707c8c 100644
--- a/pkg/compiler/lib/src/parser/member_listener.dart
+++ b/pkg/compiler/lib/src/parser/member_listener.dart
@@ -1,146 +1,35 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-library dart2js.parser.classes;
+library dart2js.parser.member_listener;
-import '../compiler.dart' show
- Compiler;
import '../diagnostics/diagnostic_listener.dart' show
DiagnosticListener;
import '../diagnostics/messages.dart' show
MessageKind;
-import '../diagnostics/invariant.dart' show
- invariant;
import '../elements/elements.dart' show
- CompilationUnitElement,
Element,
ElementKind,
Elements,
- MetadataAnnotation,
- STATE_NOT_STARTED,
- STATE_DONE;
+ MetadataAnnotation;
import '../elements/modelx.dart' show
ClassElementX,
ElementX,
FieldElementX,
VariableList;
-import '../elements/visitor.dart' show
- ElementVisitor;
import '../tokens/token.dart' show
Token;
import '../tree/tree.dart';
import '../util/util.dart' show
Link;
-import 'listener.dart' show
- Listener,
- NodeListener,
- ParserError,
+import 'partial_elements.dart' show
PartialConstructorElement,
- PartialElement,
PartialFunctionElement,
PartialMetadataAnnotation;
-import 'parser.dart' show
- Parser;
-import 'partial_parser.dart' show
- PartialParser;
-
-class ClassElementParser extends PartialParser {
- ClassElementParser(Listener listener) : super(listener);
-
- Token parseClassBody(Token token) => fullParseClassBody(token);
-}
-
-class PartialClassElement extends ClassElementX with PartialElement {
- ClassNode cachedNode;
-
- PartialClassElement(String name,
- Token beginToken,
- Token endToken,
- Element enclosing,
- int id)
- : super(name, enclosing, id, STATE_NOT_STARTED) {
- this.beginToken = beginToken;
- this.endToken = endToken;
- }
-
- void set supertypeLoadState(int state) {
- assert(state == STATE_NOT_STARTED || state == supertypeLoadState + 1);
- assert(state <= STATE_DONE);
- super.supertypeLoadState = state;
- }
-
- void set resolutionState(int state) {
- assert(state == STATE_NOT_STARTED || state == resolutionState + 1);
- assert(state <= STATE_DONE);
- super.resolutionState = state;
- }
-
- bool get hasNode => cachedNode != null;
-
- ClassNode get node {
- assert(invariant(this, cachedNode != null,
- message: "Node has not been computed for $this."));
- return cachedNode;
- }
-
- ClassNode parseNode(Compiler compiler) {
- if (cachedNode != null) return cachedNode;
- compiler.withCurrentElement(this, () {
- compiler.parser.measure(() {
- MemberListener listener = new MemberListener(compiler, this);
- Parser parser = new ClassElementParser(listener);
- try {
- Token token = parser.parseTopLevelDeclaration(beginToken);
- assert(identical(token, endToken.next));
- cachedNode = listener.popNode();
- assert(
- invariant(
- beginToken, listener.nodes.isEmpty,
- message: "Non-empty listener stack: ${listener.nodes}"));
- } on ParserError {
- // TODO(ahe): Often, a ParserError is thrown while parsing the class
- // body. This means that the stack actually contains most of the
- // information synthesized below. Consider rewriting the parser so
- // endClassDeclaration is called before parsing the class body.
- Identifier name = new Identifier(findMyName(beginToken));
- NodeList typeParameters = null;
- Node supertype = null;
- NodeList interfaces = listener.makeNodeList(0, null, null, ",");
- Token extendsKeyword = null;
- NodeList body = listener.makeNodeList(0, beginToken, endToken, null);
- cachedNode = new ClassNode(
- Modifiers.EMPTY, name, typeParameters, supertype, interfaces,
- beginToken, extendsKeyword, body, endToken);
- hasParseError = true;
- }
- });
- compiler.patchParser.measure(() {
- if (isPatched) {
- // TODO(lrn): Perhaps extract functionality so it doesn't
- // need compiler.
- compiler.patchParser.parsePatchClassNode(patch);
- }
- });
- });
- return cachedNode;
- }
-
- Token get position => beginToken;
-
- // TODO(johnniwinther): Ensure that modifiers are always available.
- Modifiers get modifiers =>
- cachedNode != null ? cachedNode.modifiers : Modifiers.EMPTY;
-
- accept(ElementVisitor visitor, arg) {
- return visitor.visitClassElement(this, arg);
- }
-
- PartialClassElement copyWithEnclosing(CompilationUnitElement enclosing) {
- return new PartialClassElement(name, beginToken, endToken, enclosing, id);
- }
-}
+import 'node_listener.dart' show
+ NodeListener;
class MemberListener extends NodeListener {
final ClassElementX enclosingClass;

Powered by Google App Engine
This is Rietveld 408576698