Fir2Ir: wrap IrFakeOverrideBuilder call with try-catch
To add the file name to the exception message similarly to how it's done in `PerformByIrFilePhase.invokeSequential`, so that exceptions such as KT-65277 would be easier to diagnose.
This commit is contained in:
committed by
Space Team
parent
9e2c7ce1e1
commit
3d2d2af60c
@@ -8,9 +8,7 @@ package org.jetbrains.kotlin.ir.overrides
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyDeclarationBase
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
@@ -18,9 +16,6 @@ import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.ir.util.collectAndFilterRealOverrides
|
||||
import org.jetbrains.kotlin.ir.util.fileOrNull
|
||||
import org.jetbrains.kotlin.ir.util.render
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.resolve.OverridingUtil.OverrideCompatibilityInfo
|
||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||
import org.jetbrains.kotlin.types.TypeCheckerState
|
||||
@@ -519,27 +514,3 @@ fun IrDeclaration.isOverridableMemberOrAccessor(): Boolean = when (this) {
|
||||
is IrProperty -> isOverridableProperty()
|
||||
else -> false
|
||||
}
|
||||
|
||||
fun IrFakeOverrideBuilder.buildForAll(modules: List<IrModuleFragment>) {
|
||||
val builtFakeOverridesClasses = mutableSetOf<IrClass>()
|
||||
fun buildFakeOverrides(clazz: IrClass) {
|
||||
if (clazz is IrLazyDeclarationBase) return
|
||||
if (!builtFakeOverridesClasses.add(clazz)) return
|
||||
for (c in clazz.superTypes) {
|
||||
c.getClass()?.let { buildFakeOverrides(it) }
|
||||
}
|
||||
buildFakeOverridesForClass(clazz, false)
|
||||
}
|
||||
class ClassVisitor : IrElementVisitorVoid {
|
||||
override fun visitElement(element: IrElement) {
|
||||
element.acceptChildrenVoid(this)
|
||||
}
|
||||
override fun visitClass(declaration: IrClass) {
|
||||
buildFakeOverrides(declaration)
|
||||
declaration.acceptChildrenVoid(this)
|
||||
}
|
||||
}
|
||||
for (module in modules) {
|
||||
module.acceptVoid(ClassVisitor())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user