IR: put resolution of unbound type parameter symbols behind a language version flag

This commit is contained in:
Georgy Bronnikov
2020-04-15 15:49:59 +03:00
parent 7ec4c9990a
commit 9634e6fba3
3 changed files with 19 additions and 16 deletions
@@ -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<FirRegularClass>().firstOrNull { it.status.isCompanion }
superTypeRefs.transformInplace(transformer, data)
transformControlFlowGraphReference(transformer, data)
@@ -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<FirRegularClass>().firstOrNull { it.status.isCompanion }
superTypeRefs.transformInplace(transformer, data)
transformControlFlowGraphReference(transformer, data)
@@ -53,21 +53,24 @@ class ExternalDependenciesGenerator(
}
} while (unbound.isNotEmpty())
}
}
private val SymbolTable.allUnbound: List<IrSymbol>
get() {
val r = mutableListOf<IrSymbol>()
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<IrSymbol>
get() {
val r = mutableListOf<IrSymbol>()
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<IrProvider>.getDeclaration(symbol: IrSymbol): IrDeclaration =
firstNotNullResult { provider ->