From 3aa6cb25ba8b936f205687d06143f4dcbbbe3827 Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Mon, 31 May 2021 22:40:22 -0700 Subject: [PATCH] FIR IDE: Add ImportMemberIntention --- .../generators/tests/idea/GenerateTests.kt | 48 +++++-- .../fir/intentions/HLImportMemberIntention.kt | 117 +++++++++++++++++ .../intentions/HLIntentionTestGenerated.java | 123 ++++++++++++++++++ .../api/symbols/KtFunctionLikeSymbol.kt | 1 + .../api/symbols/KtVariableLikeSymbol.kt | 2 + .../api/fir/symbols/KtFirFunctionSymbol.kt | 1 + .../api/fir/symbols/KtFirJavaFieldSymbol.kt | 2 + .../fir/symbols/KtFirKotlinPropertySymbol.kt | 1 + .../KtFirSyntheticJavaPropertySymbol.kt | 2 + .../fileScopeTest/simpleFileScope.kt.result | 2 + .../testData/memberScopeByFqName/Int.kt | 61 +++++++++ .../memberScopeByFqName/MutableList.kt | 24 ++++ .../memberScopeByFqName/java.lang.String.kt | 60 +++++++++ .../memberScopeByFqName/kotlin.Function2.kt | 4 + .../symbolByFqName/fileWalkDirectionEnum.kt | 3 + .../symbols/symbolByFqName/memberFunction.kt | 1 + .../memberFunctionWithOverloads.kt | 2 + .../symbols/symbolByPsi/annotations.kt | 1 + .../symbols/symbolByPsi/anonymousObject.kt | 3 + .../symbols/symbolByPsi/classMembes.kt | 2 + .../symbols/symbolByPsi/extensionFunction.kt | 1 + .../testData/symbols/symbolByPsi/function.kt | 1 + .../symbolByPsi/functionWithTypeParams.kt | 1 + .../symbols/symbolByPsi/implicitReturn.kt | 1 + .../symbols/symbolByPsi/localDeclarations.kt | 2 + .../symbols/symbolByPsi/memberFunctions.kt | 2 + .../symbols/symbolByPsi/memberProperties.kt | 2 + .../symbolByPsi/outerAndInnerClasses.kt | 1 + .../symbols/symbolByPsi/topLevelFunctions.kt | 2 + .../symbols/symbolByPsi/topLevelProperties.kt | 2 + .../symbols/symbolByPsi/typeAnnotations.kt | 2 + .../HLImportMemberIntention/after.kt.template | 7 + .../before.kt.template | 6 + .../HLImportMemberIntention/description.html | 6 + idea/resources-fir/META-INF/firIntentions.xml | 6 + .../intentions/importMember/.firIntention | 1 + .../intentions/importMember/ClassCallChain.kt | 1 + .../importMember/ClassCallChain.kt.after | 1 + .../importMember/ClassCallChain2.kt | 1 + .../importMember/ClassCallChain2.kt.after | 1 + 40 files changed, 495 insertions(+), 12 deletions(-) create mode 100644 idea/idea-fir/src/org/jetbrains/kotlin/idea/fir/intentions/HLImportMemberIntention.kt create mode 100644 idea/resources-en/intentionDescriptions/HLImportMemberIntention/after.kt.template create mode 100644 idea/resources-en/intentionDescriptions/HLImportMemberIntention/before.kt.template create mode 100644 idea/resources-en/intentionDescriptions/HLImportMemberIntention/description.html create mode 100644 idea/testData/intentions/importMember/.firIntention diff --git a/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt b/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt index ea4b2a4ffd7..c5461b94530 100644 --- a/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt +++ b/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt @@ -8,19 +8,25 @@ package org.jetbrains.kotlin.generators.tests.idea import org.jetbrains.kotlin.AbstractDataFlowValueRenderingTest import org.jetbrains.kotlin.addImport.AbstractAddImportTest import org.jetbrains.kotlin.addImportAlias.AbstractAddImportAliasTest -import org.jetbrains.kotlin.asJava.classes.* +import org.jetbrains.kotlin.asJava.classes.AbstractUltraLightClassLoadingTest +import org.jetbrains.kotlin.asJava.classes.AbstractUltraLightClassSanityTest +import org.jetbrains.kotlin.asJava.classes.AbstractUltraLightFacadeClassTest +import org.jetbrains.kotlin.asJava.classes.AbstractUltraLightScriptLoadingTest import org.jetbrains.kotlin.checkers.* import org.jetbrains.kotlin.copyright.AbstractUpdateKotlinCopyrightTest -import org.jetbrains.kotlin.findUsages.* +import org.jetbrains.kotlin.findUsages.AbstractFindUsagesTest +import org.jetbrains.kotlin.findUsages.AbstractFindUsagesWithDisableComponentSearchTest +import org.jetbrains.kotlin.findUsages.AbstractKotlinFindUsagesWithLibraryTest +import org.jetbrains.kotlin.findUsages.AbstractKotlinFindUsagesWithStdlibTest import org.jetbrains.kotlin.formatter.AbstractFormatterTest import org.jetbrains.kotlin.formatter.AbstractTypingIndentationTestBase import org.jetbrains.kotlin.generators.TestGroup import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite import org.jetbrains.kotlin.generators.util.TestGeneratorUtil import org.jetbrains.kotlin.generators.util.TestGeneratorUtil.KT_OR_KTS -import org.jetbrains.kotlin.generators.util.TestGeneratorUtil.KT_WITHOUT_FIR_PREFIX import org.jetbrains.kotlin.generators.util.TestGeneratorUtil.KT_OR_KTS_WITHOUT_DOTS_IN_NAME import org.jetbrains.kotlin.generators.util.TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME +import org.jetbrains.kotlin.generators.util.TestGeneratorUtil.KT_WITHOUT_FIR_PREFIX import org.jetbrains.kotlin.idea.AbstractExpressionSelectionTest import org.jetbrains.kotlin.idea.AbstractSmartSelectionTest import org.jetbrains.kotlin.idea.actions.AbstractGotoTestOrCodeActionTest @@ -37,14 +43,13 @@ import org.jetbrains.kotlin.idea.codeInsight.moveUpDown.AbstractMoveStatementTes import org.jetbrains.kotlin.idea.codeInsight.postfix.AbstractPostfixTemplateProviderTest import org.jetbrains.kotlin.idea.codeInsight.surroundWith.AbstractSurroundWithTest import org.jetbrains.kotlin.idea.codeInsight.unwrap.AbstractUnwrapRemoveTest -import org.jetbrains.kotlin.idea.fir.completion.AbstractFirKeywordCompletionTest -import org.jetbrains.kotlin.idea.fir.completion.AbstractHighLevelJvmBasicCompletionTest -import org.jetbrains.kotlin.idea.fir.completion.AbstractHighLevelMultiFileJvmBasicCompletionTest import org.jetbrains.kotlin.idea.completion.test.* -import org.jetbrains.kotlin.idea.completion.test.handlers.* +import org.jetbrains.kotlin.idea.completion.test.handlers.AbstractBasicCompletionHandlerTest +import org.jetbrains.kotlin.idea.completion.test.handlers.AbstractCompletionCharFilterTest +import org.jetbrains.kotlin.idea.completion.test.handlers.AbstractKeywordCompletionHandlerTest +import org.jetbrains.kotlin.idea.completion.test.handlers.AbstractSmartCompletionHandlerTest import org.jetbrains.kotlin.idea.completion.test.weighers.AbstractBasicCompletionWeigherTest import org.jetbrains.kotlin.idea.completion.test.weighers.AbstractSmartCompletionWeigherTest -import org.jetbrains.kotlin.idea.fir.completion.wheigher.AbstractHighLevelWeigherTest import org.jetbrains.kotlin.idea.configuration.AbstractGradleConfigureProjectByChangingFileTest import org.jetbrains.kotlin.idea.conversion.copy.AbstractLiteralKotlinToKotlinCopyPasteTest import org.jetbrains.kotlin.idea.conversion.copy.AbstractLiteralTextToKotlinCopyPasteTest @@ -74,14 +79,26 @@ import org.jetbrains.kotlin.idea.fir.asJava.classes.AbstractFirClassLoadingTest import org.jetbrains.kotlin.idea.fir.asJava.classes.AbstractFirLightClassTest import org.jetbrains.kotlin.idea.fir.asJava.classes.AbstractFirLightFacadeClassTest import org.jetbrains.kotlin.idea.fir.checkers.AbstractFirKotlinHighlightingPassTest +import org.jetbrains.kotlin.idea.fir.completion.AbstractFirKeywordCompletionTest +import org.jetbrains.kotlin.idea.fir.completion.AbstractHighLevelJvmBasicCompletionTest +import org.jetbrains.kotlin.idea.fir.completion.AbstractHighLevelMultiFileJvmBasicCompletionTest import org.jetbrains.kotlin.idea.fir.completion.test.handlers.AbstractFirKeywordCompletionHandlerTest import org.jetbrains.kotlin.idea.fir.completion.test.handlers.AbstractHighLevelBasicCompletionHandlerTest +import org.jetbrains.kotlin.idea.fir.completion.wheigher.AbstractHighLevelWeigherTest import org.jetbrains.kotlin.idea.fir.findUsages.AbstractFindUsagesFirTest import org.jetbrains.kotlin.idea.fir.findUsages.AbstractFindUsagesWithDisableComponentSearchFirTest import org.jetbrains.kotlin.idea.fir.findUsages.AbstractKotlinFindUsagesWithLibraryFirTest import org.jetbrains.kotlin.idea.fir.findUsages.AbstractKotlinFindUsagesWithStdlibFirTest import org.jetbrains.kotlin.idea.fir.frontend.api.components.* +import org.jetbrains.kotlin.idea.fir.frontend.api.fir.AbstractResolveCallTest +import org.jetbrains.kotlin.idea.fir.frontend.api.scopes.AbstractFileScopeTest +import org.jetbrains.kotlin.idea.fir.frontend.api.scopes.AbstractMemberScopeByFqNameTest +import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractMemoryLeakInSymbolsTest +import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByFqNameTest +import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByPsiTest +import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByReferenceTest import org.jetbrains.kotlin.idea.fir.highlighter.AbstractFirHighlightingTest +import org.jetbrains.kotlin.idea.fir.inspections.AbstractFe10BindingIntentionTest import org.jetbrains.kotlin.idea.fir.inspections.AbstractHLInspectionTest import org.jetbrains.kotlin.idea.fir.inspections.AbstractHLLocalInspectionTest import org.jetbrains.kotlin.idea.fir.intentions.AbstractHLIntentionTest @@ -90,6 +107,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.trackers.AbstractProjectWideO import org.jetbrains.kotlin.idea.fir.quickfix.AbstractHighLevelQuickFixMultiFileTest import org.jetbrains.kotlin.idea.fir.quickfix.AbstractHighLevelQuickFixTest import org.jetbrains.kotlin.idea.fir.resolve.AbstractFirReferenceResolveTest +import org.jetbrains.kotlin.idea.fir.shortenRefs.AbstractFirShortenRefsTest import org.jetbrains.kotlin.idea.folding.AbstractKotlinFoldingTest import org.jetbrains.kotlin.idea.fir.inspections.AbstractFe10BindingIntentionTest import org.jetbrains.kotlin.idea.hierarchy.AbstractHierarchyTest @@ -98,8 +116,12 @@ import org.jetbrains.kotlin.idea.highlighter.* import org.jetbrains.kotlin.idea.imports.AbstractJsOptimizeImportsTest import org.jetbrains.kotlin.idea.imports.AbstractJvmOptimizeImportsTest import org.jetbrains.kotlin.idea.index.AbstractKotlinTypeAliasByExpansionShortNameIndexTest -import org.jetbrains.kotlin.idea.inspections.* -import org.jetbrains.kotlin.idea.intentions.* +import org.jetbrains.kotlin.idea.inspections.AbstractLocalInspectionTest +import org.jetbrains.kotlin.idea.inspections.AbstractMultiFileLocalInspectionTest +import org.jetbrains.kotlin.idea.intentions.AbstractConcatenatedStringGeneratorTest +import org.jetbrains.kotlin.idea.intentions.AbstractIntentionTest +import org.jetbrains.kotlin.idea.intentions.AbstractIntentionTest2 +import org.jetbrains.kotlin.idea.intentions.AbstractMultiFileIntentionTest import org.jetbrains.kotlin.idea.intentions.declarations.AbstractJoinLinesTest import org.jetbrains.kotlin.idea.internal.AbstractBytecodeToolWindowTest import org.jetbrains.kotlin.idea.kdoc.AbstractKDocHighlightingTest @@ -110,7 +132,9 @@ import org.jetbrains.kotlin.idea.navigation.* import org.jetbrains.kotlin.idea.navigationToolbar.AbstractKotlinNavBarTest import org.jetbrains.kotlin.idea.parameterInfo.AbstractParameterInfoTest import org.jetbrains.kotlin.idea.perf.* -import org.jetbrains.kotlin.idea.quickfix.* +import org.jetbrains.kotlin.idea.quickfix.AbstractQuickFixMultiFileTest +import org.jetbrains.kotlin.idea.quickfix.AbstractQuickFixMultiModuleTest +import org.jetbrains.kotlin.idea.quickfix.AbstractQuickFixTest import org.jetbrains.kotlin.idea.refactoring.AbstractNameSuggestionProviderTest import org.jetbrains.kotlin.idea.refactoring.copy.AbstractCopyTest import org.jetbrains.kotlin.idea.refactoring.copy.AbstractMultiModuleCopyTest @@ -153,7 +177,6 @@ import org.jetbrains.kotlin.pacelize.ide.test.AbstractParcelizeQuickFixTest import org.jetbrains.kotlin.psi.patternMatching.AbstractPsiUnifierTest import org.jetbrains.kotlin.search.AbstractAnnotatedMembersSearchTest import org.jetbrains.kotlin.search.AbstractInheritorsSearchTest -import org.jetbrains.kotlin.idea.fir.shortenRefs.AbstractFirShortenRefsTest import org.jetbrains.kotlin.shortenRefs.AbstractShortenRefsTest import org.jetbrains.kotlin.spec.utils.GeneralConfiguration import org.jetbrains.kotlin.test.TargetBackend @@ -1067,6 +1090,7 @@ fun main(args: Array) { model("intentions/addPropertyAccessors", pattern = pattern) model("intentions/specifyTypeExplicitly", pattern = pattern) model("intentions/importAllMembers", pattern = pattern) + model("intentions/importMember", pattern = pattern) } testClass { diff --git a/idea/idea-fir/src/org/jetbrains/kotlin/idea/fir/intentions/HLImportMemberIntention.kt b/idea/idea-fir/src/org/jetbrains/kotlin/idea/fir/intentions/HLImportMemberIntention.kt new file mode 100644 index 00000000000..58c7fe2121a --- /dev/null +++ b/idea/idea-fir/src/org/jetbrains/kotlin/idea/fir/intentions/HLImportMemberIntention.kt @@ -0,0 +1,117 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.fir.intentions + +import com.intellij.codeInsight.intention.HighPriorityAction +import org.jetbrains.kotlin.idea.KotlinBundle +import org.jetbrains.kotlin.idea.api.applicator.HLApplicatorInput +import org.jetbrains.kotlin.idea.api.applicator.applicator +import org.jetbrains.kotlin.idea.fir.api.AbstractHLIntention +import org.jetbrains.kotlin.idea.fir.api.applicator.HLApplicabilityRange +import org.jetbrains.kotlin.idea.fir.api.applicator.HLApplicatorInputProvider +import org.jetbrains.kotlin.idea.fir.api.applicator.inputProvider +import org.jetbrains.kotlin.idea.fir.applicators.ApplicabilityRanges +import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession +import org.jetbrains.kotlin.idea.frontend.api.components.ShortenCommand +import org.jetbrains.kotlin.idea.frontend.api.components.ShortenOption +import org.jetbrains.kotlin.idea.frontend.api.symbols.* +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind +import org.jetbrains.kotlin.idea.references.mainReference +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.psi.KtNameReferenceExpression +import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement +import org.jetbrains.kotlin.psi.psiUtil.isInImportDirective + +class HLImportMemberIntention : AbstractHLIntention( + KtNameReferenceExpression::class, Companion.applicator +), HighPriorityAction { + override val applicabilityRange: HLApplicabilityRange get() = ApplicabilityRanges.SELF + + override val inputProvider: HLApplicatorInputProvider = inputProvider { psi -> + val symbol = psi.mainReference.resolveToSymbol() ?: return@inputProvider null + computeInput(psi, symbol) + } + + private fun KtAnalysisSession.computeInput(psi: KtNameReferenceExpression, symbol: KtSymbol): Input? { + return when (symbol) { + is KtConstructorSymbol, + is KtClassOrObjectSymbol -> { + val classId = if (symbol is KtClassOrObjectSymbol) { + symbol.classIdIfNonLocal + } else { + (symbol as KtConstructorSymbol).containingClassIdIfNonLocal + } ?: return null + val shortenCommand = collectPossibleReferenceShortenings( + psi.containingKtFile, + classShortenOption = { + if (it.classIdIfNonLocal == classId) + ShortenOption.SHORTEN_AND_IMPORT + else + ShortenOption.DO_NOT_SHORTEN + }, callableShortenOption = { + if (it is KtConstructorSymbol && it.containingClassIdIfNonLocal == classId) + ShortenOption.SHORTEN_AND_IMPORT + else + ShortenOption.DO_NOT_SHORTEN + }) + if (shortenCommand.isEmpty) return null + Input(classId.asSingleFqName(), shortenCommand) + } + is KtCallableSymbol -> { + val callableId = symbol.callableIdIfNonLocal ?: return null + if (callableId.callableName.isSpecial) return null + if (!canBeImported(symbol)) return null + val shortenCommand = collectPossibleReferenceShortenings( + psi.containingKtFile, + classShortenOption = { ShortenOption.DO_NOT_SHORTEN }, + callableShortenOption = { + if (it.callableIdIfNonLocal == callableId) + ShortenOption.SHORTEN_AND_IMPORT + else + ShortenOption.DO_NOT_SHORTEN + } + ) + if (shortenCommand.isEmpty) return null + Input(callableId.asSingleFqName(), shortenCommand) + } + else -> return null + } + } + + class Input(val fqName: FqName, val shortenCommand: ShortenCommand) : HLApplicatorInput + + companion object { + val applicator = applicator { + familyName(KotlinBundle.lazyMessage("add.import.for.member")) + actionName { _, input -> KotlinBundle.message("add.import.for.0", input.fqName.asString()) } + isApplicableByPsi { + // Ignore simple name expressions or already imported names. + if (it.getQualifiedElement() == it || it.isInImportDirective()) return@isApplicableByPsi false + true + } + applyTo { _, input -> + input.shortenCommand.invokeShortening() + } + } + + private fun KtAnalysisSession.canBeImported(symbol: KtCallableSymbol): Boolean { + if (symbol is KtEnumEntrySymbol) return true + if (symbol.origin == KtSymbolOrigin.JAVA) { + return when (symbol) { + is KtFunctionSymbol -> symbol.isStatic + is KtPropertySymbol -> symbol.isStatic + is KtJavaFieldSymbol -> symbol.isStatic + else -> false + } + } else { + if ((symbol as? KtSymbolWithKind)?.symbolKind == KtSymbolKind.TOP_LEVEL) return true + val containingClass = symbol.getContainingSymbol() as? KtClassOrObjectSymbol ?: return true + return containingClass.classKind == KtClassKind.OBJECT || containingClass.classKind == KtClassKind.COMPANION_OBJECT + } + } + } +} \ No newline at end of file diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/intentions/HLIntentionTestGenerated.java b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/intentions/HLIntentionTestGenerated.java index cc31035e34d..0a4bd2be898 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/intentions/HLIntentionTestGenerated.java +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/intentions/HLIntentionTestGenerated.java @@ -556,4 +556,127 @@ public class HLIntentionTestGenerated extends AbstractHLIntentionTest { runTest("idea/testData/intentions/importAllMembers/UnresolvedMember.kt"); } } + + @TestMetadata("idea/testData/intentions/importMember") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class ImportMember extends AbstractHLIntentionTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + public void testAllFilesPresentInImportMember() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/intentions/importMember"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), null, true); + } + + @TestMetadata("AlreadyImportedSameNameClass.kt") + public void testAlreadyImportedSameNameClass() throws Exception { + runTest("idea/testData/intentions/importMember/AlreadyImportedSameNameClass.kt"); + } + + @TestMetadata("AlreadyImportedSameNameClass2.kt") + public void testAlreadyImportedSameNameClass2() throws Exception { + runTest("idea/testData/intentions/importMember/AlreadyImportedSameNameClass2.kt"); + } + + @TestMetadata("ClassCallChain.kt") + public void testClassCallChain() throws Exception { + runTest("idea/testData/intentions/importMember/ClassCallChain.kt"); + } + + @TestMetadata("ClassCallChain2.kt") + public void testClassCallChain2() throws Exception { + runTest("idea/testData/intentions/importMember/ClassCallChain2.kt"); + } + + @TestMetadata("ClassCallChain3.kt") + public void testClassCallChain3() throws Exception { + runTest("idea/testData/intentions/importMember/ClassCallChain3.kt"); + } + + @TestMetadata("EnumMember.kt") + public void testEnumMember() throws Exception { + runTest("idea/testData/intentions/importMember/EnumMember.kt"); + } + + @TestMetadata("FqReference.kt") + public void testFqReference() throws Exception { + runTest("idea/testData/intentions/importMember/FqReference.kt"); + } + + @TestMetadata("FqReferenceCall.kt") + public void testFqReferenceCall() throws Exception { + runTest("idea/testData/intentions/importMember/FqReferenceCall.kt"); + } + + @TestMetadata("FqReferenceForNestedMember.kt") + public void testFqReferenceForNestedMember() throws Exception { + runTest("idea/testData/intentions/importMember/FqReferenceForNestedMember.kt"); + } + + @TestMetadata("FqReferenceForNestedMember2.kt") + public void testFqReferenceForNestedMember2() throws Exception { + runTest("idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt"); + } + + @TestMetadata("FromCompanionObject.kt") + public void testFromCompanionObject() throws Exception { + runTest("idea/testData/intentions/importMember/FromCompanionObject.kt"); + } + + @TestMetadata("ImportMemberInImport.kt") + public void testImportMemberInImport() throws Exception { + runTest("idea/testData/intentions/importMember/ImportMemberInImport.kt"); + } + + @TestMetadata("ImportMemberInMiddleOfImport.kt") + public void testImportMemberInMiddleOfImport() throws Exception { + runTest("idea/testData/intentions/importMember/ImportMemberInMiddleOfImport.kt"); + } + + @TestMetadata("NestedClass1.kt") + public void testNestedClass1() throws Exception { + runTest("idea/testData/intentions/importMember/NestedClass1.kt"); + } + + @TestMetadata("NestedClass2.kt") + public void testNestedClass2() throws Exception { + runTest("idea/testData/intentions/importMember/NestedClass2.kt"); + } + + @TestMetadata("NoTarget.kt") + public void testNoTarget() throws Exception { + runTest("idea/testData/intentions/importMember/NoTarget.kt"); + } + + @TestMetadata("NotApplicablePackage.kt") + public void testNotApplicablePackage() throws Exception { + runTest("idea/testData/intentions/importMember/NotApplicablePackage.kt"); + } + + @TestMetadata("NotForQualifier.kt") + public void testNotForQualifier() throws Exception { + runTest("idea/testData/intentions/importMember/NotForQualifier.kt"); + } + + @TestMetadata("ObjectMethod.kt") + public void testObjectMethod() throws Exception { + runTest("idea/testData/intentions/importMember/ObjectMethod.kt"); + } + + @TestMetadata("StaticJavaField.kt") + public void testStaticJavaField() throws Exception { + runTest("idea/testData/intentions/importMember/StaticJavaField.kt"); + } + + @TestMetadata("StaticJavaMethod.kt") + public void testStaticJavaMethod() throws Exception { + runTest("idea/testData/intentions/importMember/StaticJavaMethod.kt"); + } + + @TestMetadata("TopLevelFun.kt") + public void testTopLevelFun() throws Exception { + runTest("idea/testData/intentions/importMember/TopLevelFun.kt"); + } + } } diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt index ec1cc593af0..d8466c21404 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt @@ -38,6 +38,7 @@ abstract class KtFunctionSymbol : KtFunctionLikeSymbol(), abstract val isInline: Boolean abstract val isOverride: Boolean abstract val isInfix: Boolean + abstract val isStatic: Boolean abstract override fun createPointer(): KtSymbolPointer } diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtVariableLikeSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtVariableLikeSymbol.kt index 2a4ac580418..ba17fa897c9 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtVariableLikeSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtVariableLikeSymbol.kt @@ -71,6 +71,7 @@ abstract class KtJavaFieldSymbol : final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER final override val isExtension: Boolean get() = false final override val receiverType: KtTypeAndAnnotations? get() = null + abstract val isStatic: Boolean abstract override fun createPointer(): KtSymbolPointer } @@ -91,6 +92,7 @@ sealed class KtPropertySymbol : KtVariableSymbol(), abstract val hasBackingField: Boolean abstract val isOverride: Boolean + abstract val isStatic: Boolean abstract val initializer: KtConstantValue? diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt index 63568bcbb53..539d19fdafc 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt @@ -69,6 +69,7 @@ internal class KtFirFunctionSymbol( override val isSuspend: Boolean get() = firRef.withFir { it.isSuspend } override val isOverride: Boolean get() = firRef.withFir { it.isOverride } override val isInfix: Boolean get() = firRef.withFir { it.isInfix } + override val isStatic: Boolean get() = firRef.withFir { it.isStatic } override val dispatchType: KtType? by cached { firRef.dispatchReceiverTypeAndAnnotations(builder) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirJavaFieldSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirJavaFieldSymbol.kt index 43da8039ba8..0da6f03666e 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirJavaFieldSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirJavaFieldSymbol.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.declarations.FirField import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.isStatic import org.jetbrains.kotlin.idea.fir.findPsi import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder @@ -44,6 +45,7 @@ internal class KtFirJavaFieldSymbol( override val modality: Modality get() = getModality() override val visibility: Visibility get() = getVisibility() + override val isStatic: Boolean get() = firRef.withFir { it.isStatic } override fun createPointer(): KtSymbolPointer { TODO("Creating pointers for java fields is not supported yet") diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirKotlinPropertySymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirKotlinPropertySymbol.kt index 20bb82d9776..d511321ff11 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirKotlinPropertySymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirKotlinPropertySymbol.kt @@ -104,6 +104,7 @@ internal class KtFirKotlinPropertySymbol( override val isConst: Boolean get() = firRef.withFir { it.isConst } override val isOverride: Boolean get() = firRef.withFir { it.isOverride } + override val isStatic: Boolean get() = firRef.withFir { it.isStatic } override val hasGetter: Boolean get() = firRef.withFir { it.getter != null } override val hasSetter: Boolean get() = firRef.withFir { it.setter != null } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt index de8e497c2d4..75db09c971a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.isOverride +import org.jetbrains.kotlin.fir.declarations.isStatic import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty import org.jetbrains.kotlin.idea.fir.findPsi import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState @@ -83,6 +84,7 @@ internal class KtFirSyntheticJavaPropertySymbol( override val javaSetterName: Name? get() = firRef.withFir { it.setter?.delegate?.name } override val isOverride: Boolean get() = firRef.withFir { it.isOverride } + override val isStatic: Boolean get() = firRef.withFir { it.isStatic } override val hasSetter: Boolean get() = firRef.withFir { it.setter != null } diff --git a/idea/idea-frontend-fir/testData/fileScopeTest/simpleFileScope.kt.result b/idea/idea-frontend-fir/testData/fileScopeTest/simpleFileScope.kt.result index e5ab467613a..8b472bb0641 100644 --- a/idea/idea-frontend-fir/testData/fileScopeTest/simpleFileScope.kt.result +++ b/idea/idea-frontend-fir/testData/fileScopeTest/simpleFileScope.kt.result @@ -20,6 +20,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: test @@ -45,6 +46,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: testVal diff --git a/idea/idea-frontend-fir/testData/memberScopeByFqName/Int.kt b/idea/idea-frontend-fir/testData/memberScopeByFqName/Int.kt index 8d9159f6352..ec719456245 100644 --- a/idea/idea-frontend-fir/testData/memberScopeByFqName/Int.kt +++ b/idea/idea-frontend-fir/testData/memberScopeByFqName/Int.kt @@ -17,6 +17,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: and @@ -39,6 +40,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: compareTo @@ -61,6 +63,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: compareTo @@ -83,6 +86,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: compareTo @@ -105,6 +109,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: OPEN name: compareTo @@ -127,6 +132,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: compareTo @@ -149,6 +155,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: compareTo @@ -171,6 +178,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: dec @@ -193,6 +201,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: div @@ -215,6 +224,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: div @@ -237,6 +247,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: div @@ -259,6 +270,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: div @@ -281,6 +293,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: div @@ -303,6 +316,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: div @@ -325,6 +339,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: inc @@ -347,6 +362,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: inv @@ -369,6 +385,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: minus @@ -391,6 +408,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: minus @@ -413,6 +431,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: minus @@ -435,6 +454,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: minus @@ -457,6 +477,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: minus @@ -479,6 +500,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: minus @@ -501,6 +523,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: or @@ -523,6 +546,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: plus @@ -545,6 +569,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: plus @@ -567,6 +592,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: plus @@ -589,6 +615,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: plus @@ -611,6 +638,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: plus @@ -633,6 +661,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: plus @@ -655,6 +684,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rangeTo @@ -677,6 +707,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rangeTo @@ -699,6 +730,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rangeTo @@ -721,6 +753,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rangeTo @@ -743,6 +776,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rem @@ -765,6 +799,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rem @@ -787,6 +822,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rem @@ -809,6 +845,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rem @@ -831,6 +868,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rem @@ -853,6 +891,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: rem @@ -875,6 +914,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: shl @@ -897,6 +937,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: shr @@ -919,6 +960,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: times @@ -941,6 +983,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: times @@ -963,6 +1006,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: times @@ -985,6 +1029,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: times @@ -1007,6 +1052,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: times @@ -1029,6 +1075,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: times @@ -1051,6 +1098,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toByte @@ -1073,6 +1121,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toChar @@ -1095,6 +1144,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toDouble @@ -1117,6 +1167,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toFloat @@ -1139,6 +1190,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toInt @@ -1161,6 +1213,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toLong @@ -1183,6 +1236,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toShort @@ -1205,6 +1259,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: unaryMinus @@ -1227,6 +1282,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: FINAL name: unaryPlus @@ -1249,6 +1305,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: ushr @@ -1271,6 +1328,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: xor @@ -1293,6 +1351,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: OPEN name: equals @@ -1315,6 +1374,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: hashCode @@ -1337,6 +1397,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toString diff --git a/idea/idea-frontend-fir/testData/memberScopeByFqName/MutableList.kt b/idea/idea-frontend-fir/testData/memberScopeByFqName/MutableList.kt index 86f59d0ab2d..c65e8760113 100644 --- a/idea/idea-frontend-fir/testData/memberScopeByFqName/MutableList.kt +++ b/idea/idea-frontend-fir/testData/memberScopeByFqName/MutableList.kt @@ -14,6 +14,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: add @@ -36,6 +37,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: add @@ -58,6 +60,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: addAll @@ -80,6 +83,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: addAll @@ -102,6 +106,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: clear @@ -124,6 +129,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: listIterator @@ -146,6 +152,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: listIterator @@ -168,6 +175,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: remove @@ -190,6 +198,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: removeAll @@ -212,6 +221,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: removeAt @@ -234,6 +244,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: retainAll @@ -256,6 +267,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: set @@ -278,6 +290,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: subList @@ -300,6 +313,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: contains @@ -322,6 +336,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: containsAll @@ -344,6 +359,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: get @@ -366,6 +382,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: indexOf @@ -388,6 +405,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: isEmpty @@ -410,6 +428,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: iterator @@ -432,6 +451,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: lastIndexOf @@ -457,6 +477,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: ABSTRACT name: size @@ -478,6 +499,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: OPEN name: equals @@ -500,6 +522,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: hashCode @@ -522,6 +545,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toString diff --git a/idea/idea-frontend-fir/testData/memberScopeByFqName/java.lang.String.kt b/idea/idea-frontend-fir/testData/memberScopeByFqName/java.lang.String.kt index 6620e7f5a80..c4b4937c3ae 100644 --- a/idea/idea-frontend-fir/testData/memberScopeByFqName/java.lang.String.kt +++ b/idea/idea-frontend-fir/testData/memberScopeByFqName/java.lang.String.kt @@ -8,6 +8,7 @@ KtFirJavaFieldSymbol: annotatedType: [] ft callableIdIfNonLocal: java/lang/String.value isExtension: false + isStatic: false isVal: true modality: FINAL name: value @@ -20,6 +21,7 @@ KtFirJavaFieldSymbol: annotatedType: [] kotlin/Int callableIdIfNonLocal: java/lang/String.hash isExtension: false + isStatic: false isVal: false modality: OPEN name: hash @@ -40,6 +42,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: hash32 @@ -54,6 +57,7 @@ KtFirJavaFieldSymbol: annotatedType: [] kotlin/Int callableIdIfNonLocal: java/lang/String.hash32 isExtension: false + isStatic: false isVal: false modality: OPEN name: hash32 @@ -75,6 +79,7 @@ KtFirSyntheticJavaPropertySymbol: initializer: null isExtension: false isOverride: false + isStatic: false isVal: true javaGetterName: length javaSetterName: null @@ -98,6 +103,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: isEmpty @@ -120,6 +126,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: charAt @@ -142,6 +149,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: codePointAt @@ -164,6 +172,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: codePointBefore @@ -186,6 +195,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: codePointCount @@ -208,6 +218,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: offsetByCodePoints @@ -230,6 +241,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: getChars @@ -252,6 +264,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: getChars @@ -274,6 +287,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: getBytes @@ -296,6 +310,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: getBytes @@ -318,6 +333,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: getBytes @@ -340,6 +356,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: getBytes @@ -362,6 +379,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: OPEN name: equals @@ -384,6 +402,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: contentEquals @@ -406,6 +425,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: contentEquals @@ -428,6 +448,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: equalsIgnoreCase @@ -450,6 +471,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: OPEN name: compareTo @@ -472,6 +494,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: compareToIgnoreCase @@ -494,6 +517,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: regionMatches @@ -516,6 +540,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: regionMatches @@ -538,6 +563,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: startsWith @@ -560,6 +586,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: startsWith @@ -582,6 +609,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: endsWith @@ -604,6 +632,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: hashCode @@ -626,6 +655,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: indexOf @@ -648,6 +678,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: indexOf @@ -670,6 +701,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: indexOf @@ -692,6 +724,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: indexOf @@ -714,6 +747,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: indexOfSupplementary @@ -736,6 +770,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: lastIndexOf @@ -758,6 +793,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: lastIndexOf @@ -780,6 +816,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: lastIndexOf @@ -802,6 +839,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: lastIndexOf @@ -824,6 +862,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: lastIndexOfSupplementary @@ -846,6 +885,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: substring @@ -868,6 +908,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: substring @@ -890,6 +931,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: subSequence @@ -912,6 +954,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: concat @@ -934,6 +977,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: replace @@ -956,6 +1000,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: replace @@ -978,6 +1023,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: matches @@ -1000,6 +1046,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: OPEN name: contains @@ -1022,6 +1069,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: replaceFirst @@ -1044,6 +1092,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: replaceAll @@ -1066,6 +1115,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: split @@ -1088,6 +1138,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: split @@ -1110,6 +1161,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toLowerCase @@ -1132,6 +1184,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toLowerCase @@ -1154,6 +1207,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toUpperCase @@ -1176,6 +1230,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toUpperCase @@ -1198,6 +1253,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: trim @@ -1220,6 +1276,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toString @@ -1242,6 +1299,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toCharArray @@ -1264,6 +1322,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: intern @@ -1286,6 +1345,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: get diff --git a/idea/idea-frontend-fir/testData/memberScopeByFqName/kotlin.Function2.kt b/idea/idea-frontend-fir/testData/memberScopeByFqName/kotlin.Function2.kt index fc8e69af2e5..537c3d81de0 100644 --- a/idea/idea-frontend-fir/testData/memberScopeByFqName/kotlin.Function2.kt +++ b/idea/idea-frontend-fir/testData/memberScopeByFqName/kotlin.Function2.kt @@ -16,6 +16,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: invoke @@ -38,6 +39,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: OPEN name: equals @@ -60,6 +62,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: hashCode @@ -82,6 +85,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: OPEN name: toString diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByFqName/fileWalkDirectionEnum.kt b/idea/idea-frontend-fir/testData/symbols/symbolByFqName/fileWalkDirectionEnum.kt index 8324648795b..eac57cf293d 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByFqName/fileWalkDirectionEnum.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByFqName/fileWalkDirectionEnum.kt @@ -16,6 +16,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: listOf @@ -38,6 +39,7 @@ KtFirFunctionSymbol: isInline: true isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: listOf @@ -60,6 +62,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: listOf diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunction.kt b/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunction.kt index 023060c5e4a..38e848cbe3b 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunction.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunction.kt @@ -14,6 +14,7 @@ KtFirFunctionSymbol: isInline: false isOperator: true isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: get diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunctionWithOverloads.kt b/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunctionWithOverloads.kt index eca0c8dde2b..fc05bdd676d 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunctionWithOverloads.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByFqName/memberFunctionWithOverloads.kt @@ -14,6 +14,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: listIterator @@ -36,6 +37,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: ABSTRACT name: listIterator diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/annotations.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/annotations.kt index c480ed81c3e..2797c601471 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/annotations.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/annotations.kt @@ -83,6 +83,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: x diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/anonymousObject.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/anonymousObject.kt index ab24a1d21e5..aa4148569ac 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/anonymousObject.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/anonymousObject.kt @@ -21,6 +21,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: true + isStatic: false isSuspend: false modality: FINAL name: run @@ -46,6 +47,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: data @@ -80,6 +82,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: anonymousObject diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/classMembes.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/classMembes.kt index 20e7f636331..89af8b1d636 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/classMembes.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/classMembes.kt @@ -20,6 +20,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: a @@ -41,6 +42,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: x diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/extensionFunction.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/extensionFunction.kt index 0be15772f6c..f0a0c32486d 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/extensionFunction.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/extensionFunction.kt @@ -14,6 +14,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: foo diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/function.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/function.kt index 928034c5beb..d6c5aa92718 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/function.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/function.kt @@ -27,6 +27,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: foo diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/functionWithTypeParams.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/functionWithTypeParams.kt index 33c2467c8cf..e28f605d7d0 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/functionWithTypeParams.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/functionWithTypeParams.kt @@ -34,6 +34,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: foo diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/implicitReturn.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/implicitReturn.kt index f763e661d5a..e669ba92e14 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/implicitReturn.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/implicitReturn.kt @@ -14,6 +14,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: foo diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/localDeclarations.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/localDeclarations.kt index a9b88ea2c4f..1f364d0eb2e 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/localDeclarations.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/localDeclarations.kt @@ -29,6 +29,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: aaa @@ -70,6 +71,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: yyy diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberFunctions.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberFunctions.kt index 6660d642eec..db072b66c66 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberFunctions.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberFunctions.kt @@ -17,6 +17,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: x @@ -39,6 +40,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: y diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberProperties.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberProperties.kt index e50b8d0aa52..5a3eba45674 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberProperties.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/memberProperties.kt @@ -20,6 +20,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: x @@ -61,6 +62,7 @@ KtFirKotlinPropertySymbol: isExtension: true isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: y diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/outerAndInnerClasses.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/outerAndInnerClasses.kt index 4ce0a140abc..9193499f929 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/outerAndInnerClasses.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/outerAndInnerClasses.kt @@ -168,6 +168,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: foo diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelFunctions.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelFunctions.kt index 0a554fec664..3cb9242a8b1 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelFunctions.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelFunctions.kt @@ -15,6 +15,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: x @@ -37,6 +38,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: y diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelProperties.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelProperties.kt index 6868284eae6..a5dddd27133 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelProperties.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/topLevelProperties.kt @@ -18,6 +18,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: x @@ -59,6 +60,7 @@ KtFirKotlinPropertySymbol: isExtension: true isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: y diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAnnotations.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAnnotations.kt index 841fc6638f6..00a4ea514b1 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAnnotations.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAnnotations.kt @@ -136,6 +136,7 @@ KtFirFunctionSymbol: isInline: false isOperator: false isOverride: false + isStatic: false isSuspend: false modality: FINAL name: f @@ -161,6 +162,7 @@ KtFirKotlinPropertySymbol: isExtension: false isLateInit: false isOverride: false + isStatic: false isVal: true modality: FINAL name: x diff --git a/idea/resources-en/intentionDescriptions/HLImportMemberIntention/after.kt.template b/idea/resources-en/intentionDescriptions/HLImportMemberIntention/after.kt.template new file mode 100644 index 00000000000..d5989c7e7e3 --- /dev/null +++ b/idea/resources-en/intentionDescriptions/HLImportMemberIntention/after.kt.template @@ -0,0 +1,7 @@ +import javax.swing.SwingUtilities +import javax.swing.SwingUtilities.invokeLater + +fun foo() { + invokeLater { } + invokeLater() +} diff --git a/idea/resources-en/intentionDescriptions/HLImportMemberIntention/before.kt.template b/idea/resources-en/intentionDescriptions/HLImportMemberIntention/before.kt.template new file mode 100644 index 00000000000..b08e56a217f --- /dev/null +++ b/idea/resources-en/intentionDescriptions/HLImportMemberIntention/before.kt.template @@ -0,0 +1,6 @@ +import javax.swing.SwingUtilities + +fun foo() { + SwingUtilities.invokeLater { } + SwingUtilities.invokeLater() +} diff --git a/idea/resources-en/intentionDescriptions/HLImportMemberIntention/description.html b/idea/resources-en/intentionDescriptions/HLImportMemberIntention/description.html new file mode 100644 index 00000000000..cef9d7f6e91 --- /dev/null +++ b/idea/resources-en/intentionDescriptions/HLImportMemberIntention/description.html @@ -0,0 +1,6 @@ + + +This intention converts qualified references to a Java static member, object member or enum class member +into simple references and adds an import directive for that symbol. + + \ No newline at end of file diff --git a/idea/resources-fir/META-INF/firIntentions.xml b/idea/resources-fir/META-INF/firIntentions.xml index f7eee7e1939..6e23bcf1763 100644 --- a/idea/resources-fir/META-INF/firIntentions.xml +++ b/idea/resources-fir/META-INF/firIntentions.xml @@ -24,5 +24,11 @@ org.jetbrains.kotlin.idea.fir.intentions.HLImportAllMembersIntention Kotlin + + + + org.jetbrains.kotlin.idea.fir.intentions.HLImportMemberIntention + Kotlin + \ No newline at end of file diff --git a/idea/testData/intentions/importMember/.firIntention b/idea/testData/intentions/importMember/.firIntention new file mode 100644 index 00000000000..58caf52c587 --- /dev/null +++ b/idea/testData/intentions/importMember/.firIntention @@ -0,0 +1 @@ +org.jetbrains.kotlin.idea.fir.intentions.HLImportMemberIntention diff --git a/idea/testData/intentions/importMember/ClassCallChain.kt b/idea/testData/intentions/importMember/ClassCallChain.kt index 09391274ec0..872a1e9a500 100644 --- a/idea/testData/intentions/importMember/ClassCallChain.kt +++ b/idea/testData/intentions/importMember/ClassCallChain.kt @@ -1,3 +1,4 @@ +// IGNORE_FIR // INTENTION_TEXT: "Add import for 'pack.name.Fixtures'" package pack.name diff --git a/idea/testData/intentions/importMember/ClassCallChain.kt.after b/idea/testData/intentions/importMember/ClassCallChain.kt.after index ae43d8f2654..b6bbf444e4c 100644 --- a/idea/testData/intentions/importMember/ClassCallChain.kt.after +++ b/idea/testData/intentions/importMember/ClassCallChain.kt.after @@ -1,3 +1,4 @@ +// IGNORE_FIR // INTENTION_TEXT: "Add import for 'pack.name.Fixtures'" package pack.name diff --git a/idea/testData/intentions/importMember/ClassCallChain2.kt b/idea/testData/intentions/importMember/ClassCallChain2.kt index 959289241f4..21adf85571e 100644 --- a/idea/testData/intentions/importMember/ClassCallChain2.kt +++ b/idea/testData/intentions/importMember/ClassCallChain2.kt @@ -1,3 +1,4 @@ +// IGNORE_FIR // INTENTION_TEXT: "Add import for 'pack.name.Fixtures.Register'" package pack.name diff --git a/idea/testData/intentions/importMember/ClassCallChain2.kt.after b/idea/testData/intentions/importMember/ClassCallChain2.kt.after index de26035129d..d4917d898b6 100644 --- a/idea/testData/intentions/importMember/ClassCallChain2.kt.after +++ b/idea/testData/intentions/importMember/ClassCallChain2.kt.after @@ -1,3 +1,4 @@ +// IGNORE_FIR // INTENTION_TEXT: "Add import for 'pack.name.Fixtures.Register'" package pack.name