Skip to content

Commit a6a11ab

Browse files
authored
Merge pull request #1041 from Kotlin/ide-declaration-resolve-fix
Map transformed calls and generated properties to their origin
2 parents e493477 + 48dab7a commit a6a11ab

File tree

5 files changed

+17
-8
lines changed

5 files changed

+17
-8
lines changed

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/CallShapeAttribute.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jetbrains.kotlinx.dataframe.plugin.extensions
22

3+
import org.jetbrains.kotlin.KtSourceElement
34
import org.jetbrains.kotlinx.dataframe.plugin.extensions.impl.SchemaProperty
45
import org.jetbrains.kotlin.fir.declarations.FirClass
56
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
@@ -9,7 +10,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
910
sealed interface CallShapeData {
1011
class Schema(val columns: List<SchemaProperty>) : CallShapeData
1112

12-
class Scope(val columns: List<SchemaProperty>) : CallShapeData
13+
class Scope(val columns: List<SchemaProperty>, val source: KtSourceElement?) : CallShapeData
1314

1415
class RefinedType(val scopes: List<FirRegularClassSymbol>) : CallShapeData
1516
}

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/FunctionCallTransformer.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ class FunctionCallTransformer(
328328
return if (element is FirResolvedNamedReference) {
329329
@Suppress("UNCHECKED_CAST")
330330
buildResolvedNamedReference {
331+
source = call.calleeReference.source
331332
this.name = element.name
332333
resolvedSymbol = originalSymbol
333334
} as E
@@ -555,7 +556,7 @@ class FunctionCallTransformer(
555556
}
556557
}
557558
schema.callShapeData = CallShapeData.Schema(properties)
558-
scope.callShapeData = CallShapeData.Scope(properties)
559+
scope.callShapeData = CallShapeData.Scope(properties, call.calleeReference.source)
559560
val schemaApi = DataSchemaApi(schema, scope)
560561
dataSchemaApis.add(schemaApi)
561562
return schemaApi

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/TokenGenerator.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,16 @@ class TokenGenerator(session: FirSession) : FirDeclarationGenerationExtension(se
5959
val callableId = CallableId(k.classId, propertyName.identifier)
6060
val dataRowExtension = generateExtensionProperty(
6161
callableId = callableId,
62-
symbol = k,
6362
receiverType = ConeClassLikeTypeImpl(
6463
ConeClassLikeLookupTagImpl(Names.DATA_ROW_CLASS_ID),
6564
typeArguments = arrayOf(schemaProperty.marker),
6665
isNullable = false
6766
),
6867
propertyName = propertyName,
6968
returnTypeRef = schemaProperty.dataRowReturnType.toFirResolvedTypeRef(),
70-
effectiveVisibility = EffectiveVisibility.Local
69+
symbol = k,
70+
effectiveVisibility = EffectiveVisibility.Local,
71+
source = callShapeData.source
7172
)
7273

7374
val columnContainerExtension = generateExtensionProperty(
@@ -80,7 +81,8 @@ class TokenGenerator(session: FirSession) : FirDeclarationGenerationExtension(se
8081
propertyName = propertyName,
8182
returnTypeRef = schemaProperty.columnContainerReturnType.toFirResolvedTypeRef(),
8283
symbol = k,
83-
effectiveVisibility = EffectiveVisibility.Local
84+
effectiveVisibility = EffectiveVisibility.Local,
85+
source = callShapeData.source
8486
)
8587
propertyName.identifier to listOf(dataRowExtension, columnContainerExtension)
8688
}

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/TopLevelExtensionsGenerator.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,8 @@ class TopLevelExtensionsGenerator(session: FirSession) : FirDeclarationGeneratio
120120
isNullable = false
121121
),
122122
propertyName = PropertyName.of(name, columnName?.let { PropertyName.buildAnnotation(it) }),
123-
returnTypeRef = resolvedReturnTypeRef
123+
returnTypeRef = resolvedReturnTypeRef,
124+
source = owner.source
124125
)
125126

126127
val columnReturnType = when {
@@ -142,7 +143,8 @@ class TopLevelExtensionsGenerator(session: FirSession) : FirDeclarationGeneratio
142143
isNullable = false
143144
),
144145
propertyName = PropertyName.of(name, columnName?.let { PropertyName.buildAnnotation(it) }),
145-
returnTypeRef = columnReturnType
146+
returnTypeRef = columnReturnType,
147+
source = owner.source
146148
)
147149
listOf(rowExtension.symbol, columnsContainerExtension.symbol)
148150
}

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/utils/firFactories.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jetbrains.kotlinx.dataframe.plugin.utils
22

3+
import org.jetbrains.kotlin.KtSourceElement
34
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
45
import org.jetbrains.kotlin.descriptors.Modality
56
import org.jetbrains.kotlin.descriptors.Visibilities
@@ -30,10 +31,12 @@ internal fun FirDeclarationGenerationExtension.generateExtensionProperty(
3031
propertyName: PropertyName,
3132
returnTypeRef: FirResolvedTypeRef,
3233
symbol: FirClassSymbol<*>? = null,
33-
effectiveVisibility: EffectiveVisibility = EffectiveVisibility.Public
34+
effectiveVisibility: EffectiveVisibility = EffectiveVisibility.Public,
35+
source: KtSourceElement?
3436
): FirProperty {
3537
val firPropertySymbol = FirPropertySymbol(callableId)
3638
return buildProperty {
39+
this.source = source
3740
propertyName.columnNameAnnotation?.let {
3841
annotations += it
3942
}

0 commit comments

Comments
 (0)