Light classes: refactor, move getOrigin to corresponding classes
This commit is contained in:
-15
@@ -37,21 +37,6 @@ public class ClsWrapperStubPsiFactory extends StubPsiFactory {
|
|||||||
|
|
||||||
private ClsWrapperStubPsiFactory() { }
|
private ClsWrapperStubPsiFactory() { }
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public static LightMemberOriginForDeclaration getMemberOrigin(@NotNull PsiMember member) {
|
|
||||||
if (member instanceof ClsRepositoryPsiElement<?>) {
|
|
||||||
StubElement stubElement = ((ClsRepositoryPsiElement<?>) member).getStub();
|
|
||||||
if (stubElement instanceof UserDataHolder) {
|
|
||||||
LightElementOrigin origin = ((UserDataHolder) stubElement).getUserData(ORIGIN);
|
|
||||||
if (origin instanceof LightMemberOriginForDeclaration) {
|
|
||||||
return (LightMemberOriginForDeclaration) origin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PsiClass createClass(@NotNull PsiClassStub stub) {
|
public PsiClass createClass(@NotNull PsiClassStub stub) {
|
||||||
final PsiElement origin = getOriginalElement(stub);
|
final PsiElement origin = getOriginalElement(stub);
|
||||||
|
|||||||
@@ -138,8 +138,9 @@ sealed class KtLightFieldImpl<D : PsiField>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun fromClsFields(delegateClass: PsiClass, containingClass: KtLightClass) = delegateClass.fields.map {
|
fun fromClsFields(delegateClass: PsiClass, containingClass: KtLightClass) = delegateClass.fields.map {
|
||||||
val origin = ClsWrapperStubPsiFactory.getMemberOrigin(it)
|
KtLightFieldImpl.create(getOrigin(it), it, containingClass)
|
||||||
KtLightFieldImpl.create(origin, it, containingClass)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getOrigin(field: PsiField) = getMemberOrigin(field)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,12 @@ package org.jetbrains.kotlin.asJava.elements
|
|||||||
import com.intellij.navigation.ItemPresentation
|
import com.intellij.navigation.ItemPresentation
|
||||||
import com.intellij.navigation.ItemPresentationProviders
|
import com.intellij.navigation.ItemPresentationProviders
|
||||||
import com.intellij.openapi.util.TextRange
|
import com.intellij.openapi.util.TextRange
|
||||||
|
import com.intellij.openapi.util.UserDataHolder
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
|
import com.intellij.psi.impl.compiled.ClsRepositoryPsiElement
|
||||||
import com.intellij.psi.impl.light.LightElement
|
import com.intellij.psi.impl.light.LightElement
|
||||||
|
import org.jetbrains.kotlin.asJava.builder.ClsWrapperStubPsiFactory.ORIGIN
|
||||||
|
import org.jetbrains.kotlin.asJava.builder.LightElementOrigin
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
||||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||||
@@ -93,3 +97,11 @@ abstract class KtLightMemberImpl<out D : PsiMember>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val visibilityModifiers = arrayOf(PsiModifier.PRIVATE, PsiModifier.PACKAGE_LOCAL, PsiModifier.PROTECTED, PsiModifier.PUBLIC)
|
private val visibilityModifiers = arrayOf(PsiModifier.PRIVATE, PsiModifier.PACKAGE_LOCAL, PsiModifier.PROTECTED, PsiModifier.PUBLIC)
|
||||||
|
|
||||||
|
internal fun getMemberOrigin(member: PsiMember): LightMemberOriginForDeclaration? {
|
||||||
|
if (member !is ClsRepositoryPsiElement<*>) return null
|
||||||
|
|
||||||
|
val stubElement = member.stub as? UserDataHolder ?: return null
|
||||||
|
|
||||||
|
return stubElement.getUserData<LightElementOrigin>(ORIGIN) as? LightMemberOriginForDeclaration ?: return null
|
||||||
|
}
|
||||||
|
|||||||
+4
-3
@@ -200,13 +200,14 @@ class KtLightMethodImpl private constructor(
|
|||||||
origin: LightMemberOriginForDeclaration?,
|
origin: LightMemberOriginForDeclaration?,
|
||||||
computeRealDelegate: () -> PsiMethod
|
computeRealDelegate: () -> PsiMethod
|
||||||
): KtLightMethodImpl {
|
): KtLightMethodImpl {
|
||||||
return KtLightMethodImpl(computeRealDelegate, adjustMethodOrigin(origin), containingClass, dummyDelegate)
|
return KtLightMethodImpl(computeRealDelegate, origin, containingClass, dummyDelegate)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fromClsMethods(delegateClass: PsiClass, containingClass: KtLightClass) = delegateClass.methods.map {
|
fun fromClsMethods(delegateClass: PsiClass, containingClass: KtLightClass) = delegateClass.methods.map {
|
||||||
val origin = ClsWrapperStubPsiFactory.getMemberOrigin(it)
|
KtLightMethodImpl.create(it, getOrigin(it), containingClass)
|
||||||
KtLightMethodImpl.create(it, adjustMethodOrigin(origin), containingClass)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getOrigin(method: PsiMethod) = adjustMethodOrigin(getMemberOrigin(method))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getThrowsList() = clsDelegate.throwsList
|
override fun getThrowsList() = clsDelegate.throwsList
|
||||||
|
|||||||
Reference in New Issue
Block a user