JS backend: inline private class ExtensionCallConstructor to place of use.

(cherry picked from commit 4d17e96)
This commit is contained in:
develar
2013-08-23 14:47:25 +04:00
committed by Zalim Bashorov
parent 92e76d18d9
commit f08cb5f6ca
@@ -150,8 +150,19 @@ public final class CallTranslator extends AbstractTranslator {
}
@NotNull
public JsExpression extensionFunctionCall(boolean useThis) {
return callType.constructCall(callParameters.getReceiver(), new ExtensionCallConstructor(useThis), context());
public JsExpression extensionFunctionCall(final boolean useThis) {
return callType.constructCall(callParameters.getReceiver(), new CallType.CallConstructor() {
@NotNull
@Override
public JsExpression construct(@Nullable JsExpression receiver) {
assert receiver != null : "Could not be null for extensions";
JsExpression functionReference = callParameters.getFunctionReference();
if (useThis) {
setQualifier(functionReference, getThisObjectOrQualifier());
}
return new JsInvocation(callParameters.getFunctionReference(), generateCallArgumentList(receiver));
}
}, context());
}
@NotNull
@@ -215,23 +226,4 @@ public final class CallTranslator extends AbstractTranslator {
}
return context().getQualifierForDescriptor(descriptor);
}
private class ExtensionCallConstructor implements CallType.CallConstructor {
private final boolean useThis;
private ExtensionCallConstructor(boolean useThis) {
this.useThis = useThis;
}
@NotNull
@Override
public JsExpression construct(@Nullable JsExpression receiver) {
assert receiver != null : "Could not be null for extensions";
JsExpression functionReference = callParameters.getFunctionReference();
if (useThis) {
setQualifier(functionReference, getThisObjectOrQualifier());
}
return new JsInvocation(callParameters.getFunctionReference(), generateCallArgumentList(receiver));
}
}
}