| OLD | NEW |
| 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 part of scanner; | 5 part of scanner; |
| 6 | 6 |
| 7 class ClassElementParser extends PartialParser { | 7 class ClassElementParser extends PartialParser { |
| 8 ClassElementParser(Listener listener) : super(listener); | 8 ClassElementParser(Listener listener) : super(listener); |
| 9 | 9 |
| 10 Token parseClassBody(Token token) => fullParseClassBody(token); | 10 Token parseClassBody(Token token) => fullParseClassBody(token); |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 if (isConstructor) { | 159 if (isConstructor) { |
| 160 if (getOrSet != null) { | 160 if (getOrSet != null) { |
| 161 recoverableError(getOrSet, 'illegal modifier'); | 161 recoverableError(getOrSet, 'illegal modifier'); |
| 162 } | 162 } |
| 163 memberElement = new PartialConstructorElement( | 163 memberElement = new PartialConstructorElement( |
| 164 name, beginToken, endToken, | 164 name, beginToken, endToken, |
| 165 ElementKind.GENERATIVE_CONSTRUCTOR, | 165 ElementKind.GENERATIVE_CONSTRUCTOR, |
| 166 method.modifiers, | 166 method.modifiers, |
| 167 enclosingClass); | 167 enclosingClass); |
| 168 } else { | 168 } else { |
| 169 ElementKind kind = ElementKind.FUNCTION; | 169 memberElement = new PartialFunctionElement( |
| 170 if (getOrSet != null) { | 170 name, beginToken, getOrSet, endToken, |
| 171 kind = (identical(getOrSet.stringValue, 'get')) | 171 method.modifiers, enclosingClass, hasBody: method.hasBody()); |
| 172 ? ElementKind.GETTER : ElementKind.SETTER; | |
| 173 } | |
| 174 memberElement = | |
| 175 new PartialFunctionElement(name, beginToken, getOrSet, endToken, | |
| 176 kind, method.modifiers, enclosingClass, | |
| 177 !method.hasBody()); | |
| 178 } | 172 } |
| 179 addMember(memberElement); | 173 addMember(memberElement); |
| 180 } | 174 } |
| 181 | 175 |
| 182 void endFactoryMethod(Token beginToken, Token endToken) { | 176 void endFactoryMethod(Token beginToken, Token endToken) { |
| 183 super.endFactoryMethod(beginToken, endToken); | 177 super.endFactoryMethod(beginToken, endToken); |
| 184 FunctionExpression method = popNode(); | 178 FunctionExpression method = popNode(); |
| 185 pushNode(null); | 179 pushNode(null); |
| 186 String name = getMethodNameHack(method.name); | 180 String name = getMethodNameHack(method.name); |
| 187 Identifier singleIdentifierName = method.name.asIdentifier(); | 181 Identifier singleIdentifierName = method.name.asIdentifier(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 void endInitializer(Token assignmentOperator) { | 215 void endInitializer(Token assignmentOperator) { |
| 222 pushNode(null); // Super expects an expression, but | 216 pushNode(null); // Super expects an expression, but |
| 223 // ClassElementParser just skips expressions. | 217 // ClassElementParser just skips expressions. |
| 224 super.endInitializer(assignmentOperator); | 218 super.endInitializer(assignmentOperator); |
| 225 } | 219 } |
| 226 | 220 |
| 227 void endInitializers(int count, Token beginToken, Token endToken) { | 221 void endInitializers(int count, Token beginToken, Token endToken) { |
| 228 pushNode(null); | 222 pushNode(null); |
| 229 } | 223 } |
| 230 | 224 |
| 231 void addMetadata(Element memberElement) { | 225 void addMetadata(ElementX memberElement) { |
| 232 for (Link link = metadata; !link.isEmpty; link = link.tail) { | 226 for (Link link = metadata; !link.isEmpty; link = link.tail) { |
| 233 memberElement.addMetadata(link.head); | 227 memberElement.addMetadata(link.head); |
| 234 } | 228 } |
| 235 metadata = const Link<MetadataAnnotation>(); | 229 metadata = const Link<MetadataAnnotation>(); |
| 236 } | 230 } |
| 237 | 231 |
| 238 void addMember(Element memberElement) { | 232 void addMember(ElementX memberElement) { |
| 239 addMetadata(memberElement); | 233 addMetadata(memberElement); |
| 240 enclosingClass.addMember(memberElement, listener); | 234 enclosingClass.addMember(memberElement, listener); |
| 241 } | 235 } |
| 242 | 236 |
| 243 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { | 237 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { |
| 244 popNode(); // Discard arguments. | 238 popNode(); // Discard arguments. |
| 245 if (periodBeforeName != null) { | 239 if (periodBeforeName != null) { |
| 246 popNode(); // Discard name. | 240 popNode(); // Discard name. |
| 247 } | 241 } |
| 248 popNode(); // Discard node (Send or Identifier). | 242 popNode(); // Discard node (Send or Identifier). |
| 249 pushMetadata(new PartialMetadataAnnotation(beginToken, endToken)); | 243 pushMetadata(new PartialMetadataAnnotation(beginToken, endToken)); |
| 250 } | 244 } |
| 251 } | 245 } |
| OLD | NEW |