diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeJvmIrTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeJvmIrTextTestGenerated.java index ae534f405af..b7e0db4cb83 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeJvmIrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirLightTreeJvmIrTextTestGenerated.java @@ -2738,6 +2738,12 @@ public class FirLightTreeJvmIrTextTestGenerated extends AbstractFirLightTreeJvmI runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); } + @Test + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + @Test @TestMetadata("lambdaInEnumEntryConstructorCall.kt") public void testLambdaInEnumEntryConstructorCall() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiJvmIrTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiJvmIrTextTestGenerated.java index 55aac8d9a32..60ab570e4f2 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiJvmIrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/FirPsiJvmIrTextTestGenerated.java @@ -2738,6 +2738,12 @@ public class FirPsiJvmIrTextTestGenerated extends AbstractFirPsiJvmIrTextTest { runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); } + @Test + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + @Test @TestMetadata("lambdaInEnumEntryConstructorCall.kt") public void testLambdaInEnumEntryConstructorCall() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index 64e07afd2c0..cac4ea11117 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -466,8 +466,6 @@ class FirCallCompletionResultsWriterTransformer( delegatedConstructorCall.calleeReference as? FirNamedReferenceWithCandidate ?: return delegatedConstructorCall val subCandidate = calleeReference.candidate - val argumentsMapping = runIf(!calleeReference.isError) { calleeReference.candidate.createArgumentsMapping() } - delegatedConstructorCall.argumentList.transformArguments(this, argumentsMapping) if (calleeReference.isError) { subCandidate.argumentMapping?.let { delegatedConstructorCall.replaceArgumentList(buildArgumentListForErrorCall(delegatedConstructorCall.argumentList, it)) @@ -478,6 +476,10 @@ class FirCallCompletionResultsWriterTransformer( delegatedConstructorCall.replaceArgumentList(buildResolvedArgumentList(it, delegatedConstructorCall.argumentList.source)) } } + + val argumentsMapping = runIf(!calleeReference.isError) { subCandidate.createArgumentsMapping() } + delegatedConstructorCall.argumentList.transformArguments(this, argumentsMapping) + return delegatedConstructorCall.apply { replaceCalleeReference(calleeReference.toResolvedReference()) } diff --git a/compiler/testData/ir/irText/firProblems/kt59102.fir.ir.txt b/compiler/testData/ir/irText/firProblems/kt59102.fir.ir.txt new file mode 100644 index 00000000000..a238586864a --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/kt59102.fir.ir.txt @@ -0,0 +1,36 @@ +FILE fqName: fileName:/kt59102.kt + CLASS CLASS name:XAlign modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.XAlign + CONSTRUCTOR visibility:public <> (bits:kotlin.Long) returnType:.XAlign [primary] + VALUE_PARAMETER name:bits index:0 type:kotlin.Long + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:XAlign modality:FINAL visibility:public superTypes:[kotlin.Any]' + PROPERTY name:bits visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:bits type:kotlin.Long visibility:private [final] + EXPRESSION_BODY + GET_VAR 'bits: kotlin.Long declared in .XAlign.' type=kotlin.Long origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.XAlign) returnType:kotlin.Long + correspondingProperty: PROPERTY name:bits visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.XAlign + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.Long declared in .XAlign' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:bits type:kotlin.Long visibility:private [final]' type=kotlin.Long origin=null + receiver: GET_VAR ': .XAlign declared in .XAlign.' type=.XAlign origin=null + CONSTRUCTOR visibility:public <> () returnType:.XAlign + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor (bits: kotlin.Long) declared in .XAlign' + bits: CONST Long type=kotlin.Long value=2 + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any diff --git a/compiler/testData/ir/irText/firProblems/kt59102.fir.kt.txt b/compiler/testData/ir/irText/firProblems/kt59102.fir.kt.txt new file mode 100644 index 00000000000..c4ec8757274 --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/kt59102.fir.kt.txt @@ -0,0 +1,16 @@ +class XAlign { + constructor(bits: Long) /* primary */ { + super/*Any*/() + /* () */ + + } + + val bits: Long + field = bits + get + + constructor() { + this/*XAlign*/(bits = 2L) + } + +} diff --git a/compiler/testData/ir/irText/firProblems/kt59102.ir.txt b/compiler/testData/ir/irText/firProblems/kt59102.ir.txt new file mode 100644 index 00000000000..ceb588e9344 --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/kt59102.ir.txt @@ -0,0 +1,39 @@ +FILE fqName: fileName:/kt59102.kt + CLASS CLASS name:XAlign modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.XAlign + CONSTRUCTOR visibility:public <> (bits:kotlin.Long) returnType:.XAlign [primary] + VALUE_PARAMETER name:bits index:0 type:kotlin.Long + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:XAlign modality:FINAL visibility:public superTypes:[kotlin.Any]' + PROPERTY name:bits visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:bits type:kotlin.Long visibility:private [final] + EXPRESSION_BODY + GET_VAR 'bits: kotlin.Long declared in .XAlign.' type=kotlin.Long origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.XAlign) returnType:kotlin.Long + correspondingProperty: PROPERTY name:bits visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.XAlign + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.Long declared in .XAlign' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:bits type:kotlin.Long visibility:private [final]' type=kotlin.Long origin=null + receiver: GET_VAR ': .XAlign declared in .XAlign.' type=.XAlign origin=null + CONSTRUCTOR visibility:public <> () returnType:.XAlign + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor (bits: kotlin.Long) declared in .XAlign' + bits: CALL 'public open fun toLong (): kotlin.Long declared in kotlin.Int' type=kotlin.Long origin=null + $this: CALL 'public final fun shl (bitCount: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null + $this: CONST Int type=kotlin.Int value=1 + bitCount: CONST Int type=kotlin.Int value=1 + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any diff --git a/compiler/testData/ir/irText/firProblems/kt59102.kt b/compiler/testData/ir/irText/firProblems/kt59102.kt new file mode 100644 index 00000000000..f759e3e2fbc --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/kt59102.kt @@ -0,0 +1,3 @@ +class XAlign(val bits: Long) { + constructor() : this(1 shl 1) +} diff --git a/compiler/testData/ir/irText/firProblems/kt59102.kt.txt b/compiler/testData/ir/irText/firProblems/kt59102.kt.txt new file mode 100644 index 00000000000..c7b6025330f --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/kt59102.kt.txt @@ -0,0 +1,16 @@ +class XAlign { + constructor(bits: Long) /* primary */ { + super/*Any*/() + /* () */ + + } + + val bits: Long + field = bits + get + + constructor() { + this/*XAlign*/(bits = 1.shl(bitCount = 1).toLong()) + } + +} diff --git a/compiler/testData/ir/irText/firProblems/kt59102.sig.kt.txt b/compiler/testData/ir/irText/firProblems/kt59102.sig.kt.txt new file mode 100644 index 00000000000..e2459ce46be --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/kt59102.sig.kt.txt @@ -0,0 +1,26 @@ +// CHECK: +// Mangled name: XAlign +// Public signature: /XAlign|null[0] +class XAlign { + // CHECK: + // Mangled name: XAlign{}bits + // Public signature: /XAlign.bits|-2314303284935245061[0] + val bits: Long + // CHECK JVM_IR: + // Mangled name: XAlign#(){}kotlin.Long + // Public signature: /XAlign.bits.|-8015099027032327963[0] + // CHECK JS_IR: + // Mangled name: XAlign#(){} + // Public signature: /XAlign.bits.|-3920031234897259044[0] + get + + // CHECK: + // Mangled name: XAlign#(){} + // Public signature: /XAlign.|-5645683436151566731[0] + constructor() + // CHECK: + // Mangled name: XAlign#(kotlin.Long){} + // Public signature: /XAlign.|5217973964116651322[0] + constructor(bits: Long) /* primary */ + +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/ClassicJvmIrTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/ClassicJvmIrTextTestGenerated.java index a2b3d1ed606..dadafe2b3cf 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/ClassicJvmIrTextTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/ClassicJvmIrTextTestGenerated.java @@ -2738,6 +2738,12 @@ public class ClassicJvmIrTextTestGenerated extends AbstractClassicJvmIrTextTest runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); } + @Test + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + @Test @TestMetadata("lambdaInEnumEntryConstructorCall.kt") public void testLambdaInEnumEntryConstructorCall() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java index 02303ab26ff..e92af8e0a2e 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java @@ -2045,6 +2045,11 @@ public class KlibIrTextTestCaseGenerated extends AbstractKlibIrTextTestCase { runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); } + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + @TestMetadata("lambdaInEnumEntryConstructorCall.kt") public void testLambdaInEnumEntryConstructorCall() throws Exception { runTest("compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java index c78df1e2e43..e225da9247e 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java @@ -2348,6 +2348,12 @@ public class FirLightTreeJsIrTextTestGenerated extends AbstractFirLightTreeJsIrT runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); } + @Test + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + @Test @TestMetadata("lambdaInEnumEntryConstructorCall.kt") public void testLambdaInEnumEntryConstructorCall() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java index 50014e956a7..d9a799bb977 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java @@ -2348,6 +2348,12 @@ public class FirPsiJsIrTextTestGenerated extends AbstractFirPsiJsIrTextTest { runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); } + @Test + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + @Test @TestMetadata("lambdaInEnumEntryConstructorCall.kt") public void testLambdaInEnumEntryConstructorCall() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java index a2dcd85e920..b9a60c0b1db 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java @@ -2348,6 +2348,12 @@ public class ClassicJsIrTextTestGenerated extends AbstractClassicJsIrTextTest { runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); } + @Test + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + @Test @TestMetadata("lambdaInEnumEntryConstructorCall.kt") public void testLambdaInEnumEntryConstructorCall() throws Exception {