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

Unified Diff: frog/leg/scanner/class_element_parser.dart

Issue 9873021: Move frog/leg to lib/compiler/implementation. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 9 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
« no previous file with comments | « frog/leg/scanner/byte_strings.dart ('k') | frog/leg/scanner/d8_scanner_bench.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: frog/leg/scanner/class_element_parser.dart
===================================================================
--- frog/leg/scanner/class_element_parser.dart (revision 5925)
+++ frog/leg/scanner/class_element_parser.dart (working copy)
@@ -1,133 +0,0 @@
-// Copyright (c) 2011, 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.
-
-class ClassElementParser extends PartialParser {
- ClassElementParser(Listener listener) : super(listener);
-
- Token parseClassBody(Token token) => fullParseClassBody(token);
-}
-
-class PartialClassElement extends ClassElement {
- final Token beginToken;
- final Token endToken;
- Node cachedNode;
-
- PartialClassElement(SourceString name,
- Token this.beginToken,
- Token this.endToken,
- CompilationUnitElement enclosing)
- : super(name, enclosing);
-
- ClassNode parseNode(DiagnosticListener diagnosticListener) {
- if (cachedNode != null) return cachedNode;
- MemberListener listener = new MemberListener(diagnosticListener, this);
- Parser parser = new ClassElementParser(listener);
- Token token = parser.parseTopLevelDeclaration(beginToken);
- assert(token === endToken.next);
- cachedNode = listener.popNode();
- assert(listener.nodes.isEmpty());
- return cachedNode;
- }
-
- Token position() => beginToken;
-
- bool isInterface() => beginToken.stringValue === "interface";
-}
-
-class MemberListener extends NodeListener {
- final ClassElement enclosingElement;
-
- MemberListener(DiagnosticListener listener,
- Element enclosingElement)
- : this.enclosingElement = enclosingElement,
- super(listener, enclosingElement.getCompilationUnit());
-
- bool isConstructorName(Node nameNode) {
- if (enclosingElement === null ||
- enclosingElement.kind != ElementKind.CLASS) {
- return false;
- }
- SourceString name;
- if (nameNode.asIdentifier() !== null) {
- name = nameNode.asIdentifier().source;
- } else {
- Send send = nameNode.asSend();
- name = send.receiver.asIdentifier().source;
- }
- return enclosingElement.name == name;
- }
-
- SourceString getMethodNameHack(Node methodName) {
- Send send = methodName.asSend();
- if (send === null) return methodName.asIdentifier().source;
- Identifier receiver = send.receiver.asIdentifier();
- Identifier selector = send.selector.asIdentifier();
- if (selector.asOperator() !== null) {
- return Elements.constructOperatorName(receiver.source, selector.source);
- } else {
- return Elements.constructConstructorName(receiver.source,
- selector.source);
- }
- }
-
- void endMethod(Token getOrSet, Token beginToken, Token endToken) {
- super.endMethod(getOrSet, beginToken, endToken);
- FunctionExpression method = popNode();
- pushNode(null);
- bool isConstructor = isConstructorName(method.name);
- SourceString name = getMethodNameHack(method.name);
- ElementKind kind = ElementKind.FUNCTION;
- if (isConstructor) {
- if (getOrSet !== null) {
- recoverableError('illegal modifier', token: getOrSet);
- }
- kind = ElementKind.GENERATIVE_CONSTRUCTOR;
- } else if (getOrSet !== null) {
- kind = (getOrSet.stringValue === 'get')
- ? ElementKind.GETTER : ElementKind.SETTER;
- }
- Element memberElement =
- new PartialFunctionElement(name, beginToken, getOrSet, endToken,
- kind, method.modifiers, enclosingElement);
- enclosingElement.addMember(memberElement, listener);
- }
-
- void endFactoryMethod(Token factoryKeyword, Token periodBeforeName,
- Token endToken) {
- super.endFactoryMethod(factoryKeyword, periodBeforeName, endToken);
- FunctionExpression method = popNode();
- pushNode(null);
- SourceString name = getMethodNameHack(method.name);
- ElementKind kind = ElementKind.FUNCTION;
- Element memberElement =
- new PartialFunctionElement(name, factoryKeyword, null, endToken,
- kind, method.modifiers, enclosingElement);
- enclosingElement.addMember(memberElement, listener);
- }
-
- void endFields(int count, Token beginToken, Token endToken) {
- super.endFields(count, beginToken, endToken);
- VariableDefinitions variableDefinitions = popNode();
- Modifiers modifiers = variableDefinitions.modifiers;
- pushNode(null);
- void buildFieldElement(SourceString name, Element fields) {
- Element element = new VariableElement(
- name, fields, ElementKind.FIELD, enclosingElement);
- enclosingElement.addMember(element, listener);
- }
- buildFieldElements(modifiers, variableDefinitions.definitions,
- enclosingElement,
- buildFieldElement, beginToken, endToken);
- }
-
- void endInitializer(Token assignmentOperator) {
- pushNode(null); // Super expects an expression, but
- // ClassElementParser just skips expressions.
- super.endInitializer(assignmentOperator);
- }
-
- void endInitializers(int count, Token beginToken, Token endToken) {
- pushNode(null);
- }
-}
« no previous file with comments | « frog/leg/scanner/byte_strings.dart ('k') | frog/leg/scanner/d8_scanner_bench.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698