Don't approximate abbreviation during substitution it as it can't be projected at top-level

^KT-42036 Fixed
This commit is contained in:
Victor Petukhov
2020-12-29 14:21:08 +03:00
parent 009add2b41
commit 30a5eee481
17 changed files with 258 additions and 4 deletions
@@ -0,0 +1,31 @@
typealias Action<K> = (@UnsafeVariance K) -> Unit
typealias Action2<K> = (@UnsafeVariance K) -> K
data class Tag<L>(val action: Action<L>)
data class Tag2<L>(val action: Action<in L>)
data class Tag3<in L>(val action: Action<L>)
data class Tag4<in L>(val action: Action<in L>)
data class Tag5<L>(val action: Action2<L>)
data class Tag6<out L>(val action: Action<in L>)
data class Tag7<out L>(val action: Action<L>)
data class Tag8<out L>(val action: Action2<L>)
fun getTag(): Tag<*> = Tag<Int> {}
fun getTag2(): Tag2<*> = Tag2<Int> {}
fun getTag3(): Tag3<*> = Tag3<Int> {}
fun getTag4(): Tag4<*> = Tag4<Int> {}
fun getTag5(): Tag5<*> = Tag5<Int> { 1 }
fun getTag6(): Tag6<*> = Tag6<Int> { }
fun getTag7(): Tag7<*> = Tag7<Int> { }
fun getTag8(): Tag8<*> = Tag8<Int> { 1 }
fun main() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Unit>")!>getTag().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Unit>")!>getTag2().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Unit>")!>getTag3().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Unit>")!>getTag4().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Any?>")!>getTag5().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Unit>")!>getTag6().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Unit>")!>getTag7().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Function1<kotlin.Nothing, kotlin.Any?>")!>getTag8().action<!>
}
@@ -0,0 +1,31 @@
typealias Action<K> = (@UnsafeVariance K) -> Unit
typealias Action2<K> = (@UnsafeVariance K) -> K
data class Tag<L>(val action: Action<L>)
data class Tag2<L>(val action: Action<in L>)
data class Tag3<in L>(val action: Action<L>)
data class Tag4<in L>(val action: Action<in L>)
data class Tag5<L>(val action: Action2<L>)
data class Tag6<out L>(val action: Action<in L>)
data class Tag7<out L>(val action: Action<L>)
data class Tag8<out L>(val action: Action2<L>)
fun getTag(): Tag<*> = Tag<Int> {}
fun getTag2(): Tag2<*> = Tag2<Int> {}
fun getTag3(): Tag3<*> = Tag3<Int> {}
fun getTag4(): Tag4<*> = Tag4<Int> {}
fun getTag5(): Tag5<*> = Tag5<Int> { 1 }
fun getTag6(): Tag6<*> = Tag6<Int> { }
fun getTag7(): Tag7<*> = Tag7<Int> { }
fun getTag8(): Tag8<*> = Tag8<Int> { 1 }
fun main() {
<!DEBUG_INFO_EXPRESSION_TYPE("Action<CapturedType(*)> /* = (kotlin.Any?) -> kotlin.Unit */")!>getTag().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("Action<in CapturedType(*)> /* = (kotlin.Any?) -> kotlin.Unit */")!>getTag2().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("Action<CapturedType(*)> /* = (kotlin.Any?) -> kotlin.Unit */")!>getTag3().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("Action<in CapturedType(*)> /* = (kotlin.Any?) -> kotlin.Unit */")!>getTag4().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("(kotlin.Any?) -> kotlin.Any?")!>getTag5().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("Action<in CapturedType(*)> /* = (kotlin.Any?) -> kotlin.Unit */")!>getTag6().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("Action<CapturedType(*)> /* = (kotlin.Any?) -> kotlin.Unit */")!>getTag7().action<!>
<!DEBUG_INFO_EXPRESSION_TYPE("(kotlin.Any?) -> kotlin.Any?")!>getTag8().action<!>
}
@@ -0,0 +1,93 @@
package
public fun getTag(): Tag<*>
public fun getTag2(): Tag2<*>
public fun getTag3(): Tag3<*>
public fun getTag4(): Tag4<*>
public fun getTag5(): Tag5<*>
public fun getTag6(): Tag6<*>
public fun getTag7(): Tag7<*>
public fun getTag8(): Tag8<*>
public fun main(): kotlin.Unit
public final data class Tag</*0*/ L> {
public constructor Tag</*0*/ L>(/*0*/ action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */)
public final val action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */
public final operator /*synthesized*/ fun component1(): Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */
public final /*synthesized*/ fun copy(/*0*/ action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */ = ...): Tag<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final data class Tag2</*0*/ L> {
public constructor Tag2</*0*/ L>(/*0*/ action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */)
public final val action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */
public final operator /*synthesized*/ fun component1(): Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */
public final /*synthesized*/ fun copy(/*0*/ action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */ = ...): Tag2<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final data class Tag3</*0*/ in L> {
public constructor Tag3</*0*/ in L>(/*0*/ action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */)
public final val action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */
public final operator /*synthesized*/ fun component1(): Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */
public final /*synthesized*/ fun copy(/*0*/ action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */ = ...): Tag3<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final data class Tag4</*0*/ in L> {
public constructor Tag4</*0*/ in L>(/*0*/ action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */)
public final val action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */
public final operator /*synthesized*/ fun component1(): Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */
public final /*synthesized*/ fun copy(/*0*/ action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */ = ...): Tag4<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final data class Tag5</*0*/ L> {
public constructor Tag5</*0*/ L>(/*0*/ action: Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */)
public final val action: Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */
public final operator /*synthesized*/ fun component1(): Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */
public final /*synthesized*/ fun copy(/*0*/ action: Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */ = ...): Tag5<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final data class Tag6</*0*/ out L> {
public constructor Tag6</*0*/ out L>(/*0*/ action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */)
public final val action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */
public final operator /*synthesized*/ fun component1(): Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */
public final /*synthesized*/ fun copy(/*0*/ action: Action<in L> /* = (in @kotlin.UnsafeVariance L) -> kotlin.Unit */ = ...): Tag6<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final data class Tag7</*0*/ out L> {
public constructor Tag7</*0*/ out L>(/*0*/ action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */)
public final val action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */
public final operator /*synthesized*/ fun component1(): Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */
public final /*synthesized*/ fun copy(/*0*/ action: Action<L> /* = (@kotlin.UnsafeVariance L) -> kotlin.Unit */ = ...): Tag7<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final data class Tag8</*0*/ out L> {
public constructor Tag8</*0*/ out L>(/*0*/ action: Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */)
public final val action: Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */
public final operator /*synthesized*/ fun component1(): Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */
public final /*synthesized*/ fun copy(/*0*/ action: Action2<L> /* = (@kotlin.UnsafeVariance L) -> L */ = ...): Tag8<L>
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public typealias Action</*0*/ K> = (@kotlin.UnsafeVariance K) -> kotlin.Unit
public typealias Action2</*0*/ K> = (@kotlin.UnsafeVariance K) -> K