Take into account SimpleTypeWithEnhancement and subtyping related places
^KT-47854 Fixed
This commit is contained in:
committed by
teamcityserver
parent
6ab632f6ad
commit
3eaa452f9e
Vendored
+1
@@ -1,4 +1,5 @@
|
|||||||
// JSPECIFY_STATE: warn
|
// JSPECIFY_STATE: warn
|
||||||
|
// !LANGUAGE: +TypeEnhancementImprovementsInStrictMode
|
||||||
// FILE: J1.java
|
// FILE: J1.java
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class SimpleTypeWithEnhancement(
|
|||||||
) : DelegatingSimpleType(),
|
) : DelegatingSimpleType(),
|
||||||
TypeWithEnhancement {
|
TypeWithEnhancement {
|
||||||
|
|
||||||
override val origin: UnwrappedType get() = delegate
|
override val origin get() = delegate
|
||||||
|
|
||||||
override fun replaceAnnotations(newAnnotations: Annotations): SimpleType =
|
override fun replaceAnnotations(newAnnotations: Annotations): SimpleType =
|
||||||
origin.replaceAnnotations(newAnnotations).wrapEnhancement(enhancement) as SimpleType
|
origin.replaceAnnotations(newAnnotations).wrapEnhancement(enhancement) as SimpleType
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy
|
|||||||
|
|
||||||
override fun SimpleTypeMarker.asCapturedType(): CapturedTypeMarker? {
|
override fun SimpleTypeMarker.asCapturedType(): CapturedTypeMarker? {
|
||||||
require(this is SimpleType, this::errorMessage)
|
require(this is SimpleType, this::errorMessage)
|
||||||
return this as? NewCapturedType
|
return if (this is SimpleTypeWithEnhancement) origin.asCapturedType() else this as? NewCapturedType
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun SimpleTypeMarker.asDefinitelyNotNullType(): DefinitelyNotNullTypeMarker? {
|
override fun SimpleTypeMarker.asDefinitelyNotNullType(): DefinitelyNotNullTypeMarker? {
|
||||||
@@ -326,9 +326,12 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy
|
|||||||
require(this is SimpleType, this::errorMessage)
|
require(this is SimpleType, this::errorMessage)
|
||||||
return !isError &&
|
return !isError &&
|
||||||
constructor.declarationDescriptor !is TypeAliasDescriptor &&
|
constructor.declarationDescriptor !is TypeAliasDescriptor &&
|
||||||
(constructor.declarationDescriptor != null || this is CapturedType || this is NewCapturedType || this is DefinitelyNotNullType || constructor is IntegerLiteralTypeConstructor)
|
(constructor.declarationDescriptor != null || this is CapturedType || this is NewCapturedType || this is DefinitelyNotNullType || constructor is IntegerLiteralTypeConstructor || isSingleClassifierTypeWithEnhancement())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun SimpleTypeMarker.isSingleClassifierTypeWithEnhancement() =
|
||||||
|
this is SimpleTypeWithEnhancement && origin.isSingleClassifierType()
|
||||||
|
|
||||||
override fun KotlinTypeMarker.contains(predicate: (KotlinTypeMarker) -> Boolean): Boolean {
|
override fun KotlinTypeMarker.contains(predicate: (KotlinTypeMarker) -> Boolean): Boolean {
|
||||||
require(this is KotlinType, this::errorMessage)
|
require(this is KotlinType, this::errorMessage)
|
||||||
return containsInternal(this, predicate)
|
return containsInternal(this, predicate)
|
||||||
|
|||||||
Reference in New Issue
Block a user