diff --git a/python/src/com/jetbrains/python/codeInsight/PyPsiPath.java b/python/psi-api/src/com/jetbrains/python/codeInsight/PyPsiPath.java similarity index 95% rename from python/src/com/jetbrains/python/codeInsight/PyPsiPath.java rename to python/psi-api/src/com/jetbrains/python/codeInsight/PyPsiPath.java index 74fd57c05143..c773926433a6 100644 --- a/python/src/com/jetbrains/python/codeInsight/PyPsiPath.java +++ b/python/psi-api/src/com/jetbrains/python/codeInsight/PyPsiPath.java @@ -4,8 +4,6 @@ import com.intellij.psi.PsiElement; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyQualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameResolver; -import com.jetbrains.python.psi.resolve.QualifiedNameResolverImpl; -import com.jetbrains.python.psi.stubs.PyClassNameIndex; import org.jetbrains.annotations.Nullable; /** @@ -25,7 +23,8 @@ public abstract class PyPsiPath { @Nullable @Override public PsiElement resolve(PsiElement context) { - QualifiedNameResolver visitor = new QualifiedNameResolverImpl(myQualifiedName).fromElement(context); + PyPsiFacade pyPsiFacade = PyPsiFacade.getInstance(context.getProject()); + QualifiedNameResolver visitor = pyPsiFacade.qualifiedNameResolver(myQualifiedName).fromElement(context); return visitor.firstResult(); } } @@ -40,7 +39,7 @@ public abstract class PyPsiPath { @Nullable @Override public PsiElement resolve(PsiElement context) { - return PyClassNameIndex.findClass(myQualifiedName.toString(), context.getProject()); + return PyPsiFacade.getInstance(context.getProject()).findClass(myQualifiedName.toString()); } } 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 9ac9d08860b3..9c9f55092d84 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 org.jetbrains.annotations.Nullable; /** * @author yole @@ -16,4 +17,7 @@ public abstract class PyPsiFacade { public abstract QualifiedNameResolver qualifiedNameResolver(String qNameString); public abstract QualifiedNameResolver qualifiedNameResolver(PyQualifiedName qualifiedName); + @Nullable + public abstract PyClass findClass(String qName); + } diff --git a/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java b/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java index 036b4c820ade..5406afa0b491 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java @@ -1,13 +1,23 @@ package com.jetbrains.python.psi.impl; +import com.intellij.openapi.project.Project; +import com.jetbrains.python.psi.PyClass; 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 org.jetbrains.annotations.Nullable; /** * @author yole */ public class PyPsiFacadeImpl extends PyPsiFacade { + private final Project myProject; + + public PyPsiFacadeImpl(Project project) { + myProject = project; + } + @Override public QualifiedNameResolver qualifiedNameResolver(String qNameString) { return new QualifiedNameResolverImpl(qNameString); @@ -17,4 +27,10 @@ public class PyPsiFacadeImpl extends PyPsiFacade { public QualifiedNameResolver qualifiedNameResolver(PyQualifiedName qualifiedName) { return new QualifiedNameResolverImpl(qualifiedName); } + + @Nullable + @Override + public PyClass findClass(String qName) { + return PyClassNameIndex.findClass(qName, myProject); + } }