Not restriction
This commit is contained in:
@@ -38,6 +38,8 @@ import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension;
|
|||||||
import org.jetbrains.kotlin.codegen.inline.*;
|
import org.jetbrains.kotlin.codegen.inline.*;
|
||||||
import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethod;
|
import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethod;
|
||||||
import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods;
|
import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods;
|
||||||
|
import org.jetbrains.kotlin.codegen.intrinsics.JavaClassProperty;
|
||||||
|
import org.jetbrains.kotlin.codegen.intrinsics.Not;
|
||||||
import org.jetbrains.kotlin.codegen.signature.BothSignatureWriter;
|
import org.jetbrains.kotlin.codegen.signature.BothSignatureWriter;
|
||||||
import org.jetbrains.kotlin.codegen.stackvalue.BranchedValue;
|
import org.jetbrains.kotlin.codegen.stackvalue.BranchedValue;
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
||||||
@@ -1901,7 +1903,8 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
|||||||
CallableMemberDescriptor memberDescriptor = DescriptorUtils.unwrapFakeOverride((CallableMemberDescriptor) descriptor);
|
CallableMemberDescriptor memberDescriptor = DescriptorUtils.unwrapFakeOverride((CallableMemberDescriptor) descriptor);
|
||||||
|
|
||||||
IntrinsicMethod intrinsic = state.getIntrinsics().getIntrinsic(memberDescriptor);
|
IntrinsicMethod intrinsic = state.getIntrinsics().getIntrinsic(memberDescriptor);
|
||||||
if (intrinsic != null) {
|
if (intrinsic instanceof JavaClassProperty) {
|
||||||
|
//TODO: intrinsic properties (see intermediateValueForProperty)
|
||||||
Type returnType = typeMapper.mapType(memberDescriptor);
|
Type returnType = typeMapper.mapType(memberDescriptor);
|
||||||
return intrinsic.generate(this, returnType, expression, Collections.<JetExpression>emptyList(), receiver);
|
return intrinsic.generate(this, returnType, expression, Collections.<JetExpression>emptyList(), receiver);
|
||||||
}
|
}
|
||||||
@@ -3388,13 +3391,14 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
|||||||
|
|
||||||
assert op instanceof FunctionDescriptor || originalOperation == null : String.valueOf(op);
|
assert op instanceof FunctionDescriptor || originalOperation == null : String.valueOf(op);
|
||||||
Callable callable = resolveToCallable((FunctionDescriptor) op, false, resolvedCall);
|
Callable callable = resolveToCallable((FunctionDescriptor) op, false, resolvedCall);
|
||||||
if (callable instanceof IntrinsicMethod) {
|
String operationName = originalOperation == null ? "" : originalOperation.getName().asString();
|
||||||
|
if (callable instanceof Not) {
|
||||||
Type returnType = typeMapper.mapType(op);
|
Type returnType = typeMapper.mapType(op);
|
||||||
return ((IntrinsicMethod) callable).generate(this, returnType, expression,
|
return ((Not) callable).generate(this, returnType, expression,
|
||||||
Collections.singletonList(expression.getBaseExpression()), receiver);
|
Collections.singletonList(expression.getBaseExpression()), receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
String operationName = originalOperation == null ? "" : originalOperation.getName().asString();
|
|
||||||
if (!(operationName.equals("inc") || operationName.equals("dec"))) {
|
if (!(operationName.equals("inc") || operationName.equals("dec"))) {
|
||||||
return invokeFunction(resolvedCall, receiver);
|
return invokeFunction(resolvedCall, receiver);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user