Substitute underlying constructor when substituting type alias constructor
KT-17426 Constructor call of typealiased class gets suspicious type arguemnts
This commit is contained in:
+4
-6
@@ -18,14 +18,12 @@ FILE /delegatingConstructorCallToTypeAliasConstructor.kt
|
||||
CLASS CLASS C1
|
||||
CONSTRUCTOR public constructor C1()
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Cell(T)'
|
||||
value: TYPE_OP type=T origin=IMPLICIT_CAST typeOperand=T
|
||||
CONST String type=kotlin.String value='O'
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Cell(String)'
|
||||
value: CONST String type=kotlin.String value='O'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='C1'
|
||||
CLASS CLASS C2
|
||||
CONSTRUCTOR public constructor C2()
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Cell(T)'
|
||||
value: TYPE_OP type=T origin=IMPLICIT_CAST typeOperand=T
|
||||
CONST String type=kotlin.String value='K'
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Cell(String)'
|
||||
value: CONST String type=kotlin.String value='K'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='C2'
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
class A<Q>(val q: Q)
|
||||
|
||||
typealias B<X> = A<X>
|
||||
|
||||
typealias B2<T> = A<A<T>>
|
||||
|
||||
fun bar() {
|
||||
val b = B(2)
|
||||
val b2 = B2(b)
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
FILE /typeAliasCtorForGenericClass.kt
|
||||
CLASS CLASS A
|
||||
CONSTRUCTOR public constructor A<Q>(q: Q)
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='A'
|
||||
PROPERTY public final val q: Q
|
||||
FIELD PROPERTY_BACKING_FIELD public final val q: Q
|
||||
EXPRESSION_BODY
|
||||
GET_VAR 'value-parameter q: Q' type=Q origin=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-q>(): Q
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='<get-q>(): Q'
|
||||
GET_FIELD 'q: Q' type=Q origin=null
|
||||
receiver: GET_VAR '<receiver: A>' type=A<Q> origin=null
|
||||
TYPEALIAS typealias B = A<X> type=A<X>
|
||||
TYPEALIAS typealias B2 = A<A<T>> type=A<A<T>>
|
||||
FUN public fun bar(): kotlin.Unit
|
||||
BLOCK_BODY
|
||||
VAR val b: B<kotlin.Int> /* = A<kotlin.Int> */
|
||||
CALL 'constructor A(Int)' type=A<kotlin.Int> origin=null
|
||||
q: CONST Int type=kotlin.Int value='2'
|
||||
VAR val b2: B2<kotlin.Int> /* = A<A<kotlin.Int>> */
|
||||
CALL 'constructor A(A<Int>)' type=A<A<kotlin.Int>> origin=null
|
||||
q: GET_VAR 'b: B<Int> /* = A<Int> */' type=B<kotlin.Int> /* = A<kotlin.Int> */ origin=null
|
||||
@@ -901,6 +901,12 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/ir/irText/regressions/integerCoercionToT.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("typeAliasCtorForGenericClass.kt")
|
||||
public void testTypeAliasCtorForGenericClass() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/ir/irText/regressions/typeAliasCtorForGenericClass.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/ir/irText/singletons")
|
||||
|
||||
Reference in New Issue
Block a user