Add utility method for getting class from constructor parameter

This commit is contained in:
Nikolay Krasko
2013-05-16 18:44:58 +04:00
committed by Natalia.Ukhorskaya
parent bed43db274
commit 461e83a5d1
4 changed files with 24 additions and 10 deletions
@@ -197,8 +197,9 @@ public class JetPsiUtil {
firstPart = getFQName((JetNamedDeclaration) parent); firstPart = getFQName((JetNamedDeclaration) parent);
} }
else if (namedDeclaration instanceof JetParameter) { else if (namedDeclaration instanceof JetParameter) {
if (((JetParameter) namedDeclaration).getValOrVarNode() != null && parent != null && parent.getParent() instanceof JetClassOrObject) { JetClass constructorClass = getClassIfParameterIsProperty((JetParameter) namedDeclaration);
firstPart = getFQName((JetClassOrObject) parent.getParent()); if (constructorClass != null) {
firstPart = getFQName(constructorClass);
} }
} }
else if (parent instanceof JetObjectDeclaration) { else if (parent instanceof JetObjectDeclaration) {
@@ -574,6 +575,18 @@ public class JetPsiUtil {
} }
} }
@Nullable
public static JetClass getClassIfParameterIsProperty(@NotNull JetParameter jetParameter) {
if (jetParameter.getValOrVarNode() != null) {
PsiElement parent = jetParameter.getParent();
if (parent instanceof JetParameterList && parent.getParent() instanceof JetClass) {
return (JetClass) parent.getParent();
}
}
return null;
}
@Nullable @Nullable
private static IElementType getOperation(@NotNull JetExpression expression) { private static IElementType getOperation(@NotNull JetExpression expression) {
if (expression instanceof JetQualifiedExpression) { if (expression instanceof JetQualifiedExpression) {
@@ -196,8 +196,11 @@ public class LightClassUtil {
@Nullable @Nullable
private static PsiClass getWrappingClass(@NotNull JetDeclaration declaration) { private static PsiClass getWrappingClass(@NotNull JetDeclaration declaration) {
if (declaration instanceof JetParameter && declaration.getParent().getParent() instanceof JetClass) { if (declaration instanceof JetParameter) {
return getPsiClass((JetClassOrObject) declaration.getParent().getParent()); JetClass constructorClass = JetPsiUtil.getClassIfParameterIsProperty((JetParameter) declaration);
if (constructorClass != null) {
return getPsiClass(constructorClass);
}
} }
if (declaration instanceof JetPropertyAccessor) { if (declaration instanceof JetPropertyAccessor) {
@@ -143,12 +143,10 @@ public class JetIconProvider extends IconProvider {
} }
if (psiElement instanceof JetParameter) { if (psiElement instanceof JetParameter) {
JetParameter parameter = (JetParameter) psiElement; JetParameter parameter = (JetParameter) psiElement;
if (parameter.getValOrVarNode() != null) { if (JetPsiUtil.getClassIfParameterIsProperty(parameter) != null) {
JetParameterList parameterList = PsiTreeUtil.getParentOfType(psiElement, JetParameterList.class); return parameter.isMutable() ? JetIcons.FIELD_VAR : JetIcons.FIELD_VAL;
if (parameterList != null && parameterList.getParent() instanceof JetClass) {
return parameter.isMutable() ? JetIcons.FIELD_VAR : JetIcons.FIELD_VAL;
}
} }
return JetIcons.PARAMETER; return JetIcons.PARAMETER;
} }
if (psiElement instanceof JetProperty) { if (psiElement instanceof JetProperty) {
@@ -48,7 +48,7 @@ public class KotlinDefinitionsSearcher extends QueryExecutorBase<PsiElement, Psi
if (queryParameters instanceof JetParameter) { if (queryParameters instanceof JetParameter) {
JetParameter parameter = (JetParameter) queryParameters; JetParameter parameter = (JetParameter) queryParameters;
if (parameter.getValOrVarNode() != null && queryParameters.getParent().getParent() instanceof JetClass) { if (JetPsiUtil.getClassIfParameterIsProperty(parameter) != null) {
processPropertyImplementations(parameter, consumer); processPropertyImplementations(parameter, consumer);
} }
} }