Rename. INSTANCE -> DEFAULT in JetTypeChecker
This commit is contained in:
@@ -722,7 +722,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
||||
invokeFunction(fakeCall, StackValue.local(iteratorVarIndex, asmTypeForIterator), hasNextCall);
|
||||
|
||||
JetType type = hasNextCall.getResultingDescriptor().getReturnType();
|
||||
assert type != null && JetTypeChecker.INSTANCE.isSubtypeOf(type, KotlinBuiltIns.getInstance().getBooleanType());
|
||||
assert type != null && JetTypeChecker.DEFAULT.isSubtypeOf(type, KotlinBuiltIns.getInstance().getBooleanType());
|
||||
|
||||
Type asmType = asmType(type);
|
||||
StackValue.coerce(asmType, Type.BOOLEAN_TYPE, v);
|
||||
|
||||
@@ -484,7 +484,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
JetType returnType = function.getReturnType();
|
||||
assert returnType != null : function.toString();
|
||||
JetType paramType = function.getValueParameters().get(0).getType();
|
||||
if (JetTypeChecker.INSTANCE.equalTypes(arrayType, returnType) && JetTypeChecker.INSTANCE.equalTypes(arrayType, paramType)) {
|
||||
if (JetTypeChecker.DEFAULT.equalTypes(arrayType, returnType) && JetTypeChecker.DEFAULT.equalTypes(arrayType, paramType)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -139,7 +139,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
||||
JetType substitutedReturnType = substitutor.substitute(returnType, Variance.INVARIANT);
|
||||
assert substitutedReturnType != null;
|
||||
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(altReturnType, substitutedReturnType)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(altReturnType, substitutedReturnType)) {
|
||||
throw new AlternativeSignatureMismatchException(
|
||||
"Return type is changed to not subtype for method which overrides another: " + altReturnType + ", was: " + returnType);
|
||||
}
|
||||
|
||||
+2
-2
@@ -59,8 +59,8 @@ class PropagationHeuristics {
|
||||
JetType elementTypeInSuper = arrayTypeFromSuper.getArguments().get(0).getType();
|
||||
JetType elementType = type.getArguments().get(0).getType();
|
||||
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(elementType, elementTypeInSuper)
|
||||
&& !JetTypeChecker.INSTANCE.equalTypes(elementType, elementTypeInSuper)) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(elementType, elementTypeInSuper)
|
||||
&& !JetTypeChecker.DEFAULT.equalTypes(elementType, elementTypeInSuper)) {
|
||||
JetTypeImpl betterTypeInSuper = new JetTypeImpl(
|
||||
arrayTypeFromSuper.getAnnotations(),
|
||||
arrayTypeFromSuper.getConstructor(),
|
||||
|
||||
@@ -28,12 +28,12 @@ public trait TypePredicate: (JetType) -> Boolean {
|
||||
}
|
||||
|
||||
public data class SingleType(val targetType: JetType): TypePredicate {
|
||||
override fun invoke(typeToCheck: JetType): Boolean = JetTypeChecker.INSTANCE.equalTypes(typeToCheck, targetType)
|
||||
override fun invoke(typeToCheck: JetType): Boolean = JetTypeChecker.DEFAULT.equalTypes(typeToCheck, targetType)
|
||||
override fun toString(): String = targetType.render()
|
||||
}
|
||||
|
||||
public data class AllSubtypes(val upperBound: JetType): TypePredicate {
|
||||
override fun invoke(typeToCheck: JetType): Boolean = JetTypeChecker.INSTANCE.isSubtypeOf(typeToCheck, upperBound)
|
||||
override fun invoke(typeToCheck: JetType): Boolean = JetTypeChecker.DEFAULT.isSubtypeOf(typeToCheck, upperBound)
|
||||
|
||||
override fun toString(): String = "{<: ${upperBound.render()}}"
|
||||
}
|
||||
@@ -72,7 +72,7 @@ fun or(predicates: Collection<TypePredicate>): TypePredicate? =
|
||||
}
|
||||
|
||||
fun JetType.getSubtypesPredicate(): TypePredicate? =
|
||||
if (TypeUtils.canHaveSubtypes(JetTypeChecker.INSTANCE, this)) AllSubtypes(this) else SingleType(this)
|
||||
if (TypeUtils.canHaveSubtypes(JetTypeChecker.DEFAULT, this)) AllSubtypes(this) else SingleType(this)
|
||||
|
||||
private fun JetType.render(): String = DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(this)
|
||||
|
||||
|
||||
@@ -229,13 +229,13 @@ public class Renderers {
|
||||
parameterTypes.add(valueParameterDescriptor.getType());
|
||||
if (valueParameterDescriptor.getIndex() >= inferenceErrorData.valueArgumentsTypes.size()) continue;
|
||||
JetType actualType = inferenceErrorData.valueArgumentsTypes.get(valueParameterDescriptor.getIndex());
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(actualType, valueParameterDescriptor.getType())) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(actualType, valueParameterDescriptor.getType())) {
|
||||
errorPositions.add(ConstraintPosition.getValueParameterPosition(valueParameterDescriptor.getIndex()));
|
||||
}
|
||||
}
|
||||
|
||||
if (receiverType != null && inferenceErrorData.receiverArgumentType != null &&
|
||||
!JetTypeChecker.INSTANCE.isSubtypeOf(inferenceErrorData.receiverArgumentType, receiverType)) {
|
||||
!JetTypeChecker.DEFAULT.isSubtypeOf(inferenceErrorData.receiverArgumentType, receiverType)) {
|
||||
errorPositions.add(ConstraintPosition.RECEIVER_POSITION);
|
||||
}
|
||||
|
||||
@@ -333,7 +333,7 @@ public class Renderers {
|
||||
JetType upperBoundWithSubstitutedInferredTypes =
|
||||
systemWithoutWeakConstraints.getResultingSubstitutor().substitute(upperBound, Variance.INVARIANT);
|
||||
if (upperBoundWithSubstitutedInferredTypes != null &&
|
||||
!JetTypeChecker.INSTANCE.isSubtypeOf(inferredValueForTypeParameter, upperBoundWithSubstitutedInferredTypes)) {
|
||||
!JetTypeChecker.DEFAULT.isSubtypeOf(inferredValueForTypeParameter, upperBoundWithSubstitutedInferredTypes)) {
|
||||
violatedUpperBound = upperBoundWithSubstitutedInferredTypes;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -220,13 +220,13 @@ public class DeclarationsChecker {
|
||||
REMOVE_IF_SUBTYPE_IN_THE_SET {
|
||||
@Override
|
||||
public boolean removeNeeded(JetType subject, JetType other) {
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(other, subject);
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(other, subject);
|
||||
}
|
||||
},
|
||||
REMOVE_IF_SUPERTYPE_IN_THE_SET {
|
||||
@Override
|
||||
public boolean removeNeeded(JetType subject, JetType other) {
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(subject, other);
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(subject, other);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ public class DelegatedPropertyResolver {
|
||||
JetType propertyType = propertyDescriptor.getType();
|
||||
|
||||
/* Do not check return type of get() method of delegate for properties with DeferredType because property type is taken from it */
|
||||
if (!(propertyType instanceof DeferredType) && returnType != null && !JetTypeChecker.INSTANCE.isSubtypeOf(returnType, propertyType)) {
|
||||
if (!(propertyType instanceof DeferredType) && returnType != null && !JetTypeChecker.DEFAULT.isSubtypeOf(returnType, propertyType)) {
|
||||
Call call = trace.getBindingContext().get(DELEGATED_PROPERTY_CALL, propertyDescriptor.getGetter());
|
||||
assert call != null : "Call should exists for " + propertyDescriptor.getGetter();
|
||||
trace.report(DELEGATE_SPECIAL_FUNCTION_RETURN_TYPE_MISMATCH
|
||||
|
||||
@@ -760,7 +760,7 @@ public class DescriptorResolver {
|
||||
boolean isClassObjectConstraint,
|
||||
BindingTrace trace
|
||||
) {
|
||||
if (!TypeUtils.canHaveSubtypes(JetTypeChecker.INSTANCE, upperBoundType)) {
|
||||
if (!TypeUtils.canHaveSubtypes(JetTypeChecker.DEFAULT, upperBoundType)) {
|
||||
if (isClassObjectConstraint) {
|
||||
trace.report(FINAL_CLASS_OBJECT_UPPER_BOUND.on(upperBound, upperBoundType));
|
||||
}
|
||||
@@ -1360,7 +1360,7 @@ public class DescriptorResolver {
|
||||
) {
|
||||
for (JetType bound : typeParameterDescriptor.getUpperBounds()) {
|
||||
JetType substitutedBound = substitutor.safeSubstitute(bound, Variance.INVARIANT);
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(typeArgument, substitutedBound)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(typeArgument, substitutedBound)) {
|
||||
trace.report(UPPER_BOUND_VIOLATED.on(jetTypeArgument, substitutedBound, typeArgument));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public class OverloadUtil {
|
||||
JetType superValueParameterType = OverridingUtil.getUpperBound(superValueParameters.get(i));
|
||||
JetType subValueParameterType = OverridingUtil.getUpperBound(subValueParameters.get(i));
|
||||
// TODO: compare erasure
|
||||
if (!JetTypeChecker.INSTANCE.equalTypes(superValueParameterType, subValueParameterType)) {
|
||||
if (!JetTypeChecker.DEFAULT.equalTypes(superValueParameterType, subValueParameterType)) {
|
||||
return OverridingUtil.OverrideCompatibilityInfo
|
||||
.valueParameterTypeMismatch(superValueParameterType, subValueParameterType, INCOMPATIBLE);
|
||||
}
|
||||
|
||||
@@ -733,7 +733,7 @@ public class OverrideResolver {
|
||||
JetType substitutedSuperReturnType = typeSubstitutor.substitute(superReturnType, Variance.OUT_VARIANCE);
|
||||
assert substitutedSuperReturnType != null;
|
||||
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(subReturnType, substitutedSuperReturnType);
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(subReturnType, substitutedSuperReturnType);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -768,7 +768,7 @@ public class OverrideResolver {
|
||||
|
||||
JetType substitutedSuperReturnType = typeSubstitutor.substitute(superDescriptor.getType(), Variance.OUT_VARIANCE);
|
||||
assert substitutedSuperReturnType != null;
|
||||
return JetTypeChecker.INSTANCE.equalTypes(subDescriptor.getType(), substitutedSuperReturnType);
|
||||
return JetTypeChecker.DEFAULT.equalTypes(subDescriptor.getType(), substitutedSuperReturnType);
|
||||
}
|
||||
|
||||
private void checkOverrideForComponentFunction(@NotNull final CallableMemberDescriptor componentFunction) {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class ArgumentTypeResolver {
|
||||
if (actualType == PLACEHOLDER_FUNCTION_TYPE) {
|
||||
return isFunctionOrErrorType(expectedType) || KotlinBuiltIns.getInstance().isAnyOrNullableAny(expectedType); //todo function type extends
|
||||
}
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(actualType, expectedType);
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(actualType, expectedType);
|
||||
}
|
||||
|
||||
private static boolean isFunctionOrErrorType(@NotNull JetType supertype) {
|
||||
|
||||
@@ -735,7 +735,7 @@ public class CandidateResolver {
|
||||
Set<JetType> possibleTypes = dataFlowInfoForArgument.getPossibleTypes(dataFlowValue);
|
||||
if (possibleTypes.isEmpty()) return type;
|
||||
|
||||
return TypeUtils.intersect(JetTypeChecker.INSTANCE, possibleTypes);
|
||||
return TypeUtils.intersect(JetTypeChecker.DEFAULT, possibleTypes);
|
||||
}
|
||||
|
||||
private <D extends CallableDescriptor> ValueArgumentsCheckingResult checkAllValueArguments(
|
||||
@@ -859,7 +859,7 @@ public class CandidateResolver {
|
||||
List<JetType> variants =
|
||||
AutoCastUtils.getAutoCastVariantsExcludingReceiver(context.trace.getBindingContext(), context.dataFlowInfo, receiverToCast);
|
||||
for (JetType possibleType : variants) {
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(possibleType, expectedType)) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(possibleType, expectedType)) {
|
||||
return possibleType;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -116,7 +116,7 @@ public class AutoCastUtils {
|
||||
}
|
||||
if (subTypes.isEmpty()) return null;
|
||||
|
||||
JetType intersection = TypeUtils.intersect(JetTypeChecker.INSTANCE, subTypes);
|
||||
JetType intersection = TypeUtils.intersect(JetTypeChecker.DEFAULT, subTypes);
|
||||
if (intersection == null || !intersection.getConstructor().isDenotable()) {
|
||||
return receiverParameterType;
|
||||
}
|
||||
|
||||
+1
-1
@@ -94,7 +94,7 @@ public class ConstraintsUtil {
|
||||
JetType substitutedUpperBound = constraintSystem.getResultingSubstitutor().substitute(upperBound, Variance.INVARIANT);
|
||||
|
||||
assert substitutedUpperBound != null : "We wanted to substitute projections as a result for " + typeParameter;
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(type, substitutedUpperBound)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(type, substitutedUpperBound)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -239,7 +239,7 @@ public class OverloadingConflictResolver {
|
||||
}
|
||||
|
||||
private boolean typeMoreSpecific(@NotNull JetType specific, @NotNull JetType general) {
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(specific, general) ||
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(specific, general) ||
|
||||
numericTypeMoreSpecific(specific, general);
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -25,7 +25,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.psi.Call;
|
||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetReferenceExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetSuperExpression;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.AutoCastUtils;
|
||||
@@ -326,7 +325,7 @@ public class TaskPrioritizer {
|
||||
if (expectedThisObject == null) return true;
|
||||
List<ReceiverParameterDescriptor> receivers = scope.getImplicitReceiversHierarchy();
|
||||
for (ReceiverParameterDescriptor receiver : receivers) {
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(receiver.getType(), expectedThisObject.getType())) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(receiver.getType(), expectedThisObject.getType())) {
|
||||
// TODO : Autocasts & nullability
|
||||
candidate.setThisObject(expectedThisObject.getValue());
|
||||
return true;
|
||||
|
||||
+4
-4
@@ -90,7 +90,7 @@ public class CompileTimeConstantChecker {
|
||||
|
||||
if (!noExpectedTypeOrError(expectedType)) {
|
||||
JetType valueType = value.getType(KotlinBuiltIns.getInstance());
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(valueType, expectedType)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(valueType, expectedType)) {
|
||||
return reportError(CONSTANT_EXPECTED_TYPE_MISMATCH.on(expression, "integer", expectedType));
|
||||
}
|
||||
}
|
||||
@@ -107,7 +107,7 @@ public class CompileTimeConstantChecker {
|
||||
}
|
||||
if (!noExpectedTypeOrError(expectedType)) {
|
||||
JetType valueType = value.getType(KotlinBuiltIns.getInstance());
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(valueType, expectedType)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(valueType, expectedType)) {
|
||||
return reportError(CONSTANT_EXPECTED_TYPE_MISMATCH.on(expression, "floating-point", expectedType));
|
||||
}
|
||||
}
|
||||
@@ -119,7 +119,7 @@ public class CompileTimeConstantChecker {
|
||||
@NotNull JetConstantExpression expression
|
||||
) {
|
||||
if (!noExpectedTypeOrError(expectedType)
|
||||
&& !JetTypeChecker.INSTANCE.isSubtypeOf(builtIns.getBooleanType(), expectedType)) {
|
||||
&& !JetTypeChecker.DEFAULT.isSubtypeOf(builtIns.getBooleanType(), expectedType)) {
|
||||
return reportError(CONSTANT_EXPECTED_TYPE_MISMATCH.on(expression, "boolean", expectedType));
|
||||
}
|
||||
return false;
|
||||
@@ -127,7 +127,7 @@ public class CompileTimeConstantChecker {
|
||||
|
||||
private boolean checkCharValue(CompileTimeConstant<?> constant, JetType expectedType, JetConstantExpression expression) {
|
||||
if (!noExpectedTypeOrError(expectedType)
|
||||
&& !JetTypeChecker.INSTANCE.isSubtypeOf(builtIns.getCharType(), expectedType)) {
|
||||
&& !JetTypeChecker.DEFAULT.isSubtypeOf(builtIns.getCharType(), expectedType)) {
|
||||
return reportError(CONSTANT_EXPECTED_TYPE_MISMATCH.on(expression, "character", expectedType));
|
||||
}
|
||||
|
||||
|
||||
@@ -66,8 +66,8 @@ public class CastDiagnosticsUtil {
|
||||
|
||||
for (JetType aType : aTypes) {
|
||||
for (JetType bType : bTypes) {
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(aType, bType)) return true;
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(bType, aType)) return true;
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(aType, bType)) return true;
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(bType, aType)) return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ public class CastDiagnosticsUtil {
|
||||
}
|
||||
|
||||
private static boolean isFinal(@NotNull JetType type) {
|
||||
return !TypeUtils.canHaveSubtypes(JetTypeChecker.INSTANCE, type);
|
||||
return !TypeUtils.canHaveSubtypes(JetTypeChecker.DEFAULT, type);
|
||||
}
|
||||
|
||||
private static boolean isTrait(@NotNull JetType type) {
|
||||
|
||||
+2
-2
@@ -212,7 +212,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
context.trace.report(CAST_NEVER_SUCCEEDS.on(expression.getOperationReference()));
|
||||
}
|
||||
else {
|
||||
JetTypeChecker typeChecker = JetTypeChecker.INSTANCE;
|
||||
JetTypeChecker typeChecker = JetTypeChecker.DEFAULT;
|
||||
// Upcast?
|
||||
if (typeChecker.isSubtypeOf(actualType, targetType)) {
|
||||
if (!typeChecker.isSubtypeOf(targetType, actualType)) {
|
||||
@@ -668,7 +668,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
}
|
||||
else {
|
||||
JetType receiverType = receiver.getType();
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(returnType, receiverType)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(returnType, receiverType)) {
|
||||
context.trace.report(RESULT_TYPE_MISMATCH.on(operationSign, name.asString(), receiverType, returnType));
|
||||
}
|
||||
else {
|
||||
|
||||
+2
-2
@@ -221,7 +221,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
|
||||
if (typeReference != null) {
|
||||
type = components.expressionTypingServices.getTypeResolver().resolveType(context.scope, typeReference, context.trace, true);
|
||||
if (expectedType != null) {
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(expectedType, type)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(expectedType, type)) {
|
||||
context.trace.report(EXPECTED_PARAMETER_TYPE_MISMATCH.on(declaredParameter, expectedType));
|
||||
}
|
||||
}
|
||||
@@ -278,7 +278,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
|
||||
// This is needed for ControlStructureTypingVisitor#visitReturnExpression() to properly type-check returned expressions
|
||||
functionDescriptor.setReturnType(declaredReturnType);
|
||||
if (expectedReturnType != null) {
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(declaredReturnType, expectedReturnType)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(declaredReturnType, expectedReturnType)) {
|
||||
context.trace.report(EXPECTED_RETURN_TYPE_MISMATCH.on(returnTypeRef, expectedReturnType));
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -355,7 +355,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
variableDescriptor = components.expressionTypingServices.getDescriptorResolver().resolveLocalVariableDescriptor(context.scope, loopParameter, context.trace);
|
||||
JetType actualParameterType = variableDescriptor.getType();
|
||||
if (expectedParameterType != null &&
|
||||
!JetTypeChecker.INSTANCE.isSubtypeOf(expectedParameterType, actualParameterType)) {
|
||||
!JetTypeChecker.DEFAULT.isSubtypeOf(expectedParameterType, actualParameterType)) {
|
||||
context.trace.report(TYPE_MISMATCH_IN_FOR_LOOP.on(typeReference, expectedParameterType, actualParameterType));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ public class DataFlowUtils {
|
||||
recordExpectedType(trace, expression, expectedType);
|
||||
|
||||
if (expressionType == null || noExpectedType(expectedType) || !expectedType.getConstructor().isDenotable() ||
|
||||
JetTypeChecker.INSTANCE.isSubtypeOf(expressionType, expectedType)) {
|
||||
JetTypeChecker.DEFAULT.isSubtypeOf(expressionType, expectedType)) {
|
||||
return expressionType;
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ public class DataFlowUtils {
|
||||
|
||||
DataFlowValue dataFlowValue = DataFlowValueFactory.createDataFlowValue(expression, expressionType, trace.getBindingContext());
|
||||
for (JetType possibleType : dataFlowInfo.getPossibleTypes(dataFlowValue)) {
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(possibleType, expectedType)) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(possibleType, expectedType)) {
|
||||
AutoCastUtils.recordCastOrError(expression, possibleType, trace, dataFlowValue.isStableIdentifier(), false);
|
||||
return possibleType;
|
||||
}
|
||||
|
||||
+2
-2
@@ -96,7 +96,7 @@ public class ExpressionTypingUtils {
|
||||
}
|
||||
|
||||
public static boolean isBoolean(@NotNull JetType type) {
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(type, KotlinBuiltIns.getInstance().getBooleanType());
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(type, KotlinBuiltIns.getInstance().getBooleanType());
|
||||
}
|
||||
|
||||
public static boolean ensureBooleanResult(JetExpression operationSign, Name name, JetType resultType, ExpressionTypingContext context) {
|
||||
@@ -401,7 +401,7 @@ public class ExpressionTypingUtils {
|
||||
context.trace.record(COMPONENT_RESOLVED_CALL, entry, results.getResultingCall());
|
||||
componentType = results.getResultingDescriptor().getReturnType();
|
||||
if (componentType != null && !noExpectedType(expectedType)
|
||||
&& !JetTypeChecker.INSTANCE.isSubtypeOf(componentType, expectedType)) {
|
||||
&& !JetTypeChecker.DEFAULT.isSubtypeOf(componentType, expectedType)) {
|
||||
|
||||
context.trace.report(
|
||||
COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH.on(reportErrorsOn, componentName, componentType, expectedType));
|
||||
|
||||
+2
-2
@@ -254,7 +254,7 @@ public class PatternMatchingTypingVisitor extends ExpressionTypingVisitor {
|
||||
context = context.replaceDataFlowInfo(typeInfo.getDataFlowInfo());
|
||||
if (conditionExpected) {
|
||||
JetType booleanType = KotlinBuiltIns.getInstance().getBooleanType();
|
||||
if (!JetTypeChecker.INSTANCE.equalTypes(booleanType, type)) {
|
||||
if (!JetTypeChecker.DEFAULT.equalTypes(booleanType, type)) {
|
||||
context.trace.report(TYPE_MISMATCH_IN_CONDITION.on(expression, type));
|
||||
}
|
||||
else {
|
||||
@@ -294,7 +294,7 @@ public class PatternMatchingTypingVisitor extends ExpressionTypingVisitor {
|
||||
context.trace.report(Errors.USELESS_NULLABLE_CHECK.on(nullableType));
|
||||
}
|
||||
checkTypeCompatibility(context, type, subjectType, typeReferenceAfterIs);
|
||||
if (CastDiagnosticsUtil.isCastErased(subjectType, type, JetTypeChecker.INSTANCE)) {
|
||||
if (CastDiagnosticsUtil.isCastErased(subjectType, type, JetTypeChecker.DEFAULT)) {
|
||||
context.trace.report(Errors.CANNOT_CHECK_FOR_ERASED.on(typeReferenceAfterIs, type));
|
||||
}
|
||||
return new DataFlowInfos(context.dataFlowInfo.establishSubtyping(subjectDataFlowValue, type), context.dataFlowInfo);
|
||||
|
||||
@@ -80,7 +80,7 @@ public class MainFunctionDetector {
|
||||
List<TypeProjection> typeArguments = parameterType.getArguments();
|
||||
if (typeArguments.size() == 1) {
|
||||
JetType typeArgument = typeArguments.get(0).getType();
|
||||
if (JetTypeChecker.INSTANCE.equalTypes(typeArgument, kotlinBuiltIns.getStringType())) {
|
||||
if (JetTypeChecker.DEFAULT.equalTypes(typeArgument, kotlinBuiltIns.getStringType())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -503,7 +503,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
||||
for (String type : types) {
|
||||
typesToIntersect.add(makeType(type));
|
||||
}
|
||||
JetType result = TypeUtils.intersect(JetTypeChecker.INSTANCE, typesToIntersect);
|
||||
JetType result = TypeUtils.intersect(JetTypeChecker.DEFAULT, typesToIntersect);
|
||||
// assertNotNull("Intersection is null for " + typesToIntersect, result);
|
||||
assertEquals(makeType(expected), result);
|
||||
}
|
||||
@@ -520,7 +520,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
||||
private void assertSubtypingRelation(String subtype, String supertype, boolean expected) {
|
||||
JetType typeNode1 = makeType(subtype);
|
||||
JetType typeNode2 = makeType(supertype);
|
||||
boolean result = JetTypeChecker.INSTANCE.isSubtypeOf(
|
||||
boolean result = JetTypeChecker.DEFAULT.isSubtypeOf(
|
||||
typeNode1,
|
||||
typeNode2);
|
||||
String modifier = expected ? "not " : "";
|
||||
|
||||
+1
-1
@@ -181,7 +181,7 @@ class LazyJavaClassDescriptor(
|
||||
val candidateReturnType = candidate.getReturnType()
|
||||
val currentMostSpecificReturnType = currentMostSpecificType.getReturnType()
|
||||
assert(candidateReturnType != null && currentMostSpecificReturnType != null, "$candidate, $currentMostSpecificReturnType")
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(candidateReturnType!!, currentMostSpecificReturnType!!)) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(candidateReturnType!!, currentMostSpecificReturnType!!)) {
|
||||
currentMostSpecificType = candidate
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -147,7 +147,7 @@ class LazyJavaTypeResolver(
|
||||
for (supertype in (classifier() as JavaTypeParameter).getUpperBounds()) {
|
||||
supertypesJet.add(transformJavaType(supertype, UPPER_BOUND.toAttributes()))
|
||||
}
|
||||
return TypeUtils.intersect(JetTypeChecker.INSTANCE, supertypesJet)
|
||||
return TypeUtils.intersect(JetTypeChecker.DEFAULT, supertypesJet)
|
||||
?: ErrorUtils.createErrorType("Can't intersect upper bounds of " + javaType.getPresentableText())
|
||||
}
|
||||
|
||||
@@ -276,4 +276,4 @@ fun TypeUsage.toAttributes() = object : JavaTypeAttributes {
|
||||
override val howThisTypeIsUsedAccordingToAnnotations: TypeUsage
|
||||
get() = howThisTypeIsUsed
|
||||
override val isMarkedNotNull: Boolean = false
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -132,7 +132,7 @@ public abstract class AbstractTypeParameterDescriptor extends DeclarationDescrip
|
||||
private JetType computeUpperBoundsAsType() {
|
||||
Set<JetType> upperBounds = getUpperBounds();
|
||||
assert !upperBounds.isEmpty() : "Upper bound list is empty in " + getName();
|
||||
JetType upperBoundsAsType = TypeUtils.intersect(JetTypeChecker.INSTANCE, upperBounds);
|
||||
JetType upperBoundsAsType = TypeUtils.intersect(JetTypeChecker.DEFAULT, upperBounds);
|
||||
return upperBoundsAsType != null ? upperBoundsAsType : KotlinBuiltIns.getInstance().getNothingType();
|
||||
}
|
||||
|
||||
|
||||
@@ -459,7 +459,7 @@ public class DescriptorUtils {
|
||||
JetType nullableString = TypeUtils.makeNullable(KotlinBuiltIns.getInstance().getStringType());
|
||||
return "valueOf".equals(functionDescriptor.getName().asString())
|
||||
&& methodTypeParameters.size() == 1
|
||||
&& JetTypeChecker.INSTANCE.isSubtypeOf(methodTypeParameters.get(0).getType(), nullableString);
|
||||
&& JetTypeChecker.DEFAULT.isSubtypeOf(methodTypeParameters.get(0).getType(), nullableString);
|
||||
}
|
||||
|
||||
public static boolean isEnumValuesMethod(@NotNull FunctionDescriptor functionDescriptor) {
|
||||
|
||||
@@ -113,7 +113,7 @@ public class OverridingUtil {
|
||||
JetType superValueParameterType = getUpperBound(superValueParameters.get(i));
|
||||
JetType subValueParameterType = getUpperBound(subValueParameters.get(i));
|
||||
// TODO: compare erasure
|
||||
if (!JetTypeChecker.INSTANCE.equalTypes(superValueParameterType, subValueParameterType)) {
|
||||
if (!JetTypeChecker.DEFAULT.equalTypes(superValueParameterType, subValueParameterType)) {
|
||||
return OverrideCompatibilityInfo.typeParameterNumberMismatch();
|
||||
}
|
||||
}
|
||||
@@ -165,7 +165,7 @@ public class OverridingUtil {
|
||||
|
||||
if (superReturnType != null && subReturnType != null) {
|
||||
boolean bothErrors = subReturnType.isError() && superReturnType.isError();
|
||||
if (!bothErrors && !JetTypeChecker.INSTANCE.isSubtypeOf(subReturnType, superReturnType, localEqualityAxioms)) {
|
||||
if (!bothErrors && !JetTypeChecker.DEFAULT.isSubtypeOf(subReturnType, superReturnType, localEqualityAxioms)) {
|
||||
return OverrideCompatibilityInfo.returnTypeMismatch(superReturnType, subReturnType);
|
||||
}
|
||||
}
|
||||
@@ -203,7 +203,7 @@ public class OverridingUtil {
|
||||
@NotNull JetTypeChecker.TypeConstructorEquality axioms
|
||||
) {
|
||||
boolean bothErrors = typeInSuper.isError() && typeInSub.isError();
|
||||
if (!bothErrors && !JetTypeChecker.INSTANCE.equalTypes(typeInSuper, typeInSub, axioms)) {
|
||||
if (!bothErrors && !JetTypeChecker.DEFAULT.equalTypes(typeInSuper, typeInSub, axioms)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -317,7 +317,7 @@ public class OverridingUtil {
|
||||
JetType bReturnType = b.getReturnType();
|
||||
assert bReturnType != null;
|
||||
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(aReturnType, bReturnType);
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(aReturnType, bReturnType);
|
||||
}
|
||||
if (a instanceof PropertyDescriptor) {
|
||||
assert b instanceof PropertyDescriptor : "b is " + b.getClass();
|
||||
@@ -327,7 +327,7 @@ public class OverridingUtil {
|
||||
}
|
||||
|
||||
// both vals
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(((PropertyDescriptor) a).getType(), ((PropertyDescriptor) b).getType());
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(((PropertyDescriptor) a).getType(), ((PropertyDescriptor) b).getType());
|
||||
}
|
||||
throw new IllegalArgumentException("Unexpected callable: " + a.getClass());
|
||||
}
|
||||
|
||||
+4
-4
@@ -197,7 +197,7 @@ public class TypeBoundsImpl implements TypeBounds {
|
||||
}
|
||||
|
||||
Set<JetType> upperBounds = filterBounds(bounds, BoundKind.UPPER_BOUND, values);
|
||||
JetType intersectionOfUpperBounds = TypeUtils.intersect(JetTypeChecker.INSTANCE, upperBounds);
|
||||
JetType intersectionOfUpperBounds = TypeUtils.intersect(JetTypeChecker.DEFAULT, upperBounds);
|
||||
if (!upperBounds.isEmpty() && intersectionOfUpperBounds != null) {
|
||||
if (tryPossibleAnswer(intersectionOfUpperBounds)) {
|
||||
return Collections.singleton(intersectionOfUpperBounds);
|
||||
@@ -216,19 +216,19 @@ public class TypeBoundsImpl implements TypeBounds {
|
||||
for (Bound bound : bounds) {
|
||||
switch (bound.kind) {
|
||||
case LOWER_BOUND:
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(bound.type, possibleAnswer)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(bound.type, possibleAnswer)) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
case UPPER_BOUND:
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(possibleAnswer, bound.type)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(possibleAnswer, bound.type)) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
case EXACT_BOUND:
|
||||
if (!JetTypeChecker.INSTANCE.equalTypes(bound.type, possibleAnswer)) {
|
||||
if (!JetTypeChecker.DEFAULT.equalTypes(bound.type, possibleAnswer)) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -352,7 +352,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
||||
for (VariableDescriptor oldProperty : properties) {
|
||||
ReceiverParameterDescriptor receiverParameterForOldVariable = oldProperty.getReceiverParameter();
|
||||
if (((receiverParameter != null && receiverParameterForOldVariable != null) &&
|
||||
(JetTypeChecker.INSTANCE.equalTypes(receiverParameter.getType(), receiverParameterForOldVariable.getType())))) {
|
||||
(JetTypeChecker.DEFAULT.equalTypes(receiverParameter.getType(), receiverParameterForOldVariable.getType())))) {
|
||||
redeclarationHandler.handleRedeclaration(oldProperty, variableDescriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public abstract class AbstractJetType implements JetType {
|
||||
|
||||
JetType type = (JetType) obj;
|
||||
|
||||
return isNullable() == type.isNullable() && JetTypeChecker.INSTANCE.equalTypes(this, type);
|
||||
return isNullable() == type.isNullable() && JetTypeChecker.DEFAULT.equalTypes(this, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -216,7 +216,7 @@ public class CommonSupertypes {
|
||||
}
|
||||
|
||||
if (ins != null) {
|
||||
JetType intersection = TypeUtils.intersect(JetTypeChecker.INSTANCE, ins);
|
||||
JetType intersection = TypeUtils.intersect(JetTypeChecker.DEFAULT, ins);
|
||||
if (intersection == null) {
|
||||
if (outs != null) {
|
||||
return new TypeProjectionImpl(OUT_VARIANCE, commonSupertype(outs));
|
||||
|
||||
@@ -142,7 +142,7 @@ public class TypeUtils {
|
||||
}
|
||||
|
||||
public static boolean isIntersectionEmpty(@NotNull JetType typeA, @NotNull JetType typeB) {
|
||||
return intersect(JetTypeChecker.INSTANCE, Sets.newLinkedHashSet(Lists.newArrayList(typeA, typeB))) == null;
|
||||
return intersect(JetTypeChecker.DEFAULT, Sets.newLinkedHashSet(Lists.newArrayList(typeA, typeB))) == null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -473,7 +473,7 @@ public class TypeUtils {
|
||||
}
|
||||
|
||||
public static boolean equalTypes(@NotNull JetType a, @NotNull JetType b) {
|
||||
return JetTypeChecker.INSTANCE.isSubtypeOf(a, b) && JetTypeChecker.INSTANCE.isSubtypeOf(b, a);
|
||||
return JetTypeChecker.DEFAULT.isSubtypeOf(a, b) && JetTypeChecker.DEFAULT.isSubtypeOf(b, a);
|
||||
}
|
||||
|
||||
public static boolean dependsOnTypeParameters(@NotNull JetType type, @NotNull Collection<TypeParameterDescriptor> typeParameters) {
|
||||
@@ -586,7 +586,7 @@ public class TypeUtils {
|
||||
return getDefaultPrimitiveNumberType(numberValueTypeConstructor);
|
||||
}
|
||||
for (JetType primitiveNumberType : numberValueTypeConstructor.getSupertypes()) {
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(primitiveNumberType, expectedType)) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(primitiveNumberType, expectedType)) {
|
||||
return primitiveNumberType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.types.TypeConstructor;
|
||||
|
||||
public class JetTypeChecker {
|
||||
|
||||
public static final JetTypeChecker INSTANCE = new JetTypeChecker();
|
||||
public static final JetTypeChecker DEFAULT = new JetTypeChecker();
|
||||
public interface TypeConstructorEquality {
|
||||
boolean equals(@NotNull TypeConstructor a, @NotNull TypeConstructor b);
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ fun createLookupElement(descriptor: DeclarationDescriptor, resolveSession: Resol
|
||||
return if (descriptor is FunctionDescriptor && descriptor.getValueParameters().isNotEmpty()) element.keepOldArgumentListOnTab() else element
|
||||
}
|
||||
|
||||
fun JetType.isSubtypeOf(expectedType: JetType) = !isError() && JetTypeChecker.INSTANCE.isSubtypeOf(this, expectedType)
|
||||
fun JetType.isSubtypeOf(expectedType: JetType) = !isError() && JetTypeChecker.DEFAULT.isSubtypeOf(this, expectedType)
|
||||
|
||||
fun <T : Any> T?.toList(): List<T> = if (this != null) listOf(this) else listOf()
|
||||
fun <T : Any> T?.toSet(): Set<T> = if (this != null) setOf(this) else setOf()
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ public open class ReplaceContainsIntention : AttributeCallReplacementIntention("
|
||||
val ret = call.resolved.getResultingDescriptor().getReturnType()
|
||||
?: return intentionFailed(editor, "undefined.returntype")
|
||||
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(ret, KotlinBuiltIns.getInstance().getBooleanType())) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(ret, KotlinBuiltIns.getInstance().getBooleanType())) {
|
||||
return intentionFailed(editor, "contains.returns.boolean")
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -327,7 +327,7 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith
|
||||
if (argument.getArgumentExpression() != null) {
|
||||
JetType paramType = getActualParameterType(param);
|
||||
JetType exprType = bindingContext.get(BindingContext.EXPRESSION_TYPE, argument.getArgumentExpression());
|
||||
return exprType == null || JetTypeChecker.INSTANCE.isSubtypeOf(exprType, paramType);
|
||||
return exprType == null || JetTypeChecker.DEFAULT.isSubtypeOf(exprType, paramType);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -127,7 +127,7 @@ public class AddFunctionParametersFix extends ChangeFunctionSignatureFix {
|
||||
JetType argumentType = expression != null ? bindingContext.get(BindingContext.EXPRESSION_TYPE, expression) : null;
|
||||
JetType parameterType = parameters.get(i).getType();
|
||||
|
||||
if (argumentType != null && !JetTypeChecker.INSTANCE.isSubtypeOf(argumentType, parameterType))
|
||||
if (argumentType != null && !JetTypeChecker.DEFAULT.isSubtypeOf(argumentType, parameterType))
|
||||
changeSignatureData.getParameters().get(i).setTypeText(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(argumentType));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -76,10 +76,10 @@ public class AddFunctionToSupertypeFix extends JetHintAction<JetNamedFunction> {
|
||||
if (o1.equals(o2)) {
|
||||
return 0;
|
||||
}
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(o1, o2)) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(o1, o2)) {
|
||||
return -1;
|
||||
}
|
||||
if (JetTypeChecker.INSTANCE.isSubtypeOf(o2, o1)) {
|
||||
if (JetTypeChecker.DEFAULT.isSubtypeOf(o2, o1)) {
|
||||
return 1;
|
||||
}
|
||||
return o1.toString().compareTo(o2.toString());
|
||||
|
||||
@@ -76,7 +76,7 @@ public class AddNameToArgumentFix extends JetIntentionAction<JetValueArgument> {
|
||||
for (ValueParameterDescriptor parameter: callableDescriptor.getValueParameters()) {
|
||||
String name = parameter.getName().asString();
|
||||
if (usedParameters.contains(name)) continue;
|
||||
if (type == null || JetTypeChecker.INSTANCE.isSubtypeOf(type, parameter.getType())) {
|
||||
if (type == null || JetTypeChecker.DEFAULT.isSubtypeOf(type, parameter.getType())) {
|
||||
names.add(name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ public class CastExpressionFix extends JetIntentionAction<JetExpression> {
|
||||
if (!super.isAvailable(project, editor, file)) return false;
|
||||
BindingContext context = ResolvePackage.getBindingContext((JetFile) file);
|
||||
JetType expressionType = context.get(BindingContext.EXPRESSION_TYPE, element);
|
||||
return expressionType != null && JetTypeChecker.INSTANCE.isSubtypeOf(type, expressionType);
|
||||
return expressionType != null && JetTypeChecker.DEFAULT.isSubtypeOf(type, expressionType);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -68,7 +68,7 @@ public class ChangeFunctionLiteralReturnTypeFix extends JetIntentionAction<JetFu
|
||||
if (correspondingProperty != null && QuickFixUtil.canEvaluateTo(correspondingProperty.getInitializer(), element)) {
|
||||
JetTypeReference correspondingPropertyTypeRef = correspondingProperty.getTypeRef();
|
||||
JetType propertyType = context.get(BindingContext.TYPE, correspondingPropertyTypeRef);
|
||||
if (propertyType != null && !JetTypeChecker.INSTANCE.isSubtypeOf(eventualFunctionLiteralType, propertyType)) {
|
||||
if (propertyType != null && !JetTypeChecker.DEFAULT.isSubtypeOf(eventualFunctionLiteralType, propertyType)) {
|
||||
appropriateQuickFix = new ChangeVariableTypeFix(correspondingProperty, eventualFunctionLiteralType);
|
||||
}
|
||||
return;
|
||||
@@ -78,7 +78,7 @@ public class ChangeFunctionLiteralReturnTypeFix extends JetIntentionAction<JetFu
|
||||
if (correspondingParameter != null) {
|
||||
JetTypeReference correspondingParameterTypeRef = correspondingParameter.getTypeReference();
|
||||
JetType parameterType = context.get(BindingContext.TYPE, correspondingParameterTypeRef);
|
||||
if (parameterType != null && !JetTypeChecker.INSTANCE.isSubtypeOf(eventualFunctionLiteralType, parameterType)) {
|
||||
if (parameterType != null && !JetTypeChecker.DEFAULT.isSubtypeOf(eventualFunctionLiteralType, parameterType)) {
|
||||
appropriateQuickFix = new ChangeParameterTypeFix(correspondingParameter, eventualFunctionLiteralType);
|
||||
}
|
||||
return;
|
||||
@@ -88,7 +88,7 @@ public class ChangeFunctionLiteralReturnTypeFix extends JetIntentionAction<JetFu
|
||||
if (parentFunction != null && QuickFixUtil.canFunctionOrGetterReturnExpression(parentFunction, element)) {
|
||||
JetTypeReference parentFunctionReturnTypeRef = parentFunction.getReturnTypeRef();
|
||||
JetType parentFunctionReturnType = context.get(BindingContext.TYPE, parentFunctionReturnTypeRef);
|
||||
if (parentFunctionReturnType != null && !JetTypeChecker.INSTANCE.isSubtypeOf(eventualFunctionLiteralType, parentFunctionReturnType)) {
|
||||
if (parentFunctionReturnType != null && !JetTypeChecker.DEFAULT.isSubtypeOf(eventualFunctionLiteralType, parentFunctionReturnType)) {
|
||||
appropriateQuickFix = new ChangeFunctionReturnTypeFix(parentFunction, eventualFunctionLiteralType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ public class ChangeFunctionReturnTypeFix extends JetIntentionAction<JetFunction>
|
||||
for (FunctionDescriptor overriddenFunction: descriptor.getOverriddenDescriptors()) {
|
||||
JetType overriddenFunctionType = overriddenFunction.getReturnType();
|
||||
if (overriddenFunctionType == null) continue;
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(functionType, overriddenFunctionType)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(functionType, overriddenFunctionType)) {
|
||||
overriddenMismatchingFunctions.add(overriddenFunction);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction<PsiE
|
||||
argumentExpression != null ? bindingContext.get(BindingContext.EXPRESSION_TYPE, argumentExpression) : null;
|
||||
JetType parameterType = parameters.get(i).getType();
|
||||
|
||||
if (argumentType == null || !JetTypeChecker.INSTANCE.isSubtypeOf(argumentType, parameterType)) {
|
||||
if (argumentType == null || !JetTypeChecker.DEFAULT.isSubtypeOf(argumentType, parameterType)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ public class ChangeMemberFunctionSignatureFix extends JetHintAction<JetNamedFunc
|
||||
@NotNull ValueParameterDescriptor superParameter
|
||||
) {
|
||||
// TODO: support for generic functions
|
||||
if (JetTypeChecker.INSTANCE.equalTypes(parameter.getType(), superParameter.getType())) {
|
||||
if (JetTypeChecker.DEFAULT.equalTypes(parameter.getType(), superParameter.getType())) {
|
||||
return superParameter.copy(parameter.getContainingDeclaration(), parameter.getName());
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -150,14 +150,14 @@ public class ChangeVariableTypeFix extends JetIntentionAction<JetVariableDeclara
|
||||
for (PropertyDescriptor overriddenProperty: propertyDescriptor.getOverriddenDescriptors()) {
|
||||
JetType overriddenPropertyType = overriddenProperty.getReturnType();
|
||||
if (overriddenPropertyType != null) {
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(propertyType, overriddenPropertyType)) {
|
||||
if (!JetTypeChecker.DEFAULT.isSubtypeOf(propertyType, overriddenPropertyType)) {
|
||||
overriddenMismatchingProperties.add(overriddenProperty);
|
||||
}
|
||||
else if (overriddenProperty.isVar() && !JetTypeChecker.INSTANCE.equalTypes(overriddenPropertyType, propertyType)) {
|
||||
else if (overriddenProperty.isVar() && !JetTypeChecker.DEFAULT.equalTypes(overriddenPropertyType, propertyType)) {
|
||||
canChangeOverriddenPropertyType = false;
|
||||
}
|
||||
if (overriddenProperty.isVar() && lowerBoundOfOverriddenPropertiesTypes != null &&
|
||||
!JetTypeChecker.INSTANCE.equalTypes(lowerBoundOfOverriddenPropertiesTypes, overriddenPropertyType)) {
|
||||
!JetTypeChecker.DEFAULT.equalTypes(lowerBoundOfOverriddenPropertiesTypes, overriddenPropertyType)) {
|
||||
lowerBoundOfOverriddenPropertiesTypes = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,7 +476,7 @@ private fun JetNamedDeclaration.guessType(context: BindingContext): Array<JetTyp
|
||||
if (expectedTypes.isEmpty() || expectedTypes.any { expectedType -> ErrorUtils.containsErrorType(expectedType) }) {
|
||||
return array<JetType>()
|
||||
}
|
||||
val theType = TypeUtils.intersect(JetTypeChecker.INSTANCE, expectedTypes)
|
||||
val theType = TypeUtils.intersect(JetTypeChecker.DEFAULT, expectedTypes)
|
||||
if (theType != null) {
|
||||
return array<JetType>(theType)
|
||||
}
|
||||
@@ -494,8 +494,8 @@ private class JetTypeSubstitution(public val forType: JetType, public val byType
|
||||
private fun JetType.substitute(substitution: JetTypeSubstitution, variance: Variance): JetType {
|
||||
if (when (variance) {
|
||||
Variance.INVARIANT -> this == substitution.forType
|
||||
Variance.IN_VARIANCE -> JetTypeChecker.INSTANCE.isSubtypeOf(this, substitution.forType)
|
||||
Variance.OUT_VARIANCE -> JetTypeChecker.INSTANCE.isSubtypeOf(substitution.forType, this)
|
||||
Variance.IN_VARIANCE -> JetTypeChecker.DEFAULT.isSubtypeOf(this, substitution.forType)
|
||||
Variance.OUT_VARIANCE -> JetTypeChecker.DEFAULT.isSubtypeOf(substitution.forType, this)
|
||||
}) {
|
||||
return substitution.byType
|
||||
}
|
||||
|
||||
@@ -90,10 +90,10 @@ public class QuickFixUtil {
|
||||
if (overriddenReturnType == null) {
|
||||
return null;
|
||||
}
|
||||
if (matchingReturnType == null || JetTypeChecker.INSTANCE.isSubtypeOf(overriddenReturnType, matchingReturnType)) {
|
||||
if (matchingReturnType == null || JetTypeChecker.DEFAULT.isSubtypeOf(overriddenReturnType, matchingReturnType)) {
|
||||
matchingReturnType = overriddenReturnType;
|
||||
}
|
||||
else if (!JetTypeChecker.INSTANCE.isSubtypeOf(matchingReturnType, overriddenReturnType)) {
|
||||
else if (!JetTypeChecker.DEFAULT.isSubtypeOf(matchingReturnType, overriddenReturnType)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public class JetNameSuggester {
|
||||
|
||||
private static void addNamesForType(ArrayList<String> result, JetType jetType, JetNameValidator validator) {
|
||||
KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance();
|
||||
JetTypeChecker typeChecker = JetTypeChecker.INSTANCE;
|
||||
JetTypeChecker typeChecker = JetTypeChecker.DEFAULT;
|
||||
jetType = TypeUtils.makeNotNullable(jetType); // wipe out '?'
|
||||
if (ErrorUtils.containsErrorType(jetType)) return;
|
||||
if (typeChecker.equalTypes(builtIns.getBooleanType(), jetType)) {
|
||||
|
||||
@@ -440,7 +440,7 @@ public class JetRefactoringUtil {
|
||||
BindingContext bindingContext = AnalyzerFacadeWithCache.getContextForElement(expression);
|
||||
JetType expressionType = bindingContext.get(BindingContext.EXPRESSION_TYPE, expression);
|
||||
if (expressionType == null || !(expressionType instanceof PackageType) &&
|
||||
!JetTypeChecker.INSTANCE.equalTypes(KotlinBuiltIns.
|
||||
!JetTypeChecker.DEFAULT.equalTypes(KotlinBuiltIns.
|
||||
getInstance().getUnitType(), expressionType)) {
|
||||
expressions.add(expression);
|
||||
}
|
||||
|
||||
+2
-5
@@ -31,11 +31,8 @@ import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.introduce.inplace.OccurrencesChooser;
|
||||
import kotlin.Function1;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
||||
import org.jetbrains.jet.analyzer.AnalyzerPackage;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
@@ -139,7 +136,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
||||
JetType typeNoExpectedType = AnalyzerPackage.computeTypeInfoInContext(
|
||||
expression, scope, bindingTrace, dataFlowInfo, TypeUtils.NO_EXPECTED_TYPE, resolveSession.getModuleDescriptor()
|
||||
).getType();
|
||||
if (expressionType != null && typeNoExpectedType != null && !JetTypeChecker.INSTANCE.equalTypes(expressionType,
|
||||
if (expressionType != null && typeNoExpectedType != null && !JetTypeChecker.DEFAULT.equalTypes(expressionType,
|
||||
typeNoExpectedType)) {
|
||||
noTypeInference = true;
|
||||
}
|
||||
@@ -149,7 +146,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
||||
return;
|
||||
}
|
||||
if (expressionType != null &&
|
||||
JetTypeChecker.INSTANCE.equalTypes(KotlinBuiltIns.getInstance().getUnitType(), expressionType)) {
|
||||
JetTypeChecker.DEFAULT.equalTypes(KotlinBuiltIns.getInstance().getUnitType(), expressionType)) {
|
||||
showErrorHint(project, editor, JetRefactoringBundle.message("cannot.refactor.expression.has.unit.type"));
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user