Chromium Code Reviews| Index: dart/frog/leg/scanner/listener.dart |
| diff --git a/dart/frog/leg/scanner/listener.dart b/dart/frog/leg/scanner/listener.dart |
| index aeedb041ae893617402697a97d3e0d274959d8a7..298fc8617a2e1bfd4667d763c7b05ef92413f608 100644 |
| --- a/dart/frog/leg/scanner/listener.dart |
| +++ b/dart/frog/leg/scanner/listener.dart |
| @@ -558,6 +558,13 @@ class NodeListener extends ElementListener { |
| pushNode(makeNodeList(memberCount, beginToken, endToken, null)); |
| } |
| + void endTopLevelMethod(Token beginToken, Token endToken) { |
| + Statement body = popNode(); |
| + NodeList formalParameters = popNode(); |
| + Identifier name = popNode(); |
| + pushElement(new PartialFunctionElement(name.source, beginToken, endToken)); |
| + } |
| + |
| void endFormalParameter(Token token) { |
| NodeList name = new NodeList.singleton(popNode()); |
| TypeAnnotation type = popNode(); |
| @@ -805,6 +812,7 @@ class NodeListener extends ElementListener { |
| if (count === 0) return; |
| // TODO(ahe): Implement this. |
| canceler.cancel("initializers are not implemented", token: beginToken); |
| + discardNodes(count); |
| } |
| void handleNoInitializers() { |
| @@ -831,6 +839,7 @@ class NodeListener extends ElementListener { |
| void endMethod(Token beginToken, Token endToken) { |
| Statement body = popNode(); |
| + NodeList formalParameters = popNode(); |
| Identifier name = popNode(); // TODO(ahe): What about constructors? |
| // TODO(ahe): Save modifiers. |
| pushNode(new FunctionExpression(name, null, null, null)); |
|
ngeoffray
2011/12/09 13:41:27
A reminder of our conversation: this node is not r
ahe
2011/12/09 14:19:47
Done.
|
| @@ -840,7 +849,7 @@ class NodeListener extends ElementListener { |
| Element memberElement = |
| new PartialFunctionElement(name.source, beginToken, endToken, |
| kind, enclosingElement); |
| - enclosingElement.addMember(memberElement); |
| + enclosingElement.addMember(memberElement); |
| } |
| void endLiteralMapEntry(Token token) { |
| @@ -977,10 +986,10 @@ class PartialFunctionElement extends FunctionElement { |
| PartialFunctionElement(SourceString name, |
| Token this.beginToken, Token this.endToken, |
| - ElementKind kind, |
| - [Element enclosing = null]) |
| + [ElementKind kind = ElementKind.FUNCTION, |
| + Element enclosing = null]) |
| : super(name, kind, enclosing); |
| - |
| + |
| FunctionExpression parseNode(Canceler canceler, Logger logger) { |
| if (node != null) return node; |
| node = parse(canceler, logger, (p) => p.parseFunction(beginToken)); |