From 2fe498149eeaf30571b2dc0f92e1c252a45bd1d0 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 17 May 2021 16:15:01 +0200 Subject: [PATCH] Psi2ir: add file name to exception when generating synthetic declarations --- .../generators/IrSyntheticDeclarationGenerator.kt | 14 ++++++++++++++ .../kotlin/psi2ir/generators/ModuleGenerator.kt | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrSyntheticDeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrSyntheticDeclarationGenerator.kt index cbb2d891fc5..a696febbbd5 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrSyntheticDeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrSyntheticDeclarationGenerator.kt @@ -5,16 +5,30 @@ 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.DeclarationDescriptor 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.IrFile import org.jetbrains.kotlin.ir.util.withScope import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.resolve.DescriptorUtils 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 symbolTable = context.symbolTable diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt index 7ee162d21cf..7708d9ee5a3 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt @@ -89,7 +89,7 @@ class ModuleGenerator( referenceExpectsForUsedActuals(expectDescriptorToSymbol, context.symbolTable, irFile) } - irFile.acceptChildrenVoid(IrSyntheticDeclarationGenerator(context)) + IrSyntheticDeclarationGenerator(context).generateSyntheticDeclarations(irFile) insertImplicitCasts(irFile, context) context.callToSubstitutedDescriptorMap.clear()