From 7866c63e49e8b10325f31fed1da938f6b16be807 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 25 May 2023 16:40:30 +0200 Subject: [PATCH] Fir2Ir: add fake overrides binding for script top level classes --- .../kotlin/fir/backend/Fir2IrVisitor.kt | 18 +++++++++++++----- .../script/classLiteralInsideFunction.kts | 1 - compiler/testData/codegen/script/kt20707.kts | 1 - 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index 67cd45f0952..fa7d78af042 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -213,13 +213,21 @@ class Fir2IrVisitor( } conversionScope.withParent(irScript) { for (statement in script.statements) { - if (statement is FirDeclaration) { - val irDeclaration = statement.accept(this@Fir2IrVisitor, null) as IrDeclaration - irScript.statements.add(irDeclaration) + val irStatement = if (statement is FirDeclaration) { + when { + statement is FirClass -> { + (statement.accept(this@Fir2IrVisitor, null) as IrClass).also { + converter.bindFakeOverridesInClass(it) + } + } + else -> { + statement.accept(this@Fir2IrVisitor, null) as? IrDeclaration + } + } } else { - val irStatement = statement.toIrStatement()!! - irScript.statements.add(irStatement) + statement.toIrStatement() } + irScript.statements.add(irStatement!!) } } declarationStorage.leaveScope(irScript) diff --git a/compiler/testData/codegen/script/classLiteralInsideFunction.kts b/compiler/testData/codegen/script/classLiteralInsideFunction.kts index 48c5a086d7d..33c01699e6b 100644 --- a/compiler/testData/codegen/script/classLiteralInsideFunction.kts +++ b/compiler/testData/codegen/script/classLiteralInsideFunction.kts @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_K2: JVM_IR package script.long.name.inside.packag diff --git a/compiler/testData/codegen/script/kt20707.kts b/compiler/testData/codegen/script/kt20707.kts index 189609df4d3..619090f4849 100644 --- a/compiler/testData/codegen/script/kt20707.kts +++ b/compiler/testData/codegen/script/kt20707.kts @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_K2: JVM_IR enum class Build { Debug, Release }