JS backend: fixed an equals behavior after it became a member of jet.Any.
This commit is contained in:
committed by
Alexander Udalov
parent
b8ec50f38c
commit
6127d53eac
+7
-4
@@ -34,6 +34,7 @@ import org.jetbrains.k2js.translate.callTranslator.CallInfo;
|
||||
import org.jetbrains.k2js.translate.context.Namer;
|
||||
import org.jetbrains.k2js.translate.context.TranslationContext;
|
||||
import org.jetbrains.k2js.translate.intrinsic.functions.basic.FunctionIntrinsic;
|
||||
import org.jetbrains.k2js.translate.intrinsic.functions.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.k2js.translate.intrinsic.functions.patterns.NamePredicate;
|
||||
import org.jetbrains.k2js.translate.utils.AnnotationsUtils;
|
||||
import org.jetbrains.k2js.translate.utils.BindingUtils;
|
||||
@@ -45,8 +46,9 @@ import static org.jetbrains.k2js.translate.intrinsic.functions.basic.FunctionInt
|
||||
import static org.jetbrains.k2js.translate.intrinsic.functions.patterns.PatternBuilder.pattern;
|
||||
|
||||
public final class TopLevelFIF extends CompositeFIF {
|
||||
public static final DescriptorPredicate EQUALS_IN_ANY = pattern("jet", "Any", "equals");
|
||||
@NotNull
|
||||
public static final KotlinFunctionIntrinsic EQUALS = new KotlinFunctionIntrinsic("equals");
|
||||
public static final KotlinFunctionIntrinsic KOTLIN_EQUALS = new KotlinFunctionIntrinsic("equals");
|
||||
@NotNull
|
||||
public static final FunctionIntrinsic IDENTITY_EQUALS = new FunctionIntrinsic() {
|
||||
@NotNull
|
||||
@@ -138,11 +140,12 @@ public final class TopLevelFIF extends CompositeFIF {
|
||||
public static final FunctionIntrinsicFactory INSTANCE = new TopLevelFIF();
|
||||
|
||||
private TopLevelFIF() {
|
||||
add(EQUALS_IN_ANY, KOTLIN_EQUALS);
|
||||
add(pattern("jet", "toString").receiverExists(), TO_STRING);
|
||||
add(pattern("jet", "equals").receiverExists(), EQUALS);
|
||||
add(pattern("jet", "equals").receiverExists(), KOTLIN_EQUALS);
|
||||
add(pattern("jet", "identityEquals").receiverExists(), IDENTITY_EQUALS);
|
||||
add(pattern(NamePredicate.PRIMITIVE_NUMBERS, "equals"), EQUALS);
|
||||
add(pattern("String|Boolean|Char|Number.equals"), EQUALS);
|
||||
add(pattern(NamePredicate.PRIMITIVE_NUMBERS, "equals"), KOTLIN_EQUALS);
|
||||
add(pattern("String|Boolean|Char|Number.equals"), KOTLIN_EQUALS);
|
||||
add(pattern("jet", "arrayOfNulls"), new KotlinFunctionIntrinsic("nullArray"));
|
||||
add(pattern("jet", "PropertyMetadataImpl", "<init>"), PROPERTY_METADATA_IMPL);
|
||||
add(pattern("jet", "iterator").receiverExists(), RETURN_RECEIVER_INTRINSIC);
|
||||
|
||||
+2
-2
@@ -48,7 +48,7 @@ public final class EqualsIntrinsic implements BinaryOperationIntrinsic {
|
||||
}
|
||||
FunctionDescriptor functionDescriptor = getFunctionDescriptorForOperationExpression(context.bindingContext(), expression);
|
||||
assert functionDescriptor != null;
|
||||
return JsDescriptorUtils.isBuiltin(functionDescriptor);
|
||||
return JsDescriptorUtils.isBuiltin(functionDescriptor) || TopLevelFIF.EQUALS_IN_ANY.apply(functionDescriptor);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -65,7 +65,7 @@ public final class EqualsIntrinsic implements BinaryOperationIntrinsic {
|
||||
return new JsBinaryOperation(isNegated ? JsBinaryOperator.REF_NEQ : JsBinaryOperator.REF_EQ, left, right);
|
||||
}
|
||||
|
||||
JsExpression result = TopLevelFIF.EQUALS.apply(left, Arrays.asList(right), context);
|
||||
JsExpression result = TopLevelFIF.KOTLIN_EQUALS.apply(left, Arrays.asList(right), context);
|
||||
return isNegated ? JsAstUtils.negated(result) : result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user