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

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

Issue 9347045: Start supporting default classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 10 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 | « dart/frog/leg/resolver.dart ('k') | dart/frog/leg/warnings.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/frog/leg/scanner/class_element_parser.dart
diff --git a/dart/frog/leg/scanner/class_element_parser.dart b/dart/frog/leg/scanner/class_element_parser.dart
index b0bf6eb9744a5b6e3fe63f1afb5f1adffe718e35..c569ec631059c5ee8b54c5df9516d8789df549f8 100644
--- a/dart/frog/leg/scanner/class_element_parser.dart
+++ b/dart/frog/leg/scanner/class_element_parser.dart
@@ -31,6 +31,8 @@ class PartialClassElement extends ClassElement {
}
Token position() => beginToken;
+
+ bool isInterface() => beginToken.stringValue === "interface";
}
class MemberListener extends NodeListener {
@@ -55,27 +57,25 @@ class MemberListener extends NodeListener {
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;
- Node methodName = method.name;
- if (methodName.asSend() !== null) {
- Send send = methodName.asSend();
- Identifier receiver = send.receiver.asIdentifier();
- Identifier selector = send.selector.asIdentifier();
- if (selector.asOperator() !== null) {
- name = Elements.constructOperatorName(
- receiver.source, selector.source);
- } else {
- name = Elements.constructConstructorName(
- receiver.source, selector.source);
- }
- } else {
- name = methodName.asIdentifier().source;
- }
+ SourceString name = getMethodNameHack(method.name);
ElementKind kind = ElementKind.FUNCTION;
if (isConstructor) {
if (getOrSet !== null) {
@@ -97,14 +97,10 @@ class MemberListener extends NodeListener {
super.endFactoryMethod(factoryKeyword, periodBeforeName, endToken);
FunctionExpression method = popNode();
pushNode(null);
- // TODO(ahe): Named constructors.
- if (method.name.asIdentifier() == null) {
- listener.cancel('Qualified factory names not implemented', node: method);
- }
- Identifier name = method.name;
+ SourceString name = getMethodNameHack(method.name);
ElementKind kind = ElementKind.FUNCTION;
Element memberElement =
- new PartialFunctionElement(name.source, factoryKeyword, null, endToken,
+ new PartialFunctionElement(name, factoryKeyword, null, endToken,
kind, method.modifiers, enclosingElement);
enclosingElement.addMember(memberElement, listener);
}
« no previous file with comments | « dart/frog/leg/resolver.dart ('k') | dart/frog/leg/warnings.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698