Use light element origin instead of getNavigationElement()
This commit is contained in:
@@ -21,7 +21,6 @@ import com.intellij.psi.impl.light.AbstractLightClass;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.psi.JetTypeParameter;
|
||||
import org.jetbrains.jet.lang.psi.JetClass;
|
||||
import org.jetbrains.jet.lang.psi.JetTypeParameterListOwner;
|
||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightElement;
|
||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightMethod;
|
||||
@@ -52,7 +51,10 @@ public class KotlinLightTypeParameter
|
||||
@NotNull
|
||||
@Override
|
||||
public JetTypeParameter getOrigin() {
|
||||
return ((JetTypeParameterListOwner) owner.getNavigationElement()).getTypeParameters().get(index);
|
||||
JetTypeParameterListOwner jetOwner = (JetTypeParameterListOwner) AsJavaPackage.getUnwrapped(owner);
|
||||
assert (jetOwner != null) : "Invalid type parameter owner: " + owner;
|
||||
|
||||
return jetOwner.getTypeParameters().get(index);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -34,6 +34,8 @@ import com.intellij.psi.PsiTypeParameter
|
||||
import java.util.ArrayList
|
||||
import org.jetbrains.jet.lang.psi.JetTypeParameterList
|
||||
import com.intellij.psi.PsiTypeParameterListOwner
|
||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightElement
|
||||
import com.intellij.psi.PsiNamedElement
|
||||
import com.intellij.psi.PsiNamedElement
|
||||
import org.jetbrains.jet.lang.psi.JetCallableDeclaration
|
||||
import org.jetbrains.jet.lang.psi.psiUtil.isExtensionDeclaration
|
||||
@@ -104,4 +106,11 @@ fun JetTypeParameter.toPsiTypeParameters(): List<PsiTypeParameter> {
|
||||
|
||||
return lightOwners?.map { lightOwner -> (lightOwner as PsiTypeParameterListOwner).getTypeParameters()[paramIndex] }
|
||||
?: Collections.emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
// Returns original declaration if given PsiElement is a Kotlin light element, and element itself otherwise
|
||||
val PsiElement.unwrapped: PsiElement?
|
||||
get() = if (this is KotlinLightElement<*, *>) origin else this
|
||||
|
||||
val PsiElement.namedUnwrappedElement: PsiNamedElement?
|
||||
get() = unwrapped?.getParentByType(javaClass<PsiNamedElement>())
|
||||
Reference in New Issue
Block a user