PyDynamicMember -> python-psi-api

This commit is contained in:
Dmitry Jemerov
2012-08-09 13:30:49 +02:00
parent 408b9e0116
commit 8ff184dcda
3 changed files with 15 additions and 7 deletions
@@ -1,14 +1,13 @@
package com.jetbrains.python.codeInsight;
import com.intellij.extapi.psi.ASTWrapperPsiElement;
import com.intellij.icons.AllIcons;
import com.intellij.psi.PsiElement;
import com.intellij.util.Function;
import com.jetbrains.python.psi.PyClass;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyFunction;
import com.jetbrains.python.psi.impl.PyElementImpl;
import com.jetbrains.python.psi.stubs.PyClassNameIndex;
import com.jetbrains.python.psi.types.PyClassTypeImpl;
import com.jetbrains.python.psi.PyPsiFacade;
import com.jetbrains.python.psi.PyTypedElement;
import com.jetbrains.python.psi.types.PyType;
import com.jetbrains.python.psi.types.TypeEvalContext;
import org.jetbrains.annotations.NotNull;
@@ -131,7 +130,7 @@ public class PyDynamicMember {
return myTarget;
}
PyClass targetClass =
myTypeName != null && myTypeName.indexOf('.') > 0 ? PyClassNameIndex.findClass(myTypeName, context.getProject()) : null;
myTypeName != null && myTypeName.indexOf('.') > 0 ? PyPsiFacade.getInstance(context.getProject()).findClass(myTypeName) : null;
final PsiElement resolveTarget = findResolveTarget(context);
if (resolveTarget instanceof PyFunction) {
return resolveTarget;
@@ -168,7 +167,7 @@ public class PyDynamicMember {
return myFunction;
}
private class MyInstanceElement extends PyElementImpl implements PyExpression {
private class MyInstanceElement extends ASTWrapperPsiElement implements PyTypedElement {
private final PyClass myClass;
private final PsiElement myContext;
@@ -182,7 +181,7 @@ public class PyDynamicMember {
if (myTypeCallback != null) {
return myTypeCallback.fun(myContext);
}
return new PyClassTypeImpl(myClass, !myResolveToInstance);
return PyPsiFacade.getInstance(getProject()).createClassType(myClass, !myResolveToInstance);
}
}
}
@@ -4,6 +4,7 @@ import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.jetbrains.python.psi.impl.PyQualifiedName;
import com.jetbrains.python.psi.resolve.QualifiedNameResolver;
import com.jetbrains.python.psi.types.PyClassType;
import org.jetbrains.annotations.Nullable;
/**
@@ -20,4 +21,5 @@ public abstract class PyPsiFacade {
@Nullable
public abstract PyClass findClass(String qName);
public abstract PyClassType createClassType(PyClass pyClass, boolean isDefinition);
}
@@ -6,6 +6,8 @@ import com.jetbrains.python.psi.PyPsiFacade;
import com.jetbrains.python.psi.resolve.QualifiedNameResolver;
import com.jetbrains.python.psi.resolve.QualifiedNameResolverImpl;
import com.jetbrains.python.psi.stubs.PyClassNameIndex;
import com.jetbrains.python.psi.types.PyClassType;
import com.jetbrains.python.psi.types.PyClassTypeImpl;
import org.jetbrains.annotations.Nullable;
/**
@@ -33,4 +35,9 @@ public class PyPsiFacadeImpl extends PyPsiFacade {
public PyClass findClass(String qName) {
return PyClassNameIndex.findClass(qName, myProject);
}
@Override
public PyClassType createClassType(PyClass pyClass, boolean isDefinition) {
return new PyClassTypeImpl(pyClass, isDefinition);
}
}