From 8ff184dcda264115e13582b18e64f6a414bd735d Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 9 Aug 2012 13:30:49 +0200 Subject: [PATCH] PyDynamicMember -> python-psi-api --- .../python/codeInsight/PyDynamicMember.java | 13 ++++++------- .../src/com/jetbrains/python/psi/PyPsiFacade.java | 2 ++ .../jetbrains/python/psi/impl/PyPsiFacadeImpl.java | 7 +++++++ 3 files changed, 15 insertions(+), 7 deletions(-) rename python/{ => psi-api}/src/com/jetbrains/python/codeInsight/PyDynamicMember.java (90%) diff --git a/python/src/com/jetbrains/python/codeInsight/PyDynamicMember.java b/python/psi-api/src/com/jetbrains/python/codeInsight/PyDynamicMember.java similarity index 90% rename from python/src/com/jetbrains/python/codeInsight/PyDynamicMember.java rename to python/psi-api/src/com/jetbrains/python/codeInsight/PyDynamicMember.java index cf912a288212..866b83a3a210 100644 --- a/python/src/com/jetbrains/python/codeInsight/PyDynamicMember.java +++ b/python/psi-api/src/com/jetbrains/python/codeInsight/PyDynamicMember.java @@ -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); } } } diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java b/python/psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java index 9c9f55092d84..31c9b795eed3 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java @@ -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); } diff --git a/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java b/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java index 5406afa0b491..08f1f6fc6c74 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java @@ -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); + } }