FIR: serialize correct fqnames for local classes

This commit is contained in:
pyos
2020-12-04 12:05:27 +01:00
committed by Mikhail Glukhikh
parent 12f936f6b7
commit 41f56729f9
12 changed files with 65 additions and 24 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.serialization
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.metadata.serialization.StringTable
@@ -16,11 +17,11 @@ interface FirElementAwareStringTable : StringTable {
fun getFqNameIndex(classLikeDeclaration: FirClassLikeDeclaration<*>): Int {
val classId = classLikeDeclaration.symbol.classId.takeIf { !it.isLocal }
?: getLocalClassIdReplacement(classLikeDeclaration)
?: getLocalClassIdReplacement(classLikeDeclaration as FirClass<*>)
?: throw IllegalStateException("Cannot get FQ name of local class: ${classLikeDeclaration.render()}")
return getQualifiedClassNameIndex(classId)
}
fun getLocalClassIdReplacement(classLikeDeclaration: FirClassLikeDeclaration<*>): ClassId? = null
fun getLocalClassIdReplacement(firClass: FirClass<*>): ClassId? = null
}