FIR IDE: fix not initialized containingClassAttr for copied declaration
This commit is contained in:
+2
-2
@@ -95,7 +95,7 @@ object LowLevelFirApiFacadeForCompletion {
|
||||
originalFunction: FirSimpleFunction,
|
||||
state: FirModuleResolveState
|
||||
): FirSimpleFunction {
|
||||
val builtFunction = firIdeProvider.buildFunctionWithBody(element)
|
||||
val builtFunction = firIdeProvider.buildFunctionWithBody(element, originalFunction)
|
||||
|
||||
// right now we can't resolve builtFunction header properly, as it built right in air,
|
||||
// without file, which is now required for running stages other then body resolve, so we
|
||||
@@ -115,7 +115,7 @@ object LowLevelFirApiFacadeForCompletion {
|
||||
originalProperty: FirProperty,
|
||||
state: FirModuleResolveState
|
||||
): FirProperty {
|
||||
val builtProperty = firIdeProvider.buildPropertyWithBody(element)
|
||||
val builtProperty = firIdeProvider.buildPropertyWithBody(element, originalProperty)
|
||||
|
||||
val originalSetter = originalProperty.setter
|
||||
val builtSetter = builtProperty.setter
|
||||
|
||||
+2
-2
@@ -81,8 +81,8 @@ internal class ReanalyzableFunctionStructureElement(
|
||||
firLazyDeclarationResolver: FirLazyDeclarationResolver,
|
||||
firIdeProvider: FirIdeProvider,
|
||||
): ReanalyzableFunctionStructureElement {
|
||||
val newFunction = firIdeProvider.buildFunctionWithBody(newKtDeclaration) as FirSimpleFunction
|
||||
val originalFunction = firSymbol.fir as FirSimpleFunction
|
||||
val newFunction = firIdeProvider.buildFunctionWithBody(newKtDeclaration, originalFunction) as FirSimpleFunction
|
||||
|
||||
return FileStructureUtil.withDeclarationReplaced(firFile, cache, originalFunction, newFunction) {
|
||||
firLazyDeclarationResolver.lazyResolveDeclaration(
|
||||
@@ -119,8 +119,8 @@ internal class ReanalyzablePropertyStructureElement(
|
||||
firLazyDeclarationResolver: FirLazyDeclarationResolver,
|
||||
firIdeProvider: FirIdeProvider,
|
||||
): ReanalyzablePropertyStructureElement {
|
||||
val newProperty = firIdeProvider.buildPropertyWithBody(newKtDeclaration)
|
||||
val originalProperty = firSymbol.fir
|
||||
val newProperty = firIdeProvider.buildPropertyWithBody(newKtDeclaration, originalProperty)
|
||||
|
||||
return FileStructureUtil.withDeclarationReplaced(firFile, cache, originalProperty, newProperty) {
|
||||
firLazyDeclarationResolver.lazyResolveDeclaration(
|
||||
|
||||
+3
-3
@@ -32,7 +32,7 @@ internal object FirLazyBodiesCalculator {
|
||||
fun calculateLazyBodiesForFunction(simpleFunction: FirSimpleFunction) {
|
||||
if (simpleFunction.body !is FirLazyBlock) return
|
||||
val rawFirBuilder = createRawFirBuilder(simpleFunction)
|
||||
val newFunction = rawFirBuilder.buildFunctionWithBody(simpleFunction.psi as KtNamedFunction) as FirSimpleFunction
|
||||
val newFunction = rawFirBuilder.buildFunctionWithBody(simpleFunction.psi as KtNamedFunction, simpleFunction) as FirSimpleFunction
|
||||
simpleFunction.apply {
|
||||
replaceBody(newFunction.body)
|
||||
replaceContractDescription(newFunction.contractDescription)
|
||||
@@ -43,7 +43,7 @@ internal object FirLazyBodiesCalculator {
|
||||
require(!secondaryConstructor.isPrimary)
|
||||
if (secondaryConstructor.body !is FirLazyBlock) return
|
||||
val rawFirBuilder = createRawFirBuilder(secondaryConstructor)
|
||||
val newFunction = rawFirBuilder.buildSecondaryConstructor(secondaryConstructor.psi as KtSecondaryConstructor)
|
||||
val newFunction = rawFirBuilder.buildSecondaryConstructor(secondaryConstructor.psi as KtSecondaryConstructor, secondaryConstructor)
|
||||
secondaryConstructor.apply {
|
||||
replaceBody(newFunction.body)
|
||||
}
|
||||
@@ -53,7 +53,7 @@ internal object FirLazyBodiesCalculator {
|
||||
if (!needCalculatingLazyBodyForProperty(firProperty)) return
|
||||
|
||||
val rawFirBuilder = createRawFirBuilder(firProperty)
|
||||
val newProperty = rawFirBuilder.buildPropertyWithBody(firProperty.psi as KtProperty)
|
||||
val newProperty = rawFirBuilder.buildPropertyWithBody(firProperty.psi as KtProperty, firProperty)
|
||||
|
||||
firProperty.getter?.takeIf { it.body is FirLazyBlock }?.let { getter ->
|
||||
val newGetter = newProperty.getter!!
|
||||
|
||||
+4
-4
@@ -95,12 +95,12 @@ internal class FirIdeProvider(
|
||||
|
||||
// TODO move out of here
|
||||
// used only for completion
|
||||
fun buildFunctionWithBody(ktNamedFunction: KtNamedFunction): FirFunction<*> {
|
||||
return RawFirBuilder(session, kotlinScopeProvider).buildFunctionWithBody(ktNamedFunction)
|
||||
fun buildFunctionWithBody(ktNamedFunction: KtNamedFunction, original: FirFunction<*>): FirFunction<*> {
|
||||
return RawFirBuilder(session, kotlinScopeProvider).buildFunctionWithBody(ktNamedFunction, original)
|
||||
}
|
||||
|
||||
fun buildPropertyWithBody(ktNamedFunction: KtProperty): FirProperty {
|
||||
return RawFirBuilder(session, kotlinScopeProvider).buildPropertyWithBody(ktNamedFunction)
|
||||
fun buildPropertyWithBody(ktNamedFunction: KtProperty, original: FirProperty): FirProperty {
|
||||
return RawFirBuilder(session, kotlinScopeProvider).buildPropertyWithBody(ktNamedFunction, original)
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user