| Index: frog/leg/ssa/builder.dart
|
| diff --git a/frog/leg/ssa/builder.dart b/frog/leg/ssa/builder.dart
|
| index dc05a8c86a8c45995ec71e4bfa40ac92a1ae1a74..3231580c95c00b3e0a8c38978f5fcc14388959dd 100644
|
| --- a/frog/leg/ssa/builder.dart
|
| +++ b/frog/leg/ssa/builder.dart
|
| @@ -1587,18 +1587,23 @@ class SsaBuilder implements Visitor {
|
| visitStaticSend(Send node) {
|
| Selector selector = elements.getSelector(node);
|
| Element element = elements[node];
|
| - if (element.kind != ElementKind.FUNCTION &&
|
| - element.kind != ElementKind.GENERATIVE_CONSTRUCTOR) {
|
| - compiler.unimplemented(
|
| - "SsaBuilder.visitStaticSend static field invocation",
|
| - node: node);
|
| - }
|
| - HStatic target = new HStatic(element);
|
| + HInstruction target = new HStatic(element);
|
| add(target);
|
| var inputs = <HInstruction>[];
|
| inputs.add(target);
|
| - addStaticSendArgumentsToList(node, element, inputs);
|
| - push(new HInvokeStatic(selector, inputs));
|
| + if (element.kind == ElementKind.FUNCTION ||
|
| + element.kind == ElementKind.GENERATIVE_CONSTRUCTOR) {
|
| + addStaticSendArgumentsToList(node, element, inputs);
|
| + push(new HInvokeStatic(selector, inputs));
|
| + } else {
|
| + if (element.kind == ElementKind.GETTER) {
|
| + target = new HInvokeStatic(Selector.GETTER, inputs);
|
| + add(target);
|
| + inputs = <HInstruction>[target];
|
| + }
|
| + addDynamicSendArgumentsToList(node, inputs);
|
| + push(new HInvokeClosure(selector, inputs));
|
| + }
|
| }
|
|
|
| visitSend(Send node) {
|
|
|