From d1da3b8acdd8dd973a8b6c30a13929e006ef198f Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 15 May 2023 16:18:42 +0200 Subject: [PATCH] [Analysis API] fix missing names in KtFirStarImportingScope The missing name types were: java classifier names, callable/classifier names generated by plugins --- .../api/fir/scopes/KtFirStarImportingScope.kt | 4 +- .../simpleScopeContextForPosition.pretty.txt | 8 +- .../simpleScopeContextForPosition.txt | 240 +++++++++--------- 3 files changed, 126 insertions(+), 126 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirStarImportingScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirStarImportingScope.kt index 8093d51f4ae..0fbd4c251d9 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirStarImportingScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirStarImportingScope.kt @@ -35,7 +35,7 @@ internal class KtFirStarImportingScope( override fun getPossibleCallableNames(): Set = withValidityAssertion { imports.flatMapTo(hashSetOf()) { import: Import -> if (import.relativeClassName == null) { // top level callable - analysisSession.useSiteScopeDeclarationProvider.getTopLevelCallableNamesInPackage(import.packageFqName) + DeclarationsInPackageProvider.getTopLevelCallableNamesInPackageProvider(import.packageFqName, analysisSession) } else { //member val classId = import.resolvedClassId ?: error("Class id should not be null as relativeClassName is not null") firScope.getStaticsScope(classId)?.getCallableNames().orEmpty() @@ -50,7 +50,7 @@ internal class KtFirStarImportingScope( override fun getPossibleClassifierNames(): Set = withValidityAssertion { imports.flatMapTo(hashSetOf()) { import -> if (import.relativeClassName == null) { - analysisSession.useSiteScopeDeclarationProvider.getTopLevelKotlinClassLikeDeclarationNamesInPackage(import.packageFqName) + DeclarationsInPackageProvider.getTopLevelClassifierNamesInPackageProvider(import.packageFqName, analysisSession) } else { val classId = import.resolvedClassId ?: error("Class id should not be null as relativeClassName is not null") firScope.getStaticsScope(classId)?.getClassifierNames().orEmpty() diff --git a/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.pretty.txt b/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.pretty.txt index a116dc9be56..9d098aa6ebb 100644 --- a/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.pretty.txt +++ b/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.pretty.txt @@ -82,14 +82,14 @@ scopes: PackageMemberScope, index = 14 classifiers: 3 - class C : JavaClass() - class B class A + class B + class C : JavaClass() callables: 4 + fun withA(f: A.() -> kotlin.Unit) + fun withB(f: B.() -> kotlin.Unit) fun withJavaClass(f: JavaClass.() -> kotlin.Unit) fun topLevel(): kotlin.Int - fun withB(f: B.() -> kotlin.Unit) - fun withA(f: A.() -> kotlin.Unit) DefaultSimpleImportingScope, index = 15 diff --git a/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.txt b/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.txt index 69bb6fcd8e9..a4d08effd98 100644 --- a/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.txt +++ b/analysis/analysis-api/testData/components/scopeProvider/scopeContextForPosition/simpleScopeContextForPosition.txt @@ -678,7 +678,7 @@ scopes: classifiers: 3 KtNamedClassOrObjectSymbol: annotationsList: [] - classIdIfNonLocal: C + classIdIfNonLocal: A classKind: CLASS companionObject: null contextReceivers: [] @@ -688,13 +688,13 @@ scopes: isInline: false isInner: false modality: FINAL - name: C + name: A origin: SOURCE superTypes: [ KtUsualClassType: annotationsList: [] ownTypeArguments: [] - type: JavaClass + type: kotlin/Any ] symbolKind: TOP_LEVEL typeParameters: [] @@ -724,7 +724,7 @@ scopes: visibility: Public KtNamedClassOrObjectSymbol: annotationsList: [] - classIdIfNonLocal: A + classIdIfNonLocal: C classKind: CLASS companionObject: null contextReceivers: [] @@ -734,18 +734,132 @@ scopes: isInline: false isInner: false modality: FINAL - name: A + name: C origin: SOURCE superTypes: [ KtUsualClassType: annotationsList: [] ownTypeArguments: [] - type: kotlin/Any + type: JavaClass ] symbolKind: TOP_LEVEL typeParameters: [] visibility: Public callables: 4 + KtFunctionSymbol: + annotationsList: [] + callableIdIfNonLocal: /withA + contextReceivers: [] + contractEffects: [] + hasStableParameterNames: true + isBuiltinFunctionInvoke: false + isExtension: false + isExternal: false + isInfix: false + isInline: false + isOperator: false + isOverride: false + isStatic: false + isSuspend: false + modality: FINAL + name: withA + origin: SOURCE + receiverParameter: null + returnType: KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Unit + symbolKind: TOP_LEVEL + typeParameters: [] + valueParameters: [ + KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: false + name: f + origin: SOURCE + receiverParameter: null + returnType: KtFunctionalType: + annotationsList: [] + ownTypeArguments: [ + KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: A + KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Unit + ] + type: @ExtensionFunctionType kotlin/Function1 + symbolKind: LOCAL + typeParameters: [] + ] + visibility: Public + KtFunctionSymbol: + annotationsList: [] + callableIdIfNonLocal: /withB + contextReceivers: [] + contractEffects: [] + hasStableParameterNames: true + isBuiltinFunctionInvoke: false + isExtension: false + isExternal: false + isInfix: false + isInline: false + isOperator: false + isOverride: false + isStatic: false + isSuspend: false + modality: FINAL + name: withB + origin: SOURCE + receiverParameter: null + returnType: KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Unit + symbolKind: TOP_LEVEL + typeParameters: [] + valueParameters: [ + KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: false + name: f + origin: SOURCE + receiverParameter: null + returnType: KtFunctionalType: + annotationsList: [] + ownTypeArguments: [ + KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: B + KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Unit + ] + type: @ExtensionFunctionType kotlin/Function1 + symbolKind: LOCAL + typeParameters: [] + ] + visibility: Public KtFunctionSymbol: annotationsList: [] callableIdIfNonLocal: /withJavaClass @@ -830,120 +944,6 @@ scopes: typeParameters: [] valueParameters: [] visibility: Public - KtFunctionSymbol: - annotationsList: [] - callableIdIfNonLocal: /withB - contextReceivers: [] - contractEffects: [] - hasStableParameterNames: true - isBuiltinFunctionInvoke: false - isExtension: false - isExternal: false - isInfix: false - isInline: false - isOperator: false - isOverride: false - isStatic: false - isSuspend: false - modality: FINAL - name: withB - origin: SOURCE - receiverParameter: null - returnType: KtUsualClassType: - annotationsList: [] - ownTypeArguments: [] - type: kotlin/Unit - symbolKind: TOP_LEVEL - typeParameters: [] - valueParameters: [ - KtValueParameterSymbol: - annotationsList: [] - callableIdIfNonLocal: null - contextReceivers: [] - generatedPrimaryConstructorProperty: null - hasDefaultValue: false - isCrossinline: false - isExtension: false - isImplicitLambdaParameter: false - isNoinline: false - isVararg: false - name: f - origin: SOURCE - receiverParameter: null - returnType: KtFunctionalType: - annotationsList: [] - ownTypeArguments: [ - KtUsualClassType: - annotationsList: [] - ownTypeArguments: [] - type: B - KtUsualClassType: - annotationsList: [] - ownTypeArguments: [] - type: kotlin/Unit - ] - type: @ExtensionFunctionType kotlin/Function1 - symbolKind: LOCAL - typeParameters: [] - ] - visibility: Public - KtFunctionSymbol: - annotationsList: [] - callableIdIfNonLocal: /withA - contextReceivers: [] - contractEffects: [] - hasStableParameterNames: true - isBuiltinFunctionInvoke: false - isExtension: false - isExternal: false - isInfix: false - isInline: false - isOperator: false - isOverride: false - isStatic: false - isSuspend: false - modality: FINAL - name: withA - origin: SOURCE - receiverParameter: null - returnType: KtUsualClassType: - annotationsList: [] - ownTypeArguments: [] - type: kotlin/Unit - symbolKind: TOP_LEVEL - typeParameters: [] - valueParameters: [ - KtValueParameterSymbol: - annotationsList: [] - callableIdIfNonLocal: null - contextReceivers: [] - generatedPrimaryConstructorProperty: null - hasDefaultValue: false - isCrossinline: false - isExtension: false - isImplicitLambdaParameter: false - isNoinline: false - isVararg: false - name: f - origin: SOURCE - receiverParameter: null - returnType: KtFunctionalType: - annotationsList: [] - ownTypeArguments: [ - KtUsualClassType: - annotationsList: [] - ownTypeArguments: [] - type: A - KtUsualClassType: - annotationsList: [] - ownTypeArguments: [] - type: kotlin/Unit - ] - type: @ExtensionFunctionType kotlin/Function1 - symbolKind: LOCAL - typeParameters: [] - ] - visibility: Public DefaultSimpleImportingScope, index = 15