| Index: dart/frog/leg/scanner/listener.dart
|
| diff --git a/dart/frog/leg/scanner/listener.dart b/dart/frog/leg/scanner/listener.dart
|
| index d4983b12041c096ca6011236bc49ebd7ff548503..2805327d7ec0b764bbf73a9caa7502675dc0e0e3 100644
|
| --- a/dart/frog/leg/scanner/listener.dart
|
| +++ b/dart/frog/leg/scanner/listener.dart
|
| @@ -1100,17 +1100,19 @@ class NodeListener extends ElementListener {
|
| }
|
|
|
| void endFactoryMethod(Token factoryKeyword, Token periodBeforeName) {
|
| - canceler.cancel('factory methods are not implemented',
|
| - token: factoryKeyword);
|
| Statement body = popNode();
|
| - NodeList parameters = popNode();
|
| + NodeList formals = popNode();
|
| Identifier name = null;
|
| if (periodBeforeName !== null) {
|
| name = popNode();
|
| }
|
| - Node typeName = popNode();
|
| - pushNode(new UnimplementedStatement('factory',
|
| - [typeName, name, parameters, body]));
|
| + Identifier typeName = popNode();
|
| + TypeAnnotation type = new TypeAnnotation(typeName, null);
|
| + handleModifier(factoryKeyword);
|
| + handleModifiers(1);
|
| + Modifiers modifiers = popNode();
|
| + pushNode(new FunctionExpression(name, formals, body, type,
|
| + modifiers, null));
|
| }
|
|
|
| void endForInStatement(Token beginToken, Token inKeyword, Token endToken) {
|
|
|