diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt index 8855c11fecf..6790fd4748f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt @@ -40,10 +40,6 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, return StandardClassIds.Nothing(symbolProvider).constructType(emptyArray(), false) } - override fun anyType(): SimpleTypeMarker { - return StandardClassIds.Any(symbolProvider).constructType(emptyArray(), false) - } - override fun createFlexibleType(lowerBound: SimpleTypeMarker, upperBound: SimpleTypeMarker): KotlinTypeMarker { require(lowerBound is ConeKotlinType) require(upperBound is ConeKotlinType) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt index 2d6a3880fce..a630395347a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt @@ -135,7 +135,7 @@ class DiagnosticReporterByTrackingStrategy( require(diagnostic is ArgumentTypeMismatchDiagnostic) reportIfNonNull(callArgument.safeAs()?.valueArgument?.getArgumentExpression()) { if (it.isNull()) { - trace.reportDiagnosticOnce(NULL_FOR_NONNULL_TYPE.on(it, diagnostic.expectedType)) + trace.report(NULL_FOR_NONNULL_TYPE.on(it, diagnostic.expectedType)) } else { trace.report(TYPE_MISMATCH.on(it, diagnostic.expectedType, diagnostic.actualType)) } diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/SimpleArgumentsChecks.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/SimpleArgumentsChecks.kt index b2801012180..6b7f00d384a 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/SimpleArgumentsChecks.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/SimpleArgumentsChecks.kt @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.resolve.calls.inference.model.ArgumentConstraintPosi import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintPosition import org.jetbrains.kotlin.resolve.calls.inference.model.ReceiverConstraintPosition import org.jetbrains.kotlin.resolve.calls.model.* -import org.jetbrains.kotlin.types.NotNullTypeVariable import org.jetbrains.kotlin.types.UnwrappedType import org.jetbrains.kotlin.types.checker.captureFromExpression import org.jetbrains.kotlin.types.checker.hasSupertypeWithGivenTypeConstructor @@ -82,20 +81,6 @@ private fun checkExpressionArgument( val expectedNullableType = expectedType.makeNullableAsSpecified(true) val position = if (isReceiver) ReceiverConstraintPosition(expressionArgument) else ArgumentConstraintPosition(expressionArgument) - - // Used only for arguments with @NotNull annotation - if (expectedType is NotNullTypeVariable) { - var expectedTypeIsNull: Boolean = false - csBuilder.runTransaction { - addNotNullUpperConstraint(argumentType, position) - expectedTypeIsNull = hasContradiction - false - } - if (expectedTypeIsNull) { - diagnosticsHolder.addDiagnostic(ArgumentTypeMismatchDiagnostic(expectedType, argumentType, expressionArgument)) - } - } - if (expressionArgument.isSafeCall) { if (!csBuilder.addSubtypeConstraintIfCompatible(argumentType, expectedNullableType, position)) { diagnosticsHolder.addDiagnosticIfNotNull( diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt index 6657838e332..71cf58dd8d5 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt @@ -40,8 +40,6 @@ interface ConstraintSystemOperation { fun isPostponedTypeVariable(typeVariable: TypeVariableMarker): Boolean fun getProperSuperTypeConstructors(type: KotlinTypeMarker): List - - fun addNotNullUpperConstraint(type: KotlinTypeMarker, position: ConstraintPosition) } interface ConstraintSystemBuilder : ConstraintSystemOperation { diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt index f0063d8e613..379b4084f64 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt @@ -302,8 +302,4 @@ class NewConstraintSystemImpl( return constraints.any { (it.kind == ConstraintKind.UPPER || it.kind == ConstraintKind.EQUALITY) && it.type.isUnit() } } - - override fun addNotNullUpperConstraint(type: KotlinTypeMarker, position: ConstraintPosition) { - addSubtypeConstraint(type, anyType(), position) - } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/generics/projectionsScope/starNullabilityRecursive.kt b/compiler/testData/diagnostics/tests/generics/projectionsScope/starNullabilityRecursive.kt index 7a5f0dc7fdd..7cc339fe377 100644 --- a/compiler/testData/diagnostics/tests/generics/projectionsScope/starNullabilityRecursive.kt +++ b/compiler/testData/diagnostics/tests/generics/projectionsScope/starNullabilityRecursive.kt @@ -5,5 +5,6 @@ interface A?> { fun foo(): T? } fun testA(a: A<*>) { - a.foo() checkType { _?>() } + // in new inference here we have A>> + a.foo() checkType { _?>() } } diff --git a/compiler/testData/diagnostics/tests/j+k/sam/enhancedSamConstructor.kt b/compiler/testData/diagnostics/tests/j+k/sam/enhancedSamConstructor.kt index b08bed6f734..940d1900a42 100644 --- a/compiler/testData/diagnostics/tests/j+k/sam/enhancedSamConstructor.kt +++ b/compiler/testData/diagnostics/tests/j+k/sam/enhancedSamConstructor.kt @@ -18,11 +18,11 @@ public interface J2 extends J { fun main() { J { s: String -> s} // should be prohibited, because SAM value parameter has nullable type J { "" + it.length } - J { null } + J { null } J { it?.length?.toString() } J2 { s: String -> s} J2 { "" + it.length } - J2 { null } + J2 { null } J2 { it?.length?.toString() } } diff --git a/compiler/testData/diagnostics/tests/platformTypes/notNullTypeParameter/methodTypeParameter.kt b/compiler/testData/diagnostics/tests/platformTypes/notNullTypeParameter/methodTypeParameter.kt index b3cfaecde22..e1baf17bc99 100644 --- a/compiler/testData/diagnostics/tests/platformTypes/notNullTypeParameter/methodTypeParameter.kt +++ b/compiler/testData/diagnostics/tests/platformTypes/notNullTypeParameter/methodTypeParameter.kt @@ -11,15 +11,13 @@ public class A { // FILE: k.kt fun test() { - A.bar(null, "") + A.bar(null, "") A.bar(null, "") - A.bar(null, "") - A.bar("", "") - - A.bar(null, A.platformString()) + A.bar(null, "") + A.bar(null, A.platformString()) val x: String? = null - A.bar(x, "") - A.bar(null, "") + A.bar(x, "") + A.bar(null, "") } diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt index f73f8c9de52..197f2461af3 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt @@ -215,7 +215,7 @@ private object EnhancedTypeAnnotationDescriptor : AnnotationDescriptor { override fun toString() = "[EnhancedType]" } -internal class NotNullTypeParameter(override val delegate: SimpleType) : NotNullTypeVariable, DelegatingSimpleType() { +internal class NotNullTypeParameter(override val delegate: SimpleType) : CustomTypeVariable, DelegatingSimpleType() { override val isTypeVariable: Boolean get() = true diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeCapabilities.kt b/core/descriptors/src/org/jetbrains/kotlin/types/TypeCapabilities.kt index 428df8a0d3f..33924046ca8 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeCapabilities.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeCapabilities.kt @@ -27,10 +27,6 @@ interface CustomTypeVariable { fun substitutionResult(replacement: KotlinType): KotlinType } -// That interface is needed to provide information about definitely not null -// type parameters (e.g. from @NotNull annotation) to type system -interface NotNullTypeVariable : CustomTypeVariable - fun KotlinType.isCustomTypeVariable(): Boolean = (unwrap() as? CustomTypeVariable)?.isTypeVariable ?: false fun KotlinType.getCustomTypeVariable(): CustomTypeVariable? = (unwrap() as? CustomTypeVariable)?.let { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt index c1f1411db37..570f1215948 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt @@ -333,10 +333,6 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext { return builtIns.nothingType } - override fun anyType(): SimpleTypeMarker { - return builtIns.anyType - } - val builtIns: KotlinBuiltIns get() = throw UnsupportedOperationException("Not supported") override fun KotlinTypeMarker.makeDefinitelyNotNullOrNotNull(): KotlinTypeMarker { diff --git a/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt b/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt index 39ff35c9caf..062d58c8a36 100644 --- a/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt +++ b/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt @@ -49,7 +49,6 @@ interface TypeSystemBuiltInsContext { fun nullableNothingType(): SimpleTypeMarker fun nullableAnyType(): SimpleTypeMarker fun nothingType(): SimpleTypeMarker - fun anyType(): SimpleTypeMarker } interface TypeSystemTypeFactoryContext {