Remove intrinsics from CollectionElement
This commit is contained in:
@@ -860,8 +860,8 @@ public abstract class StackValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class CollectionElement extends StackValueWithSimpleReceiver {
|
public static class CollectionElement extends StackValueWithSimpleReceiver {
|
||||||
private final Callable getter;
|
private final ExtendedCallable getter;
|
||||||
private final Callable setter;
|
private final ExtendedCallable setter;
|
||||||
private final ExpressionCodegen codegen;
|
private final ExpressionCodegen codegen;
|
||||||
private final GenerationState state;
|
private final GenerationState state;
|
||||||
private final ResolvedCall<FunctionDescriptor> resolvedGetCall;
|
private final ResolvedCall<FunctionDescriptor> resolvedGetCall;
|
||||||
@@ -883,8 +883,10 @@ public abstract class StackValue {
|
|||||||
this.state = state;
|
this.state = state;
|
||||||
this.setterDescriptor = resolvedSetCall == null ? null : resolvedSetCall.getResultingDescriptor();
|
this.setterDescriptor = resolvedSetCall == null ? null : resolvedSetCall.getResultingDescriptor();
|
||||||
this.getterDescriptor = resolvedGetCall == null ? null : resolvedGetCall.getResultingDescriptor();
|
this.getterDescriptor = resolvedGetCall == null ? null : resolvedGetCall.getResultingDescriptor();
|
||||||
this.setter = resolvedSetCall == null ? null : codegen.resolveToCallable(setterDescriptor, false, resolvedSetCall);
|
this.setter =
|
||||||
this.getter = resolvedGetCall == null ? null : codegen.resolveToCallable(getterDescriptor, false, resolvedGetCall);
|
resolvedSetCall == null ? null : (ExtendedCallable) codegen.resolveToCallable(setterDescriptor, false, resolvedSetCall);
|
||||||
|
this.getter =
|
||||||
|
resolvedGetCall == null ? null : (ExtendedCallable) codegen.resolveToCallable(getterDescriptor, false, resolvedGetCall);
|
||||||
this.codegen = codegen;
|
this.codegen = codegen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -893,13 +895,8 @@ public abstract class StackValue {
|
|||||||
if (getter == null) {
|
if (getter == null) {
|
||||||
throw new UnsupportedOperationException("no getter specified");
|
throw new UnsupportedOperationException("no getter specified");
|
||||||
}
|
}
|
||||||
if (getter instanceof ExtendedCallable) {
|
|
||||||
((ExtendedCallable) getter).invokeWithNotNullAssertion(v, state, resolvedGetCall);
|
getter.invokeWithNotNullAssertion(v, state, resolvedGetCall);
|
||||||
}
|
|
||||||
else {
|
|
||||||
StackValue result = ((IntrinsicMethod) getter).generate(codegen, this.type, null, Collections.<JetExpression>emptyList(), StackValue.none());
|
|
||||||
result.put(result.type, v);
|
|
||||||
}
|
|
||||||
coerceTo(type, v);
|
coerceTo(type, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -949,20 +946,13 @@ public abstract class StackValue {
|
|||||||
if (setter == null) {
|
if (setter == null) {
|
||||||
throw new UnsupportedOperationException("no setter specified");
|
throw new UnsupportedOperationException("no setter specified");
|
||||||
}
|
}
|
||||||
if (setter instanceof ExtendedCallable) {
|
|
||||||
ExtendedCallable method = (ExtendedCallable) setter;
|
Type[] argumentTypes = setter.getArgumentTypes();
|
||||||
Type[] argumentTypes = method.getArgumentTypes();
|
coerce(topOfStackType, argumentTypes[argumentTypes.length - 1], v);
|
||||||
coerce(topOfStackType, argumentTypes[argumentTypes.length - 1], v);
|
setter.invokeWithNotNullAssertion(v, state, resolvedSetCall);
|
||||||
method.invokeWithNotNullAssertion(v, state, resolvedSetCall);
|
Type returnType = setter.getReturnType();
|
||||||
Type returnType = method.getReturnType();
|
if (returnType != Type.VOID_TYPE) {
|
||||||
if (returnType != Type.VOID_TYPE) {
|
pop(v, returnType);
|
||||||
pop(v, returnType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//noinspection ConstantConditions
|
|
||||||
StackValue result = ((IntrinsicMethod) setter).generate(codegen, null, null, Collections.<JetExpression>emptyList(), StackValue.none());
|
|
||||||
result.put(result.type, v);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user