diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt index b7a1418ffd5..1d93cb0f28c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt @@ -23,6 +23,8 @@ import org.jetbrains.kotlin.ir.declarations.lazy.lazyVar import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl +import org.jetbrains.kotlin.ir.util.isFakeOverride +import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.name.Name class Fir2IrLazyClass( @@ -151,7 +153,7 @@ class Fir2IrLazyClass( if (declaration.name !in processedNames) { processedNames += declaration.name scope.processPropertiesByName(declaration.name) { - if (it is FirPropertySymbol) { + if (it is FirPropertySymbol && it.dispatchReceiverClassOrNull() == fir.symbol.toLookupTag()) { result += declarationStorage.getIrPropertySymbol(it).owner as IrProperty } } @@ -172,7 +174,9 @@ class Fir2IrLazyClass( // TODO: remove this check to save time for (declaration in result) { if (declaration.parent != this) { - throw AssertionError("Unmatched parent for lazy class member") + throw AssertionError( + "Unmatched parent for lazy class ${fir.name} member ${declaration.render()} f/o ${declaration.isFakeOverride}" + ) } } result diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/FirCompileKotlinAgainstKotlinTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/FirCompileKotlinAgainstKotlinTestGenerated.java index 9eabc99689d..dca0ac2c850 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/FirCompileKotlinAgainstKotlinTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/FirCompileKotlinAgainstKotlinTestGenerated.java @@ -435,6 +435,11 @@ public class FirCompileKotlinAgainstKotlinTestGenerated extends AbstractFirCompi runTest("compiler/testData/compileKotlinAgainstKotlin/fir/ExistingSymbolInFakeOverride.kt"); } + @TestMetadata("IncrementalCompilerRunner.kt") + public void testIncrementalCompilerRunner() throws Exception { + runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt"); + } + @TestMetadata("IrConstAcceptMultiModule.kt") public void testIrConstAcceptMultiModule() throws Exception { runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IrConstAcceptMultiModule.kt"); diff --git a/compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt b/compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt new file mode 100644 index 00000000000..0ffc71aaf4d --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt @@ -0,0 +1,24 @@ +// TARGET_BACKEND: JVM +// FILE: A.kt +// WITH_RUNTIME + +abstract class IncrementalCompilerRunner( + private val workingDir: String, + val fail: Boolean, + val output: Collection = emptyList() +) { + fun res(res: T? = null): String = (res as? String) ?: (if (fail) "FAIL" else workingDir) +} + +class IncrementalJsCompilerRunner( + private val workingDir: String, + fail: Boolean = true +) : IncrementalCompilerRunner(workingDir, fail) { +} + +// FILE: B.kt + +fun box(): String { + val runner = IncrementalJsCompilerRunner(workingDir = "OK", fail = false) + return runner.res() +} \ No newline at end of file diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java index 47dc0148f5e..131fa5a6431 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java @@ -440,6 +440,11 @@ public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotl runTest("compiler/testData/compileKotlinAgainstKotlin/fir/ExistingSymbolInFakeOverride.kt"); } + @TestMetadata("IncrementalCompilerRunner.kt") + public void testIncrementalCompilerRunner() throws Exception { + runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt"); + } + @TestMetadata("IrConstAcceptMultiModule.kt") public void testIrConstAcceptMultiModule() throws Exception { runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IrConstAcceptMultiModule.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrCompileKotlinAgainstKotlinTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrCompileKotlinAgainstKotlinTestGenerated.java index c80d0bae244..6f3c23ba64a 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrCompileKotlinAgainstKotlinTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrCompileKotlinAgainstKotlinTestGenerated.java @@ -435,6 +435,11 @@ public class IrCompileKotlinAgainstKotlinTestGenerated extends AbstractIrCompile runTest("compiler/testData/compileKotlinAgainstKotlin/fir/ExistingSymbolInFakeOverride.kt"); } + @TestMetadata("IncrementalCompilerRunner.kt") + public void testIncrementalCompilerRunner() throws Exception { + runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt"); + } + @TestMetadata("IrConstAcceptMultiModule.kt") public void testIrConstAcceptMultiModule() throws Exception { runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IrConstAcceptMultiModule.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmIrAgainstOldBoxTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmIrAgainstOldBoxTestGenerated.java index ec454d9f138..1a5dd9b4c01 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmIrAgainstOldBoxTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmIrAgainstOldBoxTestGenerated.java @@ -435,6 +435,11 @@ public class JvmIrAgainstOldBoxTestGenerated extends AbstractJvmIrAgainstOldBoxT runTest("compiler/testData/compileKotlinAgainstKotlin/fir/ExistingSymbolInFakeOverride.kt"); } + @TestMetadata("IncrementalCompilerRunner.kt") + public void testIncrementalCompilerRunner() throws Exception { + runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt"); + } + @TestMetadata("IrConstAcceptMultiModule.kt") public void testIrConstAcceptMultiModule() throws Exception { runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IrConstAcceptMultiModule.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmOldAgainstIrBoxTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmOldAgainstIrBoxTestGenerated.java index 032b2129eca..a152a8fc6b2 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmOldAgainstIrBoxTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/JvmOldAgainstIrBoxTestGenerated.java @@ -435,6 +435,11 @@ public class JvmOldAgainstIrBoxTestGenerated extends AbstractJvmOldAgainstIrBoxT runTest("compiler/testData/compileKotlinAgainstKotlin/fir/ExistingSymbolInFakeOverride.kt"); } + @TestMetadata("IncrementalCompilerRunner.kt") + public void testIncrementalCompilerRunner() throws Exception { + runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IncrementalCompilerRunner.kt"); + } + @TestMetadata("IrConstAcceptMultiModule.kt") public void testIrConstAcceptMultiModule() throws Exception { runTest("compiler/testData/compileKotlinAgainstKotlin/fir/IrConstAcceptMultiModule.kt");