[FIR IDE] Enabled usages services and added services stubs

This commit is contained in:
Igor Yakovlev
2020-08-28 22:14:54 +03:00
parent 75347d06b9
commit 1a10275d0d
5 changed files with 130 additions and 2 deletions
@@ -0,0 +1,64 @@
/*
* Copyright 2010-2020 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.asJava
import com.intellij.psi.*
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.psi.*
class LightClassProviderFirImpl : LightClassProvider {
override fun getLightFieldForCompanionObject(companionObject: KtClassOrObject): PsiField? {
return null
}
override fun getLightClassMethods(function: KtFunction): List<PsiMethod> {
return emptyList()
}
override fun getLightClassParameterDeclarations(parameter: KtParameter): List<PsiNamedElement> {
return emptyList()
}
override fun getLightClassPropertyDeclarations(property: KtProperty): List<PsiNamedElement> {
return emptyList()
}
override fun toLightClassWithBuiltinMapping(classOrObject: KtClassOrObject): PsiClass? {
return null
}
override fun toLightMethods(psiElement: PsiElement): List<PsiMethod> {
return emptyList()
}
override fun toLightClass(classOrObject: KtClassOrObject): KtLightClass? {
return null
}
override fun toLightElements(ktElement: KtElement): List<PsiNamedElement> {
return emptyList()
}
override fun createKtFakeLightClass(kotlinOrigin: KtClassOrObject): PsiClass? {
return null
}
override fun getRepresentativeLightMethod(psiElement: PsiElement): PsiMethod? {
return null
}
override fun isKtFakeLightClass(psiClass: PsiClass): Boolean {
return false
}
override fun isKtLightClassForDecompiledDeclaration(psiClass: PsiClass): Boolean {
return false
}
override fun createKtFakeLightMethod(ktDeclaration: KtNamedDeclaration): PsiMethod? {
return null
}
}
@@ -0,0 +1,42 @@
/*
* Copyright 2010-2020 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.findUsages
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.psi.*
class KotlinFindUsagesSupportFirImpl : KotlinFindUsagesSupport {
override fun isCallReceiverRefersToCompanionObject(element: KtElement, companionObject: KtObjectDeclaration): Boolean {
return false
}
override fun isDataClassComponentFunction(element: KtParameter): Boolean {
return false
}
override fun getTopMostOverriddenElementsToHighlight(target: PsiElement): List<PsiElement> {
return emptyList()
}
override fun tryRenderDeclarationCompactStyle(declaration: KtDeclaration): String? {
return (declaration as? KtNamedDeclaration)?.name ?: "SUPPORT FOR FIR"
}
override fun isConstructorUsage(psiReference: PsiReference, ktClassOrObject: KtClassOrObject): Boolean {
return false
}
override fun checkSuperMethods(declaration: KtDeclaration, ignore: Collection<PsiElement>?, actionString: String): List<PsiElement> {
return listOf(declaration)
}
override fun sourcesAndLibraries(delegate: GlobalSearchScope, project: Project): GlobalSearchScope {
return delegate
}
}
@@ -38,7 +38,7 @@ interface LightClassProvider {
fun toLightElements(ktElement: KtElement): List<PsiNamedElement>
fun createKtFakeLightClass(kotlinOrigin: KtClassOrObject): PsiClass
fun createKtFakeLightClass(kotlinOrigin: KtClassOrObject): PsiClass?
fun getRepresentativeLightMethod(psiElement: PsiElement): PsiMethod?
+22
View File
@@ -97,6 +97,9 @@ The Kotlin FIR plugin provides language support in IntelliJ IDEA and Android Stu
<projectService serviceImplementation="org.jetbrains.kotlin.idea.fir.low.level.api.FirIdeResolveStateService"/>
<projectService serviceImplementation="org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade"/>
<projectService serviceInterface="org.jetbrains.kotlin.idea.asJava.LightClassProvider"
serviceImplementation="org.jetbrains.kotlin.idea.asJava.LightClassProviderFirImpl"/>
<completion.contributor language="kotlin"
id="KotlinCompletionContributor"
order="first"
@@ -201,9 +204,28 @@ The Kotlin FIR plugin provides language support in IntelliJ IDEA and Android Stu
order="first"/>
<findUsagesHandlerFactory implementation="org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory"/>
<projectService serviceInterface="org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesSupport"
serviceImplementation="org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesSupportFirImpl"/>
<lang.findUsagesProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesProviderBase"/>
<gotoDeclarationHandler implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinImportAliasGotoDeclarationHandler"/>
<referencesSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearcher"/>
<referencesSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinAliasedImportedElementSearcher"/>
<!-- <directClassInheritorsSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinDirectInheritorsSearcher"/>-->
<!-- <overridingMethodsSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinOverridingMethodsWithGenericsSearcher"/>-->
<!-- <definitionsScopedSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinDefinitionsSearcher"/>-->
<!-- <annotatedElementsSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinAnnotatedElementsSearcher"/>-->
<!-- <classesWithAnnotatedMembersSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinClassesWithAnnotatedMembersSearcher"/>-->
<!-- <methodReferencesSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinPropertyAccessorsReferenceSearcher"/>-->
<!-- <methodReferencesSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinConstructorDelegationCallReferenceSearcher"/>-->
<!-- <methodReferencesSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinOverridingMethodReferenceSearcher"/>-->
<!-- <methodReferencesSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinConventionMethodReferencesSearcher"/>-->
<!-- <methodReferencesSearch implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.DefaultAnnotationMethodKotlinImplicitReferenceSearcher"/>-->
<readWriteAccessDetector implementation="org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReadWriteAccessDetector" id="kotlin"/>
<fileType name="Kotlin"
implementationClass="org.jetbrains.kotlin.idea.KotlinFileType"
fieldName="INSTANCE"
@@ -38,7 +38,7 @@ class LightClassProviderImpl : LightClassProvider {
override fun toLightElements(ktElement: KtElement): List<PsiNamedElement> =
ktElement.toLightElements()
override fun createKtFakeLightClass(kotlinOrigin: KtClassOrObject): PsiClass =
override fun createKtFakeLightClass(kotlinOrigin: KtClassOrObject): PsiClass? =
KtFakeLightClass(kotlinOrigin)
override fun getRepresentativeLightMethod(psiElement: PsiElement): PsiMethod? =