IR: do not build fake overrides for code fragments
Code fragment is a class that extends from Any, so technically it can have fake overrides for equals/hashCode/toString. However, K1 does not build them, and it's already checked in IR text tests in `analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments`, so don't build them in K2 as well. Also, the code in `KtFirCompilerFacility.createJvmIrCodegenFactory` looks for a single function defined in the code fragment.
This commit is contained in:
committed by
Space Team
parent
b88ce50500
commit
ebc2a18da5
@@ -24,10 +24,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.declarations.IrProperty
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyDeclarationBase
|
||||
import org.jetbrains.kotlin.ir.overrides.IrFakeOverrideBuilder
|
||||
@@ -197,7 +194,9 @@ private fun IrFakeOverrideBuilder.buildForAll(
|
||||
}
|
||||
|
||||
override fun visitClass(declaration: IrClass) {
|
||||
buildFakeOverrides(declaration)
|
||||
if (declaration.metadata !is MetadataSource.CodeFragment) {
|
||||
buildFakeOverrides(declaration)
|
||||
}
|
||||
declaration.acceptChildrenVoid(this)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user