@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.analysis.api.resolution.successfulCallOrNull
30
30
import org.jetbrains.kotlin.analysis.api.resolution.successfulFunctionCallOrNull
31
31
import org.jetbrains.kotlin.analysis.api.resolution.symbol
32
32
import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousFunctionSymbol
33
+ import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol
33
34
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol
34
35
import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol
35
36
import org.jetbrains.kotlin.analysis.api.symbols.KaVariableSymbol
@@ -764,9 +765,15 @@ fun KtExpression.isInitializedPredictably(searchStartNode: KtExpression, binding
764
765
/* *
765
766
* Checks if an expression is a function local variable
766
767
*/
768
+ @Deprecated(" use kotlin-analysis-api instead" , replaceWith = ReplaceWith (" isLocalVariable()" ))
767
769
fun KtExpression?.isLocalVariable (bindingContext : BindingContext ) =
768
770
(this is KtNameReferenceExpression ) && (bindingContext[BindingContext .REFERENCE_TARGET , this ] is LocalVariableDescriptor )
769
771
772
+ fun KtExpression?.isLocalVariable (): Boolean = withKaSession {
773
+ if (this @isLocalVariable !is KtNameReferenceExpression ) return false
774
+ return mainReference.resolveToSymbol() is KaLocalVariableSymbol
775
+ }
776
+
770
777
fun KtExpression?.setterMatches (bindingContext : BindingContext , propertyName : String , matcher : FunMatcherImpl ): Boolean = when (this ) {
771
778
is KtNameReferenceExpression -> (getReferencedName() == propertyName) &&
772
779
(matcher.matches((bindingContext[BindingContext .REFERENCE_TARGET , this ] as ? PropertyDescriptor )?.unwrappedSetMethod))
0 commit comments