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() { }
|
||||
|
||||
@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
|
||||
public PsiClass createClass(@NotNull PsiClassStub stub) {
|
||||
final PsiElement origin = getOriginalElement(stub);
|
||||
|
||||
@@ -138,8 +138,9 @@ sealed class KtLightFieldImpl<D : PsiField>(
|
||||
}
|
||||
|
||||
fun fromClsFields(delegateClass: PsiClass, containingClass: KtLightClass) = delegateClass.fields.map {
|
||||
val origin = ClsWrapperStubPsiFactory.getMemberOrigin(it)
|
||||
KtLightFieldImpl.create(origin, it, containingClass)
|
||||
KtLightFieldImpl.create(getOrigin(it), 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.ItemPresentationProviders
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.openapi.util.UserDataHolder
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.compiled.ClsRepositoryPsiElement
|
||||
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.LightMemberOriginForDeclaration
|
||||
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)
|
||||
|
||||
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?,
|
||||
computeRealDelegate: () -> PsiMethod
|
||||
): KtLightMethodImpl {
|
||||
return KtLightMethodImpl(computeRealDelegate, adjustMethodOrigin(origin), containingClass, dummyDelegate)
|
||||
return KtLightMethodImpl(computeRealDelegate, origin, containingClass, dummyDelegate)
|
||||
}
|
||||
|
||||
fun fromClsMethods(delegateClass: PsiClass, containingClass: KtLightClass) = delegateClass.methods.map {
|
||||
val origin = ClsWrapperStubPsiFactory.getMemberOrigin(it)
|
||||
KtLightMethodImpl.create(it, adjustMethodOrigin(origin), containingClass)
|
||||
KtLightMethodImpl.create(it, getOrigin(it), containingClass)
|
||||
}
|
||||
|
||||
fun getOrigin(method: PsiMethod) = adjustMethodOrigin(getMemberOrigin(method))
|
||||
}
|
||||
|
||||
override fun getThrowsList() = clsDelegate.throwsList
|
||||
|
||||
Reference in New Issue
Block a user