From 9634e6fba3254d5bf255cf3f9151ad969f3677ab Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Wed, 15 Apr 2020 15:49:59 +0300 Subject: [PATCH] IR: put resolution of unbound type parameter symbols behind a language version flag --- .../fir/declarations/impl/FirClassImpl.kt | 2 +- .../declarations/impl/FirSealedClassImpl.kt | 2 +- .../ir/util/ExternalDependenciesGenerator.kt | 31 ++++++++++--------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt index dd79976acbf..bdab3457cdc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt @@ -62,7 +62,7 @@ internal class FirClassImpl( transformAnnotations(transformer, data) typeParameters.transformInplace(transformer, data) transformStatus(transformer, data) - declarations.transformInplace(transformer, data) + transformDeclarations(transformer, data) companionObject = declarations.asSequence().filterIsInstance().firstOrNull { it.status.isCompanion } superTypeRefs.transformInplace(transformer, data) transformControlFlowGraphReference(transformer, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt index f386331c3ea..671b13f1aa6 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt @@ -65,7 +65,7 @@ internal class FirSealedClassImpl( transformAnnotations(transformer, data) typeParameters.transformInplace(transformer, data) transformStatus(transformer, data) - declarations.transformInplace(transformer, data) + transformDeclarations(transformer, data) companionObject = declarations.asSequence().filterIsInstance().firstOrNull { it.status.isCompanion } superTypeRefs.transformInplace(transformer, data) transformControlFlowGraphReference(transformer, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt index 26c792db6a5..2047dd51796 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt @@ -53,21 +53,24 @@ class ExternalDependenciesGenerator( } } while (unbound.isNotEmpty()) } -} -private val SymbolTable.allUnbound: List - get() { - val r = mutableListOf() - r.addAll(unboundClasses) - r.addAll(unboundConstructors) - r.addAll(unboundEnumEntries) - r.addAll(unboundFields) - r.addAll(unboundSimpleFunctions) - r.addAll(unboundProperties) - r.addAll(unboundTypeAliases) - r.addAll(unboundTypeParameters) - return r - } + + private val SymbolTable.allUnbound: List + get() { + val r = mutableListOf() + r.addAll(unboundClasses) + r.addAll(unboundConstructors) + r.addAll(unboundEnumEntries) + r.addAll(unboundFields) + r.addAll(unboundSimpleFunctions) + r.addAll(unboundProperties) + r.addAll(unboundTypeAliases) + if (!languageVersionSettings.supportsFeature(LanguageFeature.NewInference)) { + r.addAll(unboundTypeParameters) + } + return r + } +} fun List.getDeclaration(symbol: IrSymbol): IrDeclaration = firstNotNullResult { provider ->