Psi2ir: add file name to exception when generating synthetic declarations
This commit is contained in:
+14
@@ -5,16 +5,30 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.psi2ir.generators
|
package org.jetbrains.kotlin.psi2ir.generators
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.BackendException
|
||||||
|
import org.jetbrains.kotlin.backend.common.CodegenUtil
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
|
import org.jetbrains.kotlin.ir.PsiIrFileEntry
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.util.withScope
|
import org.jetbrains.kotlin.ir.util.withScope
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
|
|
||||||
class IrSyntheticDeclarationGenerator(context: GeneratorContext) : IrElementVisitorVoid {
|
class IrSyntheticDeclarationGenerator(context: GeneratorContext) : IrElementVisitorVoid {
|
||||||
|
fun generateSyntheticDeclarations(file: IrFile) {
|
||||||
|
try {
|
||||||
|
file.acceptChildrenVoid(this)
|
||||||
|
} catch (e: BackendException) {
|
||||||
|
throw e
|
||||||
|
} catch (e: Throwable) {
|
||||||
|
val psiFile = (file.fileEntry as? PsiIrFileEntry)?.psiFile
|
||||||
|
CodegenUtil.reportBackendException(e, "psi2ir", psiFile?.virtualFile?.path ?: psiFile?.name ?: file.fileEntry.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private val descriptorGenerator = SyntheticDeclarationsGenerator(context)
|
private val descriptorGenerator = SyntheticDeclarationsGenerator(context)
|
||||||
private val symbolTable = context.symbolTable
|
private val symbolTable = context.symbolTable
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ class ModuleGenerator(
|
|||||||
referenceExpectsForUsedActuals(expectDescriptorToSymbol, context.symbolTable, irFile)
|
referenceExpectsForUsedActuals(expectDescriptorToSymbol, context.symbolTable, irFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
irFile.acceptChildrenVoid(IrSyntheticDeclarationGenerator(context))
|
IrSyntheticDeclarationGenerator(context).generateSyntheticDeclarations(irFile)
|
||||||
|
|
||||||
insertImplicitCasts(irFile, context)
|
insertImplicitCasts(irFile, context)
|
||||||
context.callToSubstitutedDescriptorMap.clear()
|
context.callToSubstitutedDescriptorMap.clear()
|
||||||
|
|||||||
Reference in New Issue
Block a user