| Index: frog/leg/elements/elements.dart
|
| diff --git a/frog/leg/elements/elements.dart b/frog/leg/elements/elements.dart
|
| index 437c819ed233101092b7f8680ff14a22ac06ea08..3f0f6ecc5470f5e0ee82aafbce3084eaa735b585 100644
|
| --- a/frog/leg/elements/elements.dart
|
| +++ b/frog/leg/elements/elements.dart
|
| @@ -54,6 +54,8 @@ class Element implements Hashable {
|
| bool isInstanceMember() => false;
|
| bool isFactoryConstructor() => modifiers != null && modifiers.isFactory();
|
| bool isGenerativeConstructor() => kind == ElementKind.GENERATIVE_CONSTRUCTOR;
|
| + bool isVariable() => kind == ElementKind.VARIABLE;
|
| + bool isParameter() => kind == ElementKind.PARAMETER;
|
|
|
| bool isAssignable() {
|
| if (modifiers != null && modifiers.isFinal()) return false;
|
| @@ -356,4 +358,14 @@ class Elements {
|
| && element.isInstanceMember()
|
| && (element.kind === ElementKind.FUNCTION);
|
| }
|
| +
|
| + static bool isClosureSend(Send send, TreeElements elements) {
|
| + if (send.isPropertyAccess) return false;
|
| + if (send.receiver !== null) return false;
|
| + Element element = elements[send];
|
| + // (o)() or foo()().
|
| + if (element === null && send.selector.asIdentifier() === null) return true;
|
| + // foo() with foo a local or a parameter.
|
| + return element.isVariable() || element.isParameter();
|
| + }
|
| }
|
|
|