Chromium Code Reviews| Index: dart/frog/leg/resolver.dart |
| diff --git a/dart/frog/leg/resolver.dart b/dart/frog/leg/resolver.dart |
| index 1e378adb9e42588d5a4ea29c922695106edd0b5e..dde324a7f1ad9b86e46f5e907a8e1a0bb54753f8 100644 |
| --- a/dart/frog/leg/resolver.dart |
| +++ b/dart/frog/leg/resolver.dart |
| @@ -75,6 +75,9 @@ class ResolverTask extends CompilerTask { |
| if (tree.initializers != null) { |
| new InitializerResolver(visitor, element).resolveInitializers(tree); |
| } |
| + if (isConstructor) { |
| + visitor.inInstanceContext = true; |
|
kasperl
2012/02/17 06:03:31
Do you want to reset the flag to what ever it was
ahe
2012/02/17 07:40:47
I think this is more broken than it lets out. Late
ngeoffray
2012/02/17 10:03:50
It wasn't intended to be a solution for the resolv
ngeoffray
2012/02/17 10:03:50
I don't think you need to set the flag. It's alrea
ahe
2012/02/17 16:26:46
Done.
|
| + } |
| visitor.visit(tree.body); |
| // Resolve the type annotations encountered in the method. |
| @@ -123,14 +126,10 @@ class ResolverTask extends CompilerTask { |
| && constructor.functionParameters.parameterCount === 0) { |
| constructor.implementation = defaultClass.getSynthesizedConstructor(); |
| } |
| - } |
| - if (constructor === null) { |
| - error(node.send, MessageKind.CANNOT_FIND_CONSTRUCTOR, [node.send]); |
| - return null; |
| - } |
| - if (constructor.implementation === null) { |
| - error(node, MessageKind.CANNOT_FIND_CONSTRUCTOR, [name]); |
| + if (constructor.implementation === null) { |
| + error(node, MessageKind.CANNOT_FIND_CONSTRUCTOR, [name]); |
| + } |
| } |
| } |
| @@ -661,7 +660,7 @@ class ResolverVisitor extends CommonResolverVisitor<Element> { |
| SourceString name = node.selector.asIdentifier().source; |
| if (node.receiver === null) { |
| target = lookup(node, name); |
| - if (target === null && !enclosingElement.isInstanceMember()) { |
| + if (target === null && !inInstanceContext) { |
| error(node, MessageKind.CANNOT_RESOLVE, [name]); |
| } |
| } else if (node.isSuperCall) { |
| @@ -1234,6 +1233,12 @@ class SignatureResolver extends CommonResolverVisitor<Element> { |
| return element; |
| } |
| + Element visitFunctionExpression(FunctionExpression node) { |
| + // This is a function typed parameter. |
| + // TODO(ahe): Resolve the function type. |
| + return visit(node.name); |
| + } |
| + |
| LinkBuilder<Element> analyzeNodes(Link<Node> link) { |
| LinkBuilder<Element> elements = new LinkBuilder<Element>(); |
| for (; !link.isEmpty(); link = link.tail) { |