Fixed calling inherited SAM adapter.

This commit is contained in:
Evgeny Gerashchenko
2013-04-30 17:19:50 +04:00
parent fed5cf6524
commit 516a5b76e8
5 changed files with 48 additions and 3 deletions
@@ -1806,7 +1806,18 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
return null;
}
SimpleFunctionDescriptor original = ((SimpleFunctionDescriptor) fun).getOriginal();
return bindingContext.get(SAM_ADAPTER_FUNCTION_TO_ORIGINAL, original);
if (original.getKind() == CallableMemberDescriptor.Kind.SYNTHESIZED) {
return bindingContext.get(SAM_ADAPTER_FUNCTION_TO_ORIGINAL, original);
}
if (original.getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
for (FunctionDescriptor overridden : original.getOverriddenDescriptors()) {
SimpleFunctionDescriptor originalIfSamAdapter = getOriginalIfSamAdapter(overridden);
if (originalIfSamAdapter != null) {
return originalIfSamAdapter;
}
}
}
return null;
}
private StackValue invokeSamConstructor(