From dfc59d5d07186d07037d6eadf5f85aa8c6899d25 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Wed, 23 Nov 2022 20:58:12 +0100 Subject: [PATCH] [AA FIR] support symbol pointer restore for value parameter from delegated setter ^KT-54051 --- ...sSourceModuleSymbolByPsiTestGenerated.java | 6 + .../KtFirValueParameterSymbolPointer.kt | 4 +- ...sSourceModuleSymbolByPsiTestGenerated.java | 6 + ...sSourceModuleSymbolByPsiTestGenerated.java | 6 + .../delegatedProp.descriptors.pretty.txt | 3 + .../symbolByPsi/delegatedProp.descriptors.txt | 110 ++++++++++++++++++ .../symbols/symbolByPsi/delegatedProp.kt | 3 + .../symbolByPsi/delegatedProp.pretty.txt | 3 + .../symbols/symbolByPsi/delegatedProp.txt | 109 +++++++++++++++++ 9 files changed, 248 insertions(+), 2 deletions(-) create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.pretty.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.kt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.pretty.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.txt diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java index e7937309dba..b841c398f8b 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java @@ -106,6 +106,12 @@ public class Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends A runTest("analysis/analysis-api/testData/symbols/symbolByPsi/delegateField.kt"); } + @Test + @TestMetadata("delegatedProp.kt") + public void testDelegatedProp() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.kt"); + } + @Test @TestMetadata("deprecated.kt") public void testDeprecated() throws Exception { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirValueParameterSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirValueParameterSymbolPointer.kt index 220dca8c0e5..e4294d593ca 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirValueParameterSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirValueParameterSymbolPointer.kt @@ -26,7 +26,7 @@ internal class KtFirValueParameterSymbolPointer( } val function = ownerSymbol.firSymbol.fir as? FirFunction ?: return null - val firValueParameterSymbol = function.valueParameters.getOrNull(index)?.takeIf { it.name == name } ?: return null - return analysisSession.firSymbolBuilder.variableLikeBuilder.buildValueParameterSymbol(firValueParameterSymbol.symbol) + val firValueParameterSymbol = function.valueParameters.getOrNull(index)?.symbol?.takeIf { it.name == name } ?: return null + return analysisSession.firSymbolBuilder.variableLikeBuilder.buildValueParameterSymbol(firValueParameterSymbol) } } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java index 81b216789c4..2212f5396f4 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java @@ -106,6 +106,12 @@ public class FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends Ab runTest("analysis/analysis-api/testData/symbols/symbolByPsi/delegateField.kt"); } + @Test + @TestMetadata("delegatedProp.kt") + public void testDelegatedProp() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.kt"); + } + @Test @TestMetadata("deprecated.kt") public void testDeprecated() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java index c13153b4f79..e3315326cbd 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java @@ -106,6 +106,12 @@ public class FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated ext runTest("analysis/analysis-api/testData/symbols/symbolByPsi/delegateField.kt"); } + @Test + @TestMetadata("delegatedProp.kt") + public void testDelegatedProp() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.kt"); + } + @Test @TestMetadata("deprecated.kt") public void testDeprecated() throws Exception { diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.pretty.txt new file mode 100644 index 00000000000..327ebca0037 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.pretty.txt @@ -0,0 +1,3 @@ +var delegatedProp: kotlin.String + get() + set(value: kotlin.String) \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.txt new file mode 100644 index 00000000000..01c1697b6f6 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.descriptors.txt @@ -0,0 +1,110 @@ +KtKotlinPropertySymbol: + annotationsList: [] + callableIdIfNonLocal: /delegatedProp + contextReceivers: [] + getter: KtPropertyGetterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + hasBody: false + hasStableParameterNames: true + isDefault: true + isExtension: false + isInline: false + isOverride: false + modality: FINAL + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + symbolKind: ACCESSOR + typeParameters: [] + valueParameters: [] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + hasBackingField: false + hasGetter: true + hasSetter: true + initializer: null + isConst: false + isDelegatedProperty: true + isExtension: false + isFromPrimaryConstructor: false + isLateInit: false + isOverride: false + isStatic: false + isVal: false + modality: FINAL + name: delegatedProp + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + setter: KtPropertySetterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + hasBody: false + hasStableParameterNames: true + isDefault: true + isExtension: false + isInline: false + isOverride: false + modality: FINAL + origin: SOURCE + parameter: KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: false + name: value + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + symbolKind: LOCAL + typeParameters: [] + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + receiverParameter: null + returnType: kotlin/Unit + symbolKind: ACCESSOR + typeParameters: [] + valueParameters: [ + KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: false + name: value + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + symbolKind: LOCAL + typeParameters: [] + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + ] + visibility: Public + getContainingModule: Could not render due to kotlin.NotImplementedError: An operation is not implemented: org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.KtFe10PsiDefaultPropertySetterSymbol + + deprecationStatus: null + symbolKind: TOP_LEVEL + typeParameters: [] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + getterDeprecationStatus: null + javaGetterName: getDelegatedProp + javaSetterName: setDelegatedProp + setterDeprecationStatus: null \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.kt new file mode 100644 index 00000000000..c161cc9ef41 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.kt @@ -0,0 +1,3 @@ +// WITH_STDLIB +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 +var delegatedProp: String by Delegate() \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.pretty.txt new file mode 100644 index 00000000000..bb4616f22c3 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.pretty.txt @@ -0,0 +1,3 @@ +var delegatedProp: kotlin.String + get() + set(delegatedProp: kotlin.String) \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.txt new file mode 100644 index 00000000000..8cd8598ecaf --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/delegatedProp.txt @@ -0,0 +1,109 @@ +KtKotlinPropertySymbol: + annotationsList: [] + callableIdIfNonLocal: /delegatedProp + contextReceivers: [] + getter: KtPropertyGetterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + hasBody: true + hasStableParameterNames: true + isDefault: false + isExtension: false + isInline: false + isOverride: false + modality: FINAL + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + symbolKind: ACCESSOR + typeParameters: [] + valueParameters: [] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + hasBackingField: false + hasGetter: true + hasSetter: true + initializer: null + isConst: false + isDelegatedProperty: true + isExtension: false + isFromPrimaryConstructor: false + isLateInit: false + isOverride: false + isStatic: false + isVal: false + modality: FINAL + name: delegatedProp + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + setter: KtPropertySetterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + hasBody: true + hasStableParameterNames: true + isDefault: false + isExtension: false + isInline: false + isOverride: false + modality: FINAL + origin: SOURCE + parameter: KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: false + name: delegatedProp + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + symbolKind: LOCAL + typeParameters: [] + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + receiverParameter: null + returnType: kotlin/Unit + symbolKind: ACCESSOR + typeParameters: [] + valueParameters: [ + KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: false + name: delegatedProp + origin: SOURCE + receiverParameter: null + returnType: kotlin/String + symbolKind: LOCAL + typeParameters: [] + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + ] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + symbolKind: TOP_LEVEL + typeParameters: [] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + getterDeprecationStatus: null + javaGetterName: getDelegatedProp + javaSetterName: setDelegatedProp + setterDeprecationStatus: null \ No newline at end of file