JVM_IR: fix source file name for mutlifile class facades

This commit is contained in:
Dmitry Petrov
2020-07-24 15:46:49 +03:00
parent 89a0b3e944
commit 43fcb2330e
15 changed files with 128 additions and 26 deletions
@@ -153,7 +153,9 @@ abstract class ClassCodegen protected constructor(
if (withinInline || !smap.isTrivial) {
visitor.visitSMAP(smap, !context.state.languageVersionSettings.supportsFeature(LanguageFeature.CorrectSourceMappingSyntax))
} else {
visitor.visitSource(smap.sourceInfo!!.source, null)
smap.sourceInfo!!.sourceFileName?.let {
visitor.visitSource(it, null)
}
}
visitor.done()
@@ -87,15 +87,19 @@ fun JvmBackendContext.getSourceMapper(declaration: IrClass): SourceMapper {
// NOTE: apparently inliner requires the source range to cover the
// whole file the class is declared in rather than the class only.
// TODO: revise
val endLineNumber = when {
fileEntry is MultifileFacadeFileEntry -> 0
val endLineNumber = when (fileEntry) {
is MultifileFacadeFileEntry -> 0
else -> fileEntry?.getSourceRangeInfo(0, fileEntry.maxOffset)?.endLineNumber ?: 0
}
val sourceFileName = when (fileEntry) {
is MultifileFacadeFileEntry -> fileEntry.partFiles.singleOrNull()?.name
else -> declaration.fileParent.name
}
return SourceMapper(
SourceInfo.createInfoForIr(
endLineNumber + 1,
SourceInfo(
sourceFileName,
typeMapper.mapClass(declaration).internalName,
declaration.fileParent.name
endLineNumber + 1
)
)
}