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

Side by Side Diff: lib/compiler/implementation/scanner/class_element_parser.dart

Issue 10696147: Patch methods in classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 class ClassElementParser extends PartialParser { 5 class ClassElementParser extends PartialParser {
6 ClassElementParser(Listener listener) : super(listener); 6 ClassElementParser(Listener listener) : super(listener);
7 7
8 Token parseClassBody(Token token) => fullParseClassBody(token); 8 Token parseClassBody(Token token) => fullParseClassBody(token);
9 } 9 }
10 10
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 recoverableError('illegal modifier', token: getOrSet); 84 recoverableError('illegal modifier', token: getOrSet);
85 } 85 }
86 kind = ElementKind.GENERATIVE_CONSTRUCTOR; 86 kind = ElementKind.GENERATIVE_CONSTRUCTOR;
87 } else if (getOrSet !== null) { 87 } else if (getOrSet !== null) {
88 kind = (getOrSet.stringValue === 'get') 88 kind = (getOrSet.stringValue === 'get')
89 ? ElementKind.GETTER : ElementKind.SETTER; 89 ? ElementKind.GETTER : ElementKind.SETTER;
90 } 90 }
91 Element memberElement = 91 Element memberElement =
92 new PartialFunctionElement(name, beginToken, getOrSet, endToken, 92 new PartialFunctionElement(name, beginToken, getOrSet, endToken,
93 kind, method.modifiers, enclosingElement); 93 kind, method.modifiers, enclosingElement);
94 enclosingElement.addMember(memberElement, listener); 94 addMember(memberElement);
95 } 95 }
96 96
97 void endFactoryMethod(Token factoryKeyword, Token periodBeforeName, 97 void endFactoryMethod(Token factoryKeyword, Token periodBeforeName,
98 Token endToken) { 98 Token endToken) {
99 super.endFactoryMethod(factoryKeyword, periodBeforeName, endToken); 99 super.endFactoryMethod(factoryKeyword, periodBeforeName, endToken);
100 FunctionExpression method = popNode(); 100 FunctionExpression method = popNode();
101 pushNode(null); 101 pushNode(null);
102 SourceString name = getMethodNameHack(method.name); 102 SourceString name = getMethodNameHack(method.name);
103 ElementKind kind = ElementKind.FUNCTION; 103 ElementKind kind = ElementKind.FUNCTION;
104 Element memberElement = 104 Element memberElement =
105 new PartialFunctionElement(name, factoryKeyword, null, endToken, 105 new PartialFunctionElement(name, factoryKeyword, null, endToken,
106 kind, method.modifiers, enclosingElement); 106 kind, method.modifiers, enclosingElement);
107 enclosingElement.addMember(memberElement, listener); 107 addMember(memberElement);
108 } 108 }
109 109
110 void endFields(int count, Token beginToken, Token endToken) { 110 void endFields(int count, Token beginToken, Token endToken) {
111 super.endFields(count, beginToken, endToken); 111 super.endFields(count, beginToken, endToken);
112 VariableDefinitions variableDefinitions = popNode(); 112 VariableDefinitions variableDefinitions = popNode();
113 Modifiers modifiers = variableDefinitions.modifiers; 113 Modifiers modifiers = variableDefinitions.modifiers;
114 pushNode(null); 114 pushNode(null);
115 void buildFieldElement(SourceString name, Element fields) { 115 void buildFieldElement(SourceString name, Element fields) {
116 Element element = new VariableElement( 116 Element element = new VariableElement(
117 name, fields, ElementKind.FIELD, enclosingElement); 117 name, fields, ElementKind.FIELD, enclosingElement);
118 enclosingElement.addMember(element, listener); 118 addMember(element);
119 } 119 }
120 buildFieldElements(modifiers, variableDefinitions.definitions, 120 buildFieldElements(modifiers, variableDefinitions.definitions,
121 enclosingElement, 121 enclosingElement,
122 buildFieldElement, beginToken, endToken); 122 buildFieldElement, beginToken, endToken);
123 } 123 }
124 124
125 void endInitializer(Token assignmentOperator) { 125 void endInitializer(Token assignmentOperator) {
126 pushNode(null); // Super expects an expression, but 126 pushNode(null); // Super expects an expression, but
127 // ClassElementParser just skips expressions. 127 // ClassElementParser just skips expressions.
128 super.endInitializer(assignmentOperator); 128 super.endInitializer(assignmentOperator);
129 } 129 }
130 130
131 void endInitializers(int count, Token beginToken, Token endToken) { 131 void endInitializers(int count, Token beginToken, Token endToken) {
132 pushNode(null); 132 pushNode(null);
133 } 133 }
134
135 void addMember(Element memberElement) {
136 enclosingElement.addMember(memberElement, listener);
137 }
134 } 138 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698