From f7b1beede394c4f83e2e3de4332c0c8aed3d5d82 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 16 Oct 2013 13:19:32 +0200 Subject: [PATCH] move QualifiedName class from Python to platform --- .../impl/PyJavaImportCandidateProvider.java | 3 +- .../python/psi/impl/PyJavaImportResolver.java | 3 +- .../jetbrains/python/PythonStringUtil.java | 6 +- .../python/codeInsight/PyPsiPath.java | 10 +- .../com/jetbrains/python/psi/PyDecorator.java | 4 +- .../python/psi/PyFromImportStatement.java | 4 +- .../jetbrains/python/psi/PyImportElement.java | 4 +- .../com/jetbrains/python/psi/PyPsiFacade.java | 4 +- .../python/psi/PyReferenceExpression.java | 4 +- .../python/psi/PyTargetExpression.java | 6 +- .../python/psi/impl/PyImportResolver.java | 3 +- .../python/psi/impl/PyQualifiedName.java | 200 ------------------ .../psi/impl/PyQualifiedNameFactory.java | 33 +++ .../stubs/CustomTargetExpressionStub.java | 4 +- .../psi/resolve/PyCanonicalPathProvider.java | 4 +- .../python/psi/stubs/PyClassStub.java | 4 +- .../python/psi/stubs/PyDecoratorStub.java | 4 +- .../psi/stubs/PyFromImportStatementStub.java | 4 +- .../python/psi/stubs/PyImportElementStub.java | 4 +- .../psi/stubs/PyTargetExpressionStub.java | 4 +- .../numpy/documentation/NumPyDocString.java | 4 +- .../com/jetbrains/pyqt/PyQtTypeProvider.java | 6 +- .../controlflow/InstructionBuilder.java | 4 +- .../codeInsight/imports/AddImportHelper.java | 12 +- .../imports/AutoImportQuickFix.java | 4 +- .../imports/ImportCandidateHolder.java | 10 +- .../imports/PythonReferenceImporter.java | 4 +- .../stdlib/PyStdlibCanonicalPathProvider.java | 20 +- .../PyStdlibDocumentationLinkProvider.java | 6 +- .../stdlib/PyStdlibModuleMembersProvider.java | 4 +- .../stdlib/PyStdlibTypeProvider.java | 11 +- .../userSkeletons/PyUserSkeletonsUtil.java | 8 +- .../documentation/DocStringTypeReference.java | 4 +- .../documentation/PythonDocumentationMap.java | 12 +- .../PythonDocumentationProvider.java | 8 +- .../PyCompatibilityInspection.java | 6 +- .../PyMethodParametersInspection.java | 4 +- .../inspections/PyPep8NamingInspection.java | 4 +- .../PyPropertyDefinitionInspection.java | 4 +- .../PyUnresolvedReferencesInspection.java | 26 +-- .../AddIgnoredIdentifierQuickFix.java | 6 +- .../quickfix/GenerateBinaryStubsFix.java | 6 +- .../setupPy/SetupTaskIntrospector.java | 6 +- .../src/com/jetbrains/python/psi/PyUtil.java | 4 +- .../python/psi/impl/PyClassImpl.java | 12 +- .../python/psi/impl/PyDecoratorImpl.java | 7 +- .../python/psi/impl/PyDecoratorListImpl.java | 3 +- .../jetbrains/python/psi/impl/PyFileImpl.java | 7 +- .../psi/impl/PyFromImportStatementImpl.java | 9 +- .../python/psi/impl/PyFunctionImpl.java | 7 +- .../python/psi/impl/PyImportElementImpl.java | 17 +- .../python/psi/impl/PyImportedModule.java | 19 +- .../python/psi/impl/PyPsiFacadeImpl.java | 3 +- .../psi/impl/PyReferenceExpressionImpl.java | 9 +- .../psi/impl/PyTargetExpressionImpl.java | 11 +- .../references/PyFromImportNameReference.java | 4 +- .../impl/references/PyImportReference.java | 10 +- .../impl/references/PyQualifiedReference.java | 22 +- .../psi/impl/stubs/PyClassElementType.java | 21 +- .../psi/impl/stubs/PyClassStubImpl.java | 8 +- .../stubs/PyDecoratorCallElementType.java | 6 +- .../psi/impl/stubs/PyDecoratorStubImpl.java | 8 +- .../PyFromImportStatementElementType.java | 8 +- .../stubs/PyFromImportStatementStubImpl.java | 8 +- .../stubs/PyImportElementElementType.java | 6 +- .../impl/stubs/PyImportElementStubImpl.java | 8 +- .../stubs/PyTargetExpressionElementType.java | 8 +- .../stubs/PyTargetExpressionStubImpl.java | 8 +- .../resolve/AssignmentCollectProcessor.java | 9 +- .../resolve/CompletionVariantsProcessor.java | 4 +- .../python/psi/resolve/PyResolveUtil.java | 5 +- .../python/psi/resolve/PythonPathCache.java | 14 +- .../psi/resolve/QualifiedNameFinder.java | 38 ++-- .../resolve/QualifiedNameResolverImpl.java | 10 +- .../python/psi/resolve/ResolveImportUtil.java | 21 +- .../python/psi/resolve/ResolveProcessor.java | 6 +- .../python/psi/resolve/VariantsProcessor.java | 4 +- .../python/psi/stubs/PropertyStubStorage.java | 4 +- .../psi/types/PyImportedModuleType.java | 4 +- .../python/psi/types/PyModuleType.java | 28 +-- .../python/psi/types/PyTypeParser.java | 6 +- .../python/refactoring/PyDefUseUtil.java | 4 +- .../classes/PyClassRefactoringUtil.java | 10 +- .../move/PyMoveClassOrFunctionProcessor.java | 4 +- .../refactoring/move/PyMoveFileHandler.java | 10 +- .../sdk/skeletons/SkeletonVersionChecker.java | 18 +- .../validation/CompatibilityVisitor.java | 4 +- .../com/jetbrains/python/PyStubsTest.java | 6 +- 88 files changed, 391 insertions(+), 542 deletions(-) delete mode 100644 python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedName.java create mode 100644 python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedNameFactory.java diff --git a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportCandidateProvider.java b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportCandidateProvider.java index 46a5a9ddcde1..0fecb2e2d9f1 100644 --- a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportCandidateProvider.java +++ b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportCandidateProvider.java @@ -9,6 +9,7 @@ import com.intellij.psi.PsiReference; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.search.PsiShortNamesCache; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.codeInsight.imports.AutoImportQuickFix; import com.jetbrains.python.codeInsight.imports.PyImportCandidateProvider; @@ -25,7 +26,7 @@ public class PyJavaImportCandidateProvider implements PyImportCandidateProvider PsiShortNamesCache cache = PsiShortNamesCache.getInstance(project); final PsiClass[] classesByName = cache.getClassesByName(name, scope); for (PsiClass psiClass : classesByName) { - final PyQualifiedName packageQName = PyQualifiedName.fromDottedString(psiClass.getQualifiedName()).removeLastComponent(); + final QualifiedName packageQName = QualifiedName.fromDottedString(psiClass.getQualifiedName()).removeLastComponent(); quickFix.addImport(psiClass, psiClass.getContainingFile(), packageQName); } } diff --git a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportResolver.java b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportResolver.java index 25956a32e248..bd8f7f3e4704 100644 --- a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportResolver.java +++ b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaImportResolver.java @@ -5,6 +5,7 @@ import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPackage; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameResolveContext; import org.jetbrains.annotations.Nullable; @@ -13,7 +14,7 @@ import org.jetbrains.annotations.Nullable; */ public class PyJavaImportResolver implements PyImportResolver { @Nullable - public PsiElement resolveImportReference(PyQualifiedName name, QualifiedNameResolveContext context) { + public PsiElement resolveImportReference(QualifiedName name, QualifiedNameResolveContext context) { String fqn = name.toString(); final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(context.getProject()); if (psiFacade == null) return null; diff --git a/python/psi-api/src/com/jetbrains/python/PythonStringUtil.java b/python/psi-api/src/com/jetbrains/python/PythonStringUtil.java index 215362bcc22e..9dede1c2ba0e 100644 --- a/python/psi-api/src/com/jetbrains/python/PythonStringUtil.java +++ b/python/psi-api/src/com/jetbrains/python/PythonStringUtil.java @@ -11,7 +11,7 @@ import com.intellij.util.ObjectUtils; import com.intellij.util.PathUtil; import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.PyStringLiteralExpression; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -223,8 +223,8 @@ public class PythonStringUtil { @Nullable public static String intersect(String fullName, String elementStringValue) { - PyQualifiedName fullQName = PyQualifiedName.fromDottedString(fullName); - PyQualifiedName stringQName = PyQualifiedName.fromDottedString(elementStringValue); + QualifiedName fullQName = QualifiedName.fromDottedString(fullName); + QualifiedName stringQName = QualifiedName.fromDottedString(elementStringValue); String[] s1 = stringQName.getComponents().toArray(new String[stringQName.getComponentCount()]); String[] s2 = fullQName.getComponents().toArray(new String[fullQName.getComponentCount()]); diff --git a/python/psi-api/src/com/jetbrains/python/codeInsight/PyPsiPath.java b/python/psi-api/src/com/jetbrains/python/codeInsight/PyPsiPath.java index a9e96f7f8b3f..7543e72c1061 100644 --- a/python/psi-api/src/com/jetbrains/python/codeInsight/PyPsiPath.java +++ b/python/psi-api/src/com/jetbrains/python/codeInsight/PyPsiPath.java @@ -2,7 +2,7 @@ package com.jetbrains.python.codeInsight; import com.intellij.psi.PsiElement; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameResolver; import org.jetbrains.annotations.Nullable; @@ -14,10 +14,10 @@ public abstract class PyPsiPath { public abstract PsiElement resolve(PsiElement module); public static class ToFile extends PyPsiPath { - private final PyQualifiedName myQualifiedName; + private final QualifiedName myQualifiedName; public ToFile(String qualifiedName) { - myQualifiedName = PyQualifiedName.fromDottedString(qualifiedName); + myQualifiedName = QualifiedName.fromDottedString(qualifiedName); } @Nullable @@ -30,10 +30,10 @@ public abstract class PyPsiPath { } public static class ToClassQName extends PyPsiPath { - private final PyQualifiedName myQualifiedName; + private final QualifiedName myQualifiedName; public ToClassQName(String qualifiedName) { - myQualifiedName = PyQualifiedName.fromDottedString(qualifiedName); + myQualifiedName = QualifiedName.fromDottedString(qualifiedName); } @Nullable diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyDecorator.java b/python/psi-api/src/com/jetbrains/python/psi/PyDecorator.java index 357c88873a21..04d807801b4a 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyDecorator.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyDecorator.java @@ -1,7 +1,7 @@ package com.jetbrains.python.psi; import com.intellij.psi.StubBasedPsiElement; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.stubs.PyDecoratorStub; import org.jetbrains.annotations.Nullable; @@ -38,6 +38,6 @@ public interface PyDecorator extends PyCallExpression, StubBasedPsiElement EP_NAME = ExtensionPointName.create("Pythonid.importResolver"); @Nullable - PsiElement resolveImportReference(PyQualifiedName name, QualifiedNameResolveContext context); + PsiElement resolveImportReference(QualifiedName name, QualifiedNameResolveContext context); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedName.java b/python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedName.java deleted file mode 100644 index 7e92748f19f2..000000000000 --- a/python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedName.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.jetbrains.python.psi.impl; - -import com.intellij.openapi.util.text.StringUtil; -import com.intellij.psi.stubs.StubInputStream; -import com.intellij.psi.stubs.StubOutputStream; -import com.intellij.util.io.StringRef; -import com.jetbrains.python.psi.PyExpression; -import com.jetbrains.python.psi.PyQualifiedExpression; -import com.jetbrains.python.psi.PyReferenceExpression; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * @author yole - */ -public class PyQualifiedName { - @NotNull private final List myComponents; - - private PyQualifiedName(int count) { - myComponents = new ArrayList(count); - } - - @Nullable - public static PyQualifiedName fromReferenceChain(List components) { - PyQualifiedName qName = new PyQualifiedName(components.size()); - for (PyExpression component : components) { - final String refName = (component instanceof PyQualifiedExpression) ? ((PyQualifiedExpression)component).getReferencedName() : null; - if (refName == null) { - return null; - } - qName.myComponents.add(refName); - } - return qName; - } - - public static PyQualifiedName fromComponents(Collection components) { - PyQualifiedName qName = new PyQualifiedName(components.size()); - qName.myComponents.addAll(components); - return qName; - } - - public static PyQualifiedName fromComponents(String... components) { - PyQualifiedName result = new PyQualifiedName(components.length); - Collections.addAll(result.myComponents, components); - return result; - } - - public PyQualifiedName append(String name) { - PyQualifiedName result = new PyQualifiedName(myComponents.size()+1); - result.myComponents.addAll(myComponents); - result.myComponents.add(name); - return result; - } - - public PyQualifiedName append(PyQualifiedName qName) { - PyQualifiedName result = new PyQualifiedName(myComponents.size()+qName.getComponentCount()); - result.myComponents.addAll(myComponents); - result.myComponents.addAll(qName.getComponents()); - return result; - } - - @NotNull - public PyQualifiedName removeLastComponent() { - return removeTail(1); - } - - @NotNull - public PyQualifiedName removeTail(int count) { - int size = myComponents.size(); - PyQualifiedName result = new PyQualifiedName(size); - result.myComponents.addAll(myComponents); - for (int i = 0; i < count && result.myComponents.size() > 0; i++) { - result.myComponents.remove(result.myComponents.size()-1); - } - return result; - } - - @NotNull - public PyQualifiedName removeHead(int count) { - int size = myComponents.size(); - PyQualifiedName result = new PyQualifiedName(size); - result.myComponents.addAll(myComponents); - for (int i = 0; i < count && result.myComponents.size() > 0; i++) { - result.myComponents.remove(0); - } - return result; - } - - @NotNull - public List getComponents() { - return myComponents; - } - - public int getComponentCount() { - return myComponents.size(); - } - - public boolean matches(String... components) { - if (myComponents.size() != components.length) { - return false; - } - for (int i = 0; i < myComponents.size(); i++) { - if (!myComponents.get(i).equals(components[i])) { - return false; - } - } - return true; - } - - public boolean matchesPrefix(PyQualifiedName prefix) { - if (getComponentCount() < prefix.getComponentCount()) { - return false; - } - for (int i = 0; i < prefix.getComponentCount(); i++) { - final String component = getComponents().get(i); - if (component == null || !component.equals(prefix.getComponents().get(i))) { - return false; - } - } - return true; - } - - public boolean endsWith(@NotNull String suffix) { - return suffix.equals(getLastComponent()); - } - - public static void serialize(@Nullable PyQualifiedName qName, StubOutputStream dataStream) throws IOException { - if (qName == null) { - dataStream.writeVarInt(0); - } - else { - dataStream.writeVarInt(qName.getComponentCount()); - for (String s : qName.myComponents) { - dataStream.writeName(s); - } - } - } - - @Nullable - public static PyQualifiedName deserialize(StubInputStream dataStream) throws IOException { - PyQualifiedName qName; - int size = dataStream.readVarInt(); - if (size == 0) { - qName = null; - } - else { - qName = new PyQualifiedName(size); - for (int i = 0; i < size; i++) { - final StringRef name = dataStream.readName(); - qName.myComponents.add(name == null ? null : name.getString()); - } - } - return qName; - } - - @Nullable - public String getLastComponent() { - if (myComponents.size() == 0) { - return null; - } - return myComponents.get(myComponents.size()-1); - } - - @Override - public String toString() { - return join("."); - } - - public String join(final String separator) { - return StringUtil.join(myComponents, separator); - } - - public static PyQualifiedName fromDottedString(@NotNull String refName) { - return fromComponents(refName.split("\\.")); - } - - @Nullable - public static PyQualifiedName fromExpression(PyExpression expr) { - return expr instanceof PyReferenceExpression ? ((PyReferenceExpression) expr).asQualifiedName() : null; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PyQualifiedName that = (PyQualifiedName)o; - return myComponents.equals(that.myComponents); - } - - @Override - public int hashCode() { - return myComponents.hashCode(); - } -} diff --git a/python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedNameFactory.java b/python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedNameFactory.java new file mode 100644 index 000000000000..da39e3bb9f95 --- /dev/null +++ b/python/psi-api/src/com/jetbrains/python/psi/impl/PyQualifiedNameFactory.java @@ -0,0 +1,33 @@ +package com.jetbrains.python.psi.impl; + +import com.intellij.psi.util.QualifiedName; +import com.jetbrains.python.psi.PyExpression; +import com.jetbrains.python.psi.PyQualifiedExpression; +import com.jetbrains.python.psi.PyReferenceExpression; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author yole + */ +public class PyQualifiedNameFactory { + @Nullable + public static QualifiedName fromReferenceChain(List components) { + List componentNames = new ArrayList(components.size()); + for (PyExpression component : components) { + final String refName = (component instanceof PyQualifiedExpression) ? ((PyQualifiedExpression)component).getReferencedName() : null; + if (refName == null) { + return null; + } + componentNames.add(refName); + } + return QualifiedName.fromComponents(componentNames); + } + + @Nullable + public static QualifiedName fromExpression(PyExpression expr) { + return expr instanceof PyReferenceExpression ? ((PyReferenceExpression) expr).asQualifiedName() : null; + } +} diff --git a/python/psi-api/src/com/jetbrains/python/psi/impl/stubs/CustomTargetExpressionStub.java b/python/psi-api/src/com/jetbrains/python/psi/impl/stubs/CustomTargetExpressionStub.java index c54cfa2ed155..324e91f6baa2 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/impl/stubs/CustomTargetExpressionStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/impl/stubs/CustomTargetExpressionStub.java @@ -1,7 +1,7 @@ package com.jetbrains.python.psi.impl.stubs; import com.intellij.psi.stubs.StubOutputStream; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -16,5 +16,5 @@ public interface CustomTargetExpressionStub { void serialize(StubOutputStream stream) throws IOException; @Nullable - PyQualifiedName getCalleeName(); + QualifiedName getCalleeName(); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/resolve/PyCanonicalPathProvider.java b/python/psi-api/src/com/jetbrains/python/psi/resolve/PyCanonicalPathProvider.java index 14be29b39f85..73bae167e79b 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/resolve/PyCanonicalPathProvider.java +++ b/python/psi-api/src/com/jetbrains/python/psi/resolve/PyCanonicalPathProvider.java @@ -2,7 +2,7 @@ package com.jetbrains.python.psi.resolve; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.psi.PsiElement; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,5 +22,5 @@ public interface PyCanonicalPathProvider { * @return the qualified name to use in the import statement, or null if no replacement is necessary. */ @Nullable - PyQualifiedName getCanonicalPath(@NotNull PyQualifiedName qName, @Nullable PsiElement foothold); + QualifiedName getCanonicalPath(@NotNull QualifiedName qName, @Nullable PsiElement foothold); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java index 5a8fb8380172..54166b1ec57d 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java @@ -5,12 +5,12 @@ package com.jetbrains.python.psi.stubs; import com.intellij.psi.stubs.NamedStub; import com.jetbrains.python.psi.PyClass; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import java.util.List; public interface PyClassStub extends NamedStub { - PyQualifiedName[] getSuperClasses(); + QualifiedName[] getSuperClasses(); List getSlots(); String getDocString(); } \ No newline at end of file diff --git a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyDecoratorStub.java b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyDecoratorStub.java index 20a56a3b6a11..ccafd4b67d55 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyDecoratorStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyDecoratorStub.java @@ -2,7 +2,7 @@ package com.jetbrains.python.psi.stubs; import com.intellij.psi.stubs.StubElement; import com.jetbrains.python.psi.PyDecorator; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; /** * Created by IntelliJ IDEA. @@ -14,7 +14,7 @@ public interface PyDecoratorStub extends StubElement { /** * @return name of the decorator after the "@". */ - PyQualifiedName getQualifiedName(); + QualifiedName getQualifiedName(); //PyFunction getTarget(); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyFromImportStatementStub.java b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyFromImportStatementStub.java index e14e7d3e858a..d1ba6da7b18e 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyFromImportStatementStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyFromImportStatementStub.java @@ -2,7 +2,7 @@ package com.jetbrains.python.psi.stubs; import com.intellij.psi.stubs.StubElement; import com.jetbrains.python.psi.PyFromImportStatement; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.Nullable; /** @@ -10,7 +10,7 @@ import org.jetbrains.annotations.Nullable; */ public interface PyFromImportStatementStub extends StubElement { @Nullable - PyQualifiedName getImportSourceQName(); + QualifiedName getImportSourceQName(); boolean isStarImport(); int getRelativeLevel(); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyImportElementStub.java b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyImportElementStub.java index fc6e0068dedc..050eb453d720 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyImportElementStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyImportElementStub.java @@ -2,7 +2,7 @@ package com.jetbrains.python.psi.stubs; import com.intellij.psi.stubs.StubElement; import com.jetbrains.python.psi.PyImportElement; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.Nullable; /** @@ -10,7 +10,7 @@ import org.jetbrains.annotations.Nullable; */ public interface PyImportElementStub extends StubElement { @Nullable - PyQualifiedName getImportedQName(); + QualifiedName getImportedQName(); String getAsName(); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyTargetExpressionStub.java b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyTargetExpressionStub.java index 7ec0c2e7788e..e2b40791825c 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyTargetExpressionStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyTargetExpressionStub.java @@ -2,7 +2,7 @@ package com.jetbrains.python.psi.stubs; import com.intellij.psi.stubs.NamedStub; import com.jetbrains.python.psi.PyTargetExpression; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.stubs.CustomTargetExpressionStub; import org.jetbrains.annotations.Nullable; @@ -39,7 +39,7 @@ public interface PyTargetExpressionStub extends NamedStub { InitializerType getInitializerType(); @Nullable - PyQualifiedName getInitializer(); + QualifiedName getInitializer(); boolean isQualified(); diff --git a/python/src/com/jetbrains/numpy/documentation/NumPyDocString.java b/python/src/com/jetbrains/numpy/documentation/NumPyDocString.java index ea811a6afc6a..a7abd0029ab9 100644 --- a/python/src/com/jetbrains/numpy/documentation/NumPyDocString.java +++ b/python/src/com/jetbrains/numpy/documentation/NumPyDocString.java @@ -22,7 +22,7 @@ import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.PyFunction; import com.jetbrains.python.psi.PyPsiFacade; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -94,7 +94,7 @@ public class NumPyDocString { */ @Nullable private static PyFunction resolveRedirectToFunction(@NotNull String redirect, @NotNull PsiElement reference) { - final PyQualifiedName qualifiedName = PyQualifiedName.fromDottedString(redirect); + final QualifiedName qualifiedName = QualifiedName.fromDottedString(redirect); final String functionName = qualifiedName.getLastComponent(); final PyPsiFacade facade = PyPsiFacade.getInstance(reference.getProject()); final List items = facade.qualifiedNameResolver(qualifiedName.removeLastComponent()).fromElement(reference).resultsAsList(); diff --git a/python/src/com/jetbrains/pyqt/PyQtTypeProvider.java b/python/src/com/jetbrains/pyqt/PyQtTypeProvider.java index 10a94ee34856..e0117aab984a 100644 --- a/python/src/com/jetbrains/pyqt/PyQtTypeProvider.java +++ b/python/src/com/jetbrains/pyqt/PyQtTypeProvider.java @@ -5,7 +5,7 @@ import com.jetbrains.python.psi.Callable; import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyFunction; import com.jetbrains.python.psi.PyQualifiedExpression; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.stubs.PyClassNameIndex; import com.jetbrains.python.psi.types.PyClassTypeImpl; import com.jetbrains.python.psi.types.PyType; @@ -28,7 +28,7 @@ public class PyQtTypeProvider extends PyTypeProviderBase { if (containingClass != null && ourQt4Signal.equals(containingClass.getName())) { final String classQName = containingClass.getQualifiedName(); if (classQName != null) { - final PyQualifiedName name = PyQualifiedName.fromDottedString(classQName); + final QualifiedName name = QualifiedName.fromDottedString(classQName); final String qtVersion = name.getComponents().get(0); final PyClass aClass = PyClassNameIndex.findClass(qtVersion + "." + ourQtBoundSignal, function.getProject()); if (aClass != null) @@ -45,7 +45,7 @@ public class PyQtTypeProvider extends PyTypeProviderBase { if (callable instanceof PyFunction) { final String qualifiedName = callable.getQualifiedName(); if (qualifiedName != null && qualifiedName.startsWith("PyQt")){ - final PyQualifiedName name = PyQualifiedName.fromDottedString(qualifiedName); + final QualifiedName name = QualifiedName.fromDottedString(qualifiedName); final String qtVersion = name.getComponents().get(0); final String docstring = ((PyFunction)callable).getDocStringValue(); if (docstring != null && docstring.contains("[signal]")) { diff --git a/python/src/com/jetbrains/python/codeInsight/controlflow/InstructionBuilder.java b/python/src/com/jetbrains/python/codeInsight/controlflow/InstructionBuilder.java index 0983aa0b1a25..b3915260bc48 100644 --- a/python/src/com/jetbrains/python/codeInsight/controlflow/InstructionBuilder.java +++ b/python/src/com/jetbrains/python/codeInsight/controlflow/InstructionBuilder.java @@ -4,7 +4,7 @@ import com.google.common.collect.Lists; import com.intellij.codeInsight.controlflow.ControlFlowBuilder; import com.intellij.codeInsight.controlflow.Instruction; import com.jetbrains.python.psi.PyReferenceExpression; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import java.util.List; @@ -19,7 +19,7 @@ public class InstructionBuilder { List result = Lists.newArrayList(); for (PyTypeAssertionEvaluator.Assertion def: assertions) { final PyReferenceExpression e = def.getElement(); - final PyQualifiedName qname = e.asQualifiedName(); + final QualifiedName qname = e.asQualifiedName(); final String name = qname != null ? qname.toString() : e.getName(); result.add(ReadWriteInstruction.assertType(builder, e, name, def.getTypeEvalFunction())); } diff --git a/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java b/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java index db8df782ac60..03a790570843 100644 --- a/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java +++ b/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java @@ -12,7 +12,7 @@ import com.intellij.util.IncorrectOperationException; import com.jetbrains.python.codeInsight.PyCodeInsightSettings; import com.jetbrains.python.documentation.DocStringUtil; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; import com.jetbrains.python.sdk.PythonSdkType; import org.jetbrains.annotations.NotNull; @@ -84,7 +84,7 @@ public class AddImportHelper { } private static boolean shouldInsertBefore(PsiFile file, PyImportStatementBase relativeTo, String nameToImport, ImportPriority priority) { - PyQualifiedName relativeToName; + QualifiedName relativeToName; PsiElement source; if (relativeTo instanceof PyFromImportStatement) { final PyFromImportStatement fromImportStatement = (PyFromImportStatement)relativeTo; @@ -145,7 +145,7 @@ public class AddImportHelper { } List existingImports = ((PyFile)file).getImportTargets(); for (PyImportElement element : existingImports) { - final PyQualifiedName qName = element.getImportedQName(); + final QualifiedName qName = element.getImportedQName(); if (qName != null && name.equals(qName.toString())) { if ((asName != null && asName.equals(element.getAsName())) || asName == null) { return false; @@ -205,7 +205,7 @@ public class AddImportHelper { if (existingImport.isStarImport()) { continue; } - final PyQualifiedName qName = existingImport.getImportSourceQName(); + final QualifiedName qName = existingImport.getImportSourceQName(); if (qName != null && qName.toString().equals(path)) { for (PyImportElement el : existingImport.getImportElements()) { if (name.equals(el.getVisibleName())) { @@ -226,14 +226,14 @@ public class AddImportHelper { final boolean useQualified = !PyCodeInsightSettings.getInstance().PREFER_FROM_IMPORT; final PsiFileSystemItem toImport = target instanceof PsiFileSystemItem ? ((PsiFileSystemItem)target).getParent() : target.getContainingFile(); final ImportPriority priority = getImportPriority(file, toImport); - final PyQualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(target, element); + final QualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(target, element); if (qName == null) return; String path = qName.toString(); if (target instanceof PsiFileSystemItem && qName.getComponentCount() == 1) { addImportStatement(file, path, null, priority); } else { - final PyQualifiedName toImportQName = QualifiedNameFinder.findCanonicalImportPath(toImport, element); + final QualifiedName toImportQName = QualifiedNameFinder.findCanonicalImportPath(toImport, element); if (useQualified) { addImportStatement(file, path, null, priority); final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(file.getProject()); diff --git a/python/src/com/jetbrains/python/codeInsight/imports/AutoImportQuickFix.java b/python/src/com/jetbrains/python/codeInsight/imports/AutoImportQuickFix.java index 81d670d06279..58ef021cb57b 100644 --- a/python/src/com/jetbrains/python/codeInsight/imports/AutoImportQuickFix.java +++ b/python/src/com/jetbrains/python/codeInsight/imports/AutoImportQuickFix.java @@ -21,7 +21,7 @@ import com.jetbrains.python.psi.PyElement; import com.jetbrains.python.psi.PyFunction; import com.jetbrains.python.psi.PyImportElement; import com.jetbrains.python.psi.PyQualifiedExpression; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -76,7 +76,7 @@ public class AutoImportQuickFix implements LocalQuickFix, HighPriorityAction { * @param file the file which is the source of the importable * @param path import path for the file, as a qualified name (a.b.c) */ - public void addImport(@NotNull PsiElement importable, @NotNull PsiFileSystemItem file, @Nullable PyQualifiedName path) { + public void addImport(@NotNull PsiElement importable, @NotNull PsiFileSystemItem file, @Nullable QualifiedName path) { myImports.add(new ImportCandidateHolder(importable, file, null, path)); } diff --git a/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java b/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java index 16e9c3666f93..d5d49fc7ed38 100644 --- a/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java +++ b/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java @@ -10,7 +10,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileSystemItem; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,7 +24,7 @@ class ImportCandidateHolder implements Comparable { private final PsiElement myImportable; private final PyImportElement myImportElement; private final PsiFileSystemItem myFile; - private final PyQualifiedName myPath; + private final QualifiedName myPath; /** * Creates new instance. @@ -35,7 +35,7 @@ class ImportCandidateHolder implements Comparable { */ public ImportCandidateHolder( @NotNull PsiElement importable, @NotNull PsiFileSystemItem file, - @Nullable PyImportElement importElement, @Nullable PyQualifiedName path + @Nullable PyImportElement importElement, @Nullable QualifiedName path ) { myFile = file; myImportable = importable; @@ -56,7 +56,7 @@ class ImportCandidateHolder implements Comparable { return myFile; } - public PyQualifiedName getPath() { + public QualifiedName getPath() { return myPath; } @@ -68,7 +68,7 @@ class ImportCandidateHolder implements Comparable { * @param source known ImportElement to import the name; its 'as' clause is used if present. * @return a properly qualified name. */ - public static String getQualifiedName(String name, PyQualifiedName importPath, PyImportElement source) { + public static String getQualifiedName(String name, QualifiedName importPath, PyImportElement source) { StringBuilder sb = new StringBuilder(); if (source != null) { PsiElement parent = source.getParent(); diff --git a/python/src/com/jetbrains/python/codeInsight/imports/PythonReferenceImporter.java b/python/src/com/jetbrains/python/codeInsight/imports/PythonReferenceImporter.java index 91dcce58886b..9f6c33d37041 100644 --- a/python/src/com/jetbrains/python/codeInsight/imports/PythonReferenceImporter.java +++ b/python/src/com/jetbrains/python/codeInsight/imports/PythonReferenceImporter.java @@ -25,7 +25,7 @@ import com.jetbrains.python.codeInsight.controlflow.ControlFlowCache; import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyFileImpl; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; import com.jetbrains.python.psi.search.PyProjectScopeBuilder; import com.jetbrains.python.psi.stubs.PyClassNameIndex; @@ -204,7 +204,7 @@ public class PythonReferenceImporter implements ReferenceImporter { if (isIndexableTopLevel(symbol)) { // we only want top-level symbols PsiFileSystemItem srcfile = symbol instanceof PsiFileSystemItem ? ((PsiFileSystemItem)symbol).getParent() : symbol.getContainingFile(); if (srcfile != null && isAcceptableForImport(node, existingImportFile, srcfile)) { - PyQualifiedName importPath = QualifiedNameFinder.findCanonicalImportPath(symbol, node); + QualifiedName importPath = QualifiedNameFinder.findCanonicalImportPath(symbol, node); if (symbol instanceof PsiFileSystemItem && importPath != null) { importPath = importPath.removeTail(1); } diff --git a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibCanonicalPathProvider.java b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibCanonicalPathProvider.java index 53ecd40b7f3b..06e85e514368 100644 --- a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibCanonicalPathProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibCanonicalPathProvider.java @@ -1,7 +1,7 @@ package com.jetbrains.python.codeInsight.stdlib; import com.intellij.psi.PsiElement; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.PyCanonicalPathProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,44 +15,44 @@ import java.util.List; public class PyStdlibCanonicalPathProvider implements PyCanonicalPathProvider { @Nullable @Override - public PyQualifiedName getCanonicalPath(@NotNull PyQualifiedName qName, PsiElement foothold) { + public QualifiedName getCanonicalPath(@NotNull QualifiedName qName, PsiElement foothold) { return restoreStdlibCanonicalPath(qName); } - public static PyQualifiedName restoreStdlibCanonicalPath(PyQualifiedName qName) { + public static QualifiedName restoreStdlibCanonicalPath(QualifiedName qName) { if (qName.getComponentCount() > 0) { final List components = qName.getComponents(); final String head = components.get(0); if (head.equals("_abcoll") || head.equals("_collections")) { components.set(0, "collections"); - return PyQualifiedName.fromComponents(components); + return QualifiedName.fromComponents(components); } else if (head.equals("posix") || head.equals("nt")) { components.set(0, "os"); - return PyQualifiedName.fromComponents(components); + return QualifiedName.fromComponents(components); } else if (head.equals("_functools")) { components.set(0, "functools"); - return PyQualifiedName.fromComponents(components); + return QualifiedName.fromComponents(components); } else if (head.equals("_struct")) { components.set(0, "struct"); - return PyQualifiedName.fromComponents(components); + return QualifiedName.fromComponents(components); } else if (head.equals("_io") || head.equals("_pyio") || head.equals("_fileio")) { components.set(0, "io"); - return PyQualifiedName.fromComponents(components); + return QualifiedName.fromComponents(components); } else if (head.equals("_datetime")) { components.set(0, "datetime"); - return PyQualifiedName.fromComponents(components); + return QualifiedName.fromComponents(components); } else if (head.equals("ntpath") || head.equals("posixpath") || head.equals("path")) { final List result = new ArrayList(); result.add("os"); components.set(0, "path"); result.addAll(components); - return PyQualifiedName.fromComponents(result); + return QualifiedName.fromComponents(result); } } return null; diff --git a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibDocumentationLinkProvider.java b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibDocumentationLinkProvider.java index 690e2ba971ed..565460d3a7e8 100644 --- a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibDocumentationLinkProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibDocumentationLinkProvider.java @@ -14,7 +14,7 @@ import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.PyFunction; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; import com.jetbrains.python.sdk.PythonSdkType; @@ -537,7 +537,7 @@ public class PyStdlibDocumentationLinkProvider implements PythonDocumentationLin Sdk sdk = PyBuiltinCache.findSdkForFile(file); VirtualFile vFile = file.getVirtualFile(); if (vFile != null && sdk != null && PythonSdkType.isStdLib(vFile, sdk)) { - PyQualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, originalElement); + QualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, originalElement); return getStdlibUrlFor(element, qName, sdk); } return null; @@ -563,7 +563,7 @@ public class PyStdlibDocumentationLinkProvider implements PythonDocumentationLin return urlBuilder.toString(); } - private String getStdlibUrlFor(PsiElement element, PyQualifiedName moduleName, Sdk sdk) { + private String getStdlibUrlFor(PsiElement element, QualifiedName moduleName, Sdk sdk) { StringBuilder urlBuilder = new StringBuilder(getExternalDocumentationRoot(sdk)); String qnameString = moduleName.toString(); if (qnameString.equals("ntpath") || qnameString.equals("posixpath")) { diff --git a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java index 94e05074b9ab..478919c27689 100644 --- a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java @@ -5,7 +5,7 @@ import com.intellij.psi.PsiElement; import com.jetbrains.python.codeInsight.PyDynamicMember; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.ResolveImportUtil; import com.jetbrains.python.psi.types.PyModuleMembersProvider; @@ -29,7 +29,7 @@ public class PyStdlibModuleMembersProvider extends PyModuleMembersProvider { osError = builtinCache.getByName("OSError"); final String pathModuleName = SystemInfo.isWindows ? "ntpath" : "posixpath"; - path = ResolveImportUtil.resolveModuleInRoots(PyQualifiedName.fromDottedString(pathModuleName), module); + path = ResolveImportUtil.resolveModuleInRoots(QualifiedName.fromDottedString(pathModuleName), module); } results.add(new PyDynamicMember("error", osError)); results.add(new PyDynamicMember("path", path)); diff --git a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibTypeProvider.java b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibTypeProvider.java index 375124d3db71..291d3596a782 100644 --- a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibTypeProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibTypeProvider.java @@ -11,7 +11,7 @@ import com.jetbrains.python.documentation.DocStringUtil; import com.jetbrains.python.psi.StructuredDocString; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.PyTypeProvider; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; @@ -50,7 +50,7 @@ public class PyStdlibTypeProvider extends PyTypeProviderBase { public PyType getReferenceType(@NotNull PsiElement referenceTarget, @NotNull TypeEvalContext context, @Nullable PsiElement anchor) { if (referenceTarget instanceof PyTargetExpression) { final PyTargetExpression target = (PyTargetExpression)referenceTarget; - final PyQualifiedName calleeName = target.getCalleeName(); + final QualifiedName calleeName = target.getCalleeName(); if (calleeName != null && PyNames.NAMEDTUPLE.equals(calleeName.toString())) { // TODO: Create stubs for namedtuple for preventing switch from stub to AST final PyExpression value = target.findAssignedValue(); @@ -98,9 +98,10 @@ public class PyStdlibTypeProvider extends PyTypeProviderBase { public PyType getConstructorType(@NotNull PyClass cls, @NotNull TypeEvalContext context) { final String classQName = cls.getQualifiedName(); if (classQName != null) { - final PyQualifiedName canonicalQName = PyStdlibCanonicalPathProvider.restoreStdlibCanonicalPath(PyQualifiedName.fromDottedString(classQName)); + final QualifiedName + canonicalQName = PyStdlibCanonicalPathProvider.restoreStdlibCanonicalPath(QualifiedName.fromDottedString(classQName)); if (canonicalQName != null) { - final PyQualifiedName qname = canonicalQName.append(PyNames.INIT); + final QualifiedName qname = canonicalQName.append(PyNames.INIT); return getReturnTypeByQName(qname.toString(), cls, context); } } @@ -248,7 +249,7 @@ public class PyStdlibTypeProvider extends PyTypeProviderBase { module, c != null ? c.getName() + "." : "", result); - final PyQualifiedName qname = PyStdlibCanonicalPathProvider.restoreStdlibCanonicalPath(PyQualifiedName.fromDottedString(result)); + final QualifiedName qname = PyStdlibCanonicalPathProvider.restoreStdlibCanonicalPath(QualifiedName.fromDottedString(result)); if (qname != null) { return qname.toString(); } diff --git a/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsUtil.java b/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsUtil.java index 4a59ac3f2598..1ec4753dbbeb 100644 --- a/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsUtil.java +++ b/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsUtil.java @@ -18,7 +18,7 @@ import com.jetbrains.python.PythonHelpersLocator; import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.*; import com.jetbrains.python.psi.types.PyClassLikeType; import com.jetbrains.python.psi.types.PyType; @@ -84,7 +84,7 @@ public class PyUserSkeletonsUtil { if (sdk != null) { final Project project = foothold.getProject(); final PythonSdkPathCache cache = PythonSdkPathCache.getInstance(project, sdk); - final PyQualifiedName cacheQName = PyQualifiedName.fromDottedString(USER_SKELETONS_DIR + "." + qName); + final QualifiedName cacheQName = QualifiedName.fromDottedString(USER_SKELETONS_DIR + "." + qName); final List results = cache.get(cacheQName); if (results != null) { final PsiElement element = results.isEmpty() ? null : results.get(0); @@ -151,9 +151,9 @@ public class PyUserSkeletonsUtil { if (moduleVirtualFile != null) { String moduleName = QualifiedNameFinder.findShortestImportableName(file, moduleVirtualFile); if (moduleName != null) { - final PyQualifiedName qName = PyQualifiedName.fromDottedString(moduleName); + final QualifiedName qName = QualifiedName.fromDottedString(moduleName); for (PyCanonicalPathProvider provider : Extensions.getExtensions(PyCanonicalPathProvider.EP_NAME)) { - final PyQualifiedName restored = provider.getCanonicalPath(qName, null); + final QualifiedName restored = provider.getCanonicalPath(qName, null); if (restored != null) { moduleName = restored.toString(); } diff --git a/python/src/com/jetbrains/python/documentation/DocStringTypeReference.java b/python/src/com/jetbrains/python/documentation/DocStringTypeReference.java index 252e8800e108..800d22d8d806 100644 --- a/python/src/com/jetbrains/python/documentation/DocStringTypeReference.java +++ b/python/src/com/jetbrains/python/documentation/DocStringTypeReference.java @@ -7,7 +7,7 @@ import com.intellij.psi.*; import com.intellij.util.IncorrectOperationException; import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.ResolveResultList; import com.jetbrains.python.psi.resolve.ImportedResolveResult; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; @@ -45,7 +45,7 @@ public class DocStringTypeReference extends PsiPolyVariantReferenceBase manipulator = ElementManipulators.getManipulator(e); diff --git a/python/src/com/jetbrains/python/documentation/PythonDocumentationMap.java b/python/src/com/jetbrains/python/documentation/PythonDocumentationMap.java index 68985646a5d4..a734230fd779 100644 --- a/python/src/com/jetbrains/python/documentation/PythonDocumentationMap.java +++ b/python/src/com/jetbrains/python/documentation/PythonDocumentationMap.java @@ -7,7 +7,7 @@ import com.intellij.psi.PsiNamedElement; import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyFunction; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -141,9 +141,9 @@ public class PythonDocumentationMap implements PersistentStateComponent macros = new HashMap(); macros.put("element.name", element == null ? null : element.getName()); diff --git a/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java b/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java index 66f44a2d62a6..bcdfdae496e4 100644 --- a/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java +++ b/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java @@ -29,7 +29,7 @@ import com.jetbrains.python.debugger.PySignatureCacheManager; import com.jetbrains.python.debugger.PySignatureUtil; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; import com.jetbrains.python.psi.types.*; import com.jetbrains.python.toolbox.ChainIterable; @@ -360,7 +360,7 @@ public class PythonDocumentationProvider extends AbstractDocumentationProvider i if (sdk == null) { return null; } - PyQualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, originalElement); + QualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, originalElement); if (qName == null) { return null; } @@ -450,7 +450,7 @@ public class PythonDocumentationProvider extends AbstractDocumentationProvider i final Project project = element.getProject(); final VirtualFile vFile = containingFile.getVirtualFile(); if (vFile != null && ProjectRootManager.getInstance(project).getFileIndex().isInLibraryClasses(vFile)) { - final PyQualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, element); + final QualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, element); if (qName != null && qName.getComponentCount() > 0) { return true; } @@ -462,7 +462,7 @@ public class PythonDocumentationProvider extends AbstractDocumentationProvider i @Override public void promptToConfigureDocumentation(PsiElement element) { final Project project = element.getProject(); - final PyQualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, element); + final QualifiedName qName = QualifiedNameFinder.findCanonicalImportPath(element, element); if (qName != null && qName.getComponentCount() > 0) { ApplicationManager.getApplication().invokeLater(new Runnable() { @Override diff --git a/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java b/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java index 1a36e70b9653..1cf89b596ee8 100644 --- a/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java @@ -20,7 +20,7 @@ import com.jetbrains.python.PyBundle; import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.types.PyClassType; import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.PyTypeChecker; @@ -225,7 +225,7 @@ public class PyCompatibilityInspection extends PyInspection { for (int i = 0; i != myVersionsToProcess.size(); ++i) { LanguageLevel languageLevel = myVersionsToProcess.get(i); - final PyQualifiedName qName = importElement.getImportedQName(); + final QualifiedName qName = importElement.getImportedQName(); if (qName != null && !qName.matches("builtins") && !qName.matches("__builtin__")) { moduleName = qName.toString(); if (UnsupportedFeaturesUtil.MODULES.get(languageLevel).contains(moduleName)) { @@ -242,7 +242,7 @@ public class PyCompatibilityInspection extends PyInspection { if (node.getRelativeLevel() > 0) return; int len = 0; StringBuilder message = new StringBuilder("Python version "); - PyQualifiedName name = node.getImportSourceQName(); + QualifiedName name = node.getImportSourceQName(); PyReferenceExpression source = node.getImportSource(); if (name != null) { for (int i = 0; i != myVersionsToProcess.size(); ++i) { diff --git a/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java b/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java index a18fa7b837b8..4f8f83476aed 100644 --- a/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java @@ -14,7 +14,7 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.inspections.quickfix.AddSelfQuickFix; import com.jetbrains.python.inspections.quickfix.RenameParameterQuickFix; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.ResolveImportUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; @@ -58,7 +58,7 @@ public class PyMethodParametersInspection extends PyInspection { synchronized (this) { // other threads would wait as long in resolveInRoots() anyway if (myPossibleZopeRef == null) { myPossibleZopeRef = new Ref(); - ret = ResolveImportUtil.resolveModuleInRoots(PyQualifiedName.fromComponents("zope.interface.Interface"), foothold); + ret = ResolveImportUtil.resolveModuleInRoots(QualifiedName.fromComponents("zope.interface.Interface"), foothold); myPossibleZopeRef.set(ret); // null is OK } else ret = myPossibleZopeRef.get(); diff --git a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java index b42ca725771f..9cff1f645f5b 100644 --- a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java @@ -9,7 +9,7 @@ import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.containers.hash.HashMap; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.search.PySuperMethodsSearch; import com.jetbrains.python.psi.types.PyModuleType; import com.jetbrains.python.psi.types.PyType; @@ -109,7 +109,7 @@ public class PyPep8NamingInspection extends PyInspection { @Override public void visitPyImportElement(PyImportElement node) { final String asName = node.getAsName(); - final PyQualifiedName importedQName = node.getImportedQName(); + final QualifiedName importedQName = node.getImportedQName(); if (importedQName == null) return; final String name = importedQName.toString(); diff --git a/python/src/com/jetbrains/python/inspections/PyPropertyDefinitionInspection.java b/python/src/com/jetbrains/python/inspections/PyPropertyDefinitionInspection.java index a6d5c9088e67..58c2bbbf3af7 100644 --- a/python/src/com/jetbrains/python/inspections/PyPropertyDefinitionInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPropertyDefinitionInspection.java @@ -18,7 +18,7 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.inspections.quickfix.RenameParameterQuickFix; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.types.PyClassType; import com.jetbrains.python.psi.types.PyNoneType; import com.jetbrains.python.psi.types.PyType; @@ -190,7 +190,7 @@ public class PyPropertyDefinitionInspection extends PyInspection { if (decos != null) { String name = node.getName(); for (PyDecorator deco : decos.getDecorators()) { - final PyQualifiedName q_name = deco.getQualifiedName(); + final QualifiedName q_name = deco.getQualifiedName(); if (q_name != null) { List name_parts = q_name.getComponents(); if (name_parts.size() == 2) { diff --git a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java index 94613ee403cb..3478a3556ac9 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java @@ -36,7 +36,7 @@ import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.impl.PyImportStatementNavigator; import com.jetbrains.python.psi.impl.PyImportedModule; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.references.PyImportReference; import com.jetbrains.python.psi.impl.references.PyOperatorReference; import com.jetbrains.python.psi.resolve.ImportedResolveResult; @@ -402,7 +402,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { return; } - final PyQualifiedName canonicalQName = getCanonicalName(reference, myTypeEvalContext); + final QualifiedName canonicalQName = getCanonicalName(reference, myTypeEvalContext); final String canonicalName = canonicalQName != null ? canonicalQName.toString() : null; if (canonicalName != null) { for (String ignored : myIgnoredIdentifiers) { @@ -557,7 +557,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { } if (reference instanceof PyImportReference && refname != null) { // TODO: Ignore references in the second part of the 'from ... import ...' expression - final PyQualifiedName qname = PyQualifiedName.fromDottedString(refname); + final QualifiedName qname = QualifiedName.fromDottedString(refname); final List components = qname.getComponents(); if (!components.isEmpty()) { final String packageName = components.get(0); @@ -581,7 +581,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { * Return the canonical qualified name for a reference (even for an unresolved one). */ @Nullable - private static PyQualifiedName getCanonicalName(@NotNull PsiReference reference, @NotNull TypeEvalContext context) { + private static QualifiedName getCanonicalName(@NotNull PsiReference reference, @NotNull TypeEvalContext context) { final PsiElement element = reference.getElement(); if (reference instanceof PyOperatorReference && element instanceof PyQualifiedExpression) { final PyExpression receiver = ((PyOperatorReference)reference).getReceiver(); @@ -590,7 +590,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { if (type instanceof PyClassType) { final String name = ((PyClassType)type).getClassQName(); if (name != null) { - return PyQualifiedName.fromDottedString(name).append(((PyQualifiedExpression)element).getReferencedName()); + return QualifiedName.fromDottedString(name).append(((PyQualifiedExpression)element).getReferencedName()); } } } @@ -605,12 +605,12 @@ public class PyUnresolvedReferencesInspection extends PyInspection { if (type instanceof PyClassType) { final String name = ((PyClassType)type).getClassQName(); if (name != null) { - return PyQualifiedName.fromDottedString(name).append(exprName); + return QualifiedName.fromDottedString(name).append(exprName); } } else if (type instanceof PyModuleType) { final PyFile file = ((PyModuleType)type).getModule(); - final PyQualifiedName name = QualifiedNameFinder.findCanonicalImportPath(file, element); + final QualifiedName name = QualifiedNameFinder.findCanonicalImportPath(file, element); if (name != null) { return name.append(exprName); } @@ -621,12 +621,12 @@ public class PyUnresolvedReferencesInspection extends PyInspection { if (parent instanceof PyImportElement) { final PyImportStatementBase importStmt = PsiTreeUtil.getParentOfType(parent, PyImportStatementBase.class); if (importStmt instanceof PyImportStatement) { - return PyQualifiedName.fromComponents(exprName); + return QualifiedName.fromComponents(exprName); } else if (importStmt instanceof PyFromImportStatement) { final PsiElement resolved = ((PyFromImportStatement)importStmt).resolveImportSource(); if (resolved != null) { - final PyQualifiedName path = QualifiedNameFinder.findCanonicalImportPath(resolved, element); + final QualifiedName path = QualifiedNameFinder.findCanonicalImportPath(resolved, element); if (path != null) { return path.append(exprName); } @@ -634,7 +634,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { } } else { - final PyQualifiedName path = QualifiedNameFinder.findCanonicalImportPath(element, element); + final QualifiedName path = QualifiedNameFinder.findCanonicalImportPath(element, element); if (path != null) { return path.append(exprName); } @@ -643,7 +643,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { } } else if (reference instanceof DocStringParameterReference) { - return PyQualifiedName.fromDottedString(reference.getCanonicalText()); + return QualifiedName.fromDottedString(reference.getCanonicalText()); } return null; } @@ -914,7 +914,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { Set unusedStatements = new HashSet(); final PyUnresolvedReferencesInspection suppressableInspection = new PyUnresolvedReferencesInspection(); - PyQualifiedName packageQName = null; + QualifiedName packageQName = null; List dunderAll = null; for (NameDefiner unusedImport : unusedImports) { @@ -968,7 +968,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection { } } if (packageQName != null && importedElement instanceof PsiFileSystemItem) { - final PyQualifiedName importedQName = QualifiedNameFinder.findShortestImportableQName((PsiFileSystemItem)importedElement); + final QualifiedName importedQName = QualifiedNameFinder.findShortestImportableQName((PsiFileSystemItem)importedElement); if (importedQName != null && importedQName.matchesPrefix(packageQName)) { continue; } diff --git a/python/src/com/jetbrains/python/inspections/quickfix/AddIgnoredIdentifierQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/AddIgnoredIdentifierQuickFix.java index 3ae2e3c076aa..e643e54bc935 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/AddIgnoredIdentifierQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/AddIgnoredIdentifierQuickFix.java @@ -7,7 +7,7 @@ import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.PsiElement; import com.intellij.util.Consumer; import com.jetbrains.python.inspections.PyUnresolvedReferencesInspection; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; /** @@ -16,10 +16,10 @@ import org.jetbrains.annotations.NotNull; public class AddIgnoredIdentifierQuickFix implements LocalQuickFix, LowPriorityAction { public static final String END_WILDCARD = ".*"; - @NotNull private final PyQualifiedName myIdentifier; + @NotNull private final QualifiedName myIdentifier; private final boolean myIgnoreAllAttributes; - public AddIgnoredIdentifierQuickFix(@NotNull PyQualifiedName identifier, boolean ignoreAllAttributes) { + public AddIgnoredIdentifierQuickFix(@NotNull QualifiedName identifier, boolean ignoreAllAttributes) { myIdentifier = identifier; myIgnoreAllAttributes = ignoreAllAttributes; } diff --git a/python/src/com/jetbrains/python/inspections/quickfix/GenerateBinaryStubsFix.java b/python/src/com/jetbrains/python/inspections/quickfix/GenerateBinaryStubsFix.java index 254ac4824286..f8d557277df8 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/GenerateBinaryStubsFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/GenerateBinaryStubsFix.java @@ -22,7 +22,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.Consumer; import com.jetbrains.python.PythonHelpersLocator; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.references.PyImportReference; import com.jetbrains.python.sdk.InvalidSdkException; import com.jetbrains.python.sdk.PySdkUtil; @@ -60,7 +60,7 @@ public class GenerateBinaryStubsFix implements LocalQuickFix { final PyFromImportStatement importStatementBase = PsiTreeUtil.getParentOfType(element, PyFromImportStatement.class); if (importStatementBase != null) { - final PyQualifiedName qName = importStatementBase.getImportSourceQName(); + final QualifiedName qName = importStatementBase.getImportSourceQName(); if (qName != null) { return qName.append(elementText).toString(); } @@ -185,7 +185,7 @@ public class GenerateBinaryStubsFix implements LocalQuickFix { private static boolean isGtk(@NotNull final PsiReference ref) { final PyFromImportStatement importStatementBase = PsiTreeUtil.getParentOfType(ref.getElement(), PyFromImportStatement.class); if (importStatementBase != null) { - final PyQualifiedName qName = importStatementBase.getImportSourceQName(); + final QualifiedName qName = importStatementBase.getImportSourceQName(); if (qName != null && qName.matches("gi", "repository")) return true; } diff --git a/python/src/com/jetbrains/python/packaging/setupPy/SetupTaskIntrospector.java b/python/src/com/jetbrains/python/packaging/setupPy/SetupTaskIntrospector.java index 837b44854eb5..bd01388e1bce 100644 --- a/python/src/com/jetbrains/python/packaging/setupPy/SetupTaskIntrospector.java +++ b/python/src/com/jetbrains/python/packaging/setupPy/SetupTaskIntrospector.java @@ -12,7 +12,7 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.packaging.PyPackageUtil; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyPsiUtils; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.stubs.PyClassNameIndex; import org.jetbrains.annotations.Nullable; @@ -31,7 +31,7 @@ public class SetupTaskIntrospector { private static boolean usesSetuptools(PyFile file) { final List imports = file.getFromImports(); for (PyFromImportStatement anImport : imports) { - final PyQualifiedName qName = anImport.getImportSourceQName(); + final QualifiedName qName = anImport.getImportSourceQName(); if (qName != null && qName.matches("setuptools")) { return true; } @@ -39,7 +39,7 @@ public class SetupTaskIntrospector { final List importElements = file.getImportTargets(); for (PyImportElement element : importElements) { - final PyQualifiedName qName = element.getImportedQName(); + final QualifiedName qName = element.getImportedQName(); if (qName != null && qName.matches("setuptools")) { return true; } diff --git a/python/src/com/jetbrains/python/psi/PyUtil.java b/python/src/com/jetbrains/python/psi/PyUtil.java index 2f3d9b290363..07623d8a6b3c 100644 --- a/python/src/com/jetbrains/python/psi/PyUtil.java +++ b/python/src/com/jetbrains/python/psi/PyUtil.java @@ -44,7 +44,7 @@ import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.codeInsight.stdlib.PyNamedTupleType; import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.impl.PyPsiUtils; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.QualifiedResolveResult; import com.jetbrains.python.psi.types.*; @@ -670,7 +670,7 @@ public class PyUtil { return false; } for (PyDecorator decorator : decoratorList.getDecorators()) { - PyQualifiedName name = decorator.getQualifiedName(); + QualifiedName name = decorator.getQualifiedName(); if (name == null || (!PyNames.CLASSMETHOD.equals(name.toString()) && !PyNames.STATICMETHOD.equals(name.toString()))) { return true; } diff --git a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java index 89ea4d51e1d2..9c17a8327bd5 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java @@ -498,7 +498,7 @@ public class PyClassImpl extends PyPresentableElementImpl implement final PyDecoratorList decoratorList = method.getDecoratorList(); if (decoratorList != null) { for (PyDecorator deco : decoratorList.getDecorators()) { - final PyQualifiedName qname = deco.getQualifiedName(); + final QualifiedName qname = deco.getQualifiedName(); if (qname != null) { String decoName = qname.toString(); for (PyKnownDecoratorProvider provider : PyUtil.KnownDecoratorProviderHolder.KNOWN_DECORATOR_PROVIDERS) { @@ -982,7 +982,7 @@ public class PyClassImpl extends PyPresentableElementImpl implement if (containingFile instanceof PyFile) { final PsiElement element = ((PyFile)containingFile).getElementNamed(PyNames.DUNDER_METACLASS); if (element instanceof PyTargetExpression) { - final PyQualifiedName qName = ((PyTargetExpression)element).getAssignedQName(); + final QualifiedName qName = ((PyTargetExpression)element).getAssignedQName(); if (qName != null && qName.matches("type")) { return true; } @@ -1105,7 +1105,7 @@ public class PyClassImpl extends PyPresentableElementImpl implement final PsiElement parent = stub.getParentStub().getPsi(); if (parent instanceof PyFile) { final PyFile file = (PyFile)parent; - for (PyQualifiedName name : stub.getSuperClasses()) { + for (QualifiedName name : stub.getSuperClasses()) { result.add(name != null ? classTypeFromQName(name, file, context) : null); } } @@ -1182,7 +1182,7 @@ public class PyClassImpl extends PyPresentableElementImpl implement } @Nullable - private static PsiElement getElementQNamed(@NotNull NameDefiner nameDefiner, @NotNull PyQualifiedName qualifiedName) { + private static PsiElement getElementQNamed(@NotNull NameDefiner nameDefiner, @NotNull QualifiedName qualifiedName) { final int componentCount = qualifiedName.getComponentCount(); final String fullName = qualifiedName.toString(); if (componentCount == 0) { @@ -1197,7 +1197,7 @@ public class PyClassImpl extends PyPresentableElementImpl implement } else { final String name = qualifiedName.getLastComponent(); - final PyQualifiedName containingQName = qualifiedName.removeLastComponent(); + final QualifiedName containingQName = qualifiedName.removeLastComponent(); NameDefiner definer = nameDefiner; for (String component : containingQName.getComponents()) { PsiElement element = PyUtil.turnDirIntoInit(definer.getElementNamed(component)); @@ -1220,7 +1220,7 @@ public class PyClassImpl extends PyPresentableElementImpl implement } @Nullable - private static PyClassLikeType classTypeFromQName(@NotNull PyQualifiedName qualifiedName, @NotNull PyFile containingFile, + private static PyClassLikeType classTypeFromQName(@NotNull QualifiedName qualifiedName, @NotNull PyFile containingFile, @NotNull TypeEvalContext context) { final PsiElement element = getElementQNamed(containingFile, qualifiedName); if (element instanceof PyTypedElement) { diff --git a/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java b/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java index efa10ccd8128..fe6e8011258d 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java @@ -4,6 +4,7 @@ import com.intellij.extapi.psi.StubBasedPsiElementBase; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.intellij.util.IncorrectOperationException; import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.PyTokenTypes; @@ -38,7 +39,7 @@ public class PyDecoratorImpl extends StubBasedPsiElementBase im */ @Override public String getName() { - final PyQualifiedName qname = getQualifiedName(); + final QualifiedName qname = getQualifiedName(); return qname != null ? qname.getLastComponent() : null; } @@ -62,7 +63,7 @@ public class PyDecoratorImpl extends StubBasedPsiElementBase im return (arglist_node != null) && (arglist_node.findChildByType(PyTokenTypes.LPAR) != null); } - public PyQualifiedName getQualifiedName() { + public QualifiedName getQualifiedName() { final PyDecoratorStub stub = getStub(); if (stub != null) { return stub.getQualifiedName(); @@ -73,7 +74,7 @@ public class PyDecoratorImpl extends StubBasedPsiElementBase im List parts = PyResolveUtil.unwindQualifiers(node); if (parts != null) { //Collections.reverse(parts); - return PyQualifiedName.fromReferenceChain(parts); + return PyQualifiedNameFactory.fromReferenceChain(parts); } } return null; diff --git a/python/src/com/jetbrains/python/psi/impl/PyDecoratorListImpl.java b/python/src/com/jetbrains/python/psi/impl/PyDecoratorListImpl.java index c923ee3b0e2f..1271561ed4c8 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyDecoratorListImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyDecoratorListImpl.java @@ -1,6 +1,7 @@ package com.jetbrains.python.psi.impl; import com.intellij.lang.ASTNode; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.psi.PyDecorator; import com.jetbrains.python.psi.PyDecoratorList; @@ -37,7 +38,7 @@ public class PyDecoratorListImpl extends PyBaseElementImpl public PyDecorator findDecorator(String name) { final PyDecorator[] decorators = getDecorators(); for (PyDecorator decorator : decorators) { - final PyQualifiedName qName = decorator.getQualifiedName(); + final QualifiedName qName = decorator.getQualifiedName(); if (qName != null && name.equals(qName.toString())) { return decorator; } diff --git a/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java b/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java index d7b7582fe502..613f16cadc54 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java @@ -12,6 +12,7 @@ import com.intellij.psi.stubs.StubElement; import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiModificationTracker; +import com.intellij.psi.util.QualifiedName; import com.intellij.reference.SoftReference; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; @@ -457,7 +458,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression { } // http://stackoverflow.com/questions/6048786/from-module-import-in-init-py-makes-module-name-visible if (PyNames.INIT_DOT_PY.equals(getName())) { - final PyQualifiedName qName = statement.getImportSourceQName(); + final QualifiedName qName = statement.getImportSourceQName(); if (qName != null && qName.endsWith(name)) { final PsiElement element = PyUtil.turnInitIntoDir(statement.resolveImportSource()); if (element != null && element.getParent() == getContainingDirectory()) { @@ -474,7 +475,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression { if (result != null) { return result; } - final PyQualifiedName qName = importElement.getImportedQName(); + final QualifiedName qName = importElement.getImportedQName(); // http://stackoverflow.com/questions/6048786/from-module-import-in-init-py-makes-module-name-visible if (qName != null && qName.getComponentCount() > 1 && name.equals(qName.getLastComponent()) && PyNames.INIT_DOT_PY.equals(getName())) { final List elements = ResolveImportUtil.resolveNameInImportStatement(importElement, qName.removeLastComponent()); @@ -692,7 +693,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression { if (fromImport.isFromFuture()) { final PyImportElement[] pyImportElements = fromImport.getImportElements(); for (PyImportElement element : pyImportElements) { - final PyQualifiedName qName = element.getImportedQName(); + final QualifiedName qName = element.getImportedQName(); if (qName != null && qName.matches(feature.toString())) { return true; } diff --git a/python/src/com/jetbrains/python/psi/impl/PyFromImportStatementImpl.java b/python/src/com/jetbrains/python/psi/impl/PyFromImportStatementImpl.java index b43511d0d442..1e80796a3300 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyFromImportStatementImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyFromImportStatementImpl.java @@ -4,6 +4,7 @@ import com.intellij.lang.ASTNode; import com.intellij.psi.*; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.stubs.IStubElementType; +import com.intellij.psi.util.QualifiedName; import com.intellij.util.ArrayFactory; import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.PyNames; @@ -53,10 +54,10 @@ public class PyFromImportStatementImpl extends PyBaseElementImpl resolveImportSourceCandidates() { - final PyQualifiedName qName = getImportSourceQName(); + final QualifiedName qName = getImportSourceQName(); if (qName == null) { final int level = getRelativeLevel(); if (level > 0) { diff --git a/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java index 310641880a04..eec563317beb 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java @@ -15,6 +15,7 @@ import com.intellij.psi.stubs.StubElement; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.intellij.util.IncorrectOperationException; import com.intellij.util.PlatformIcons; import com.jetbrains.python.PyElementTypes; @@ -604,11 +605,11 @@ public class PyFunctionImpl extends PyPresentableElementImpl imp if (nextStub instanceof PyTargetExpressionStub) { final PyTargetExpressionStub targetExpressionStub = (PyTargetExpressionStub)nextStub; if (targetExpressionStub.getInitializerType() == PyTargetExpressionStub.InitializerType.CallExpression) { - final PyQualifiedName qualifiedName = targetExpressionStub.getInitializer(); - if (PyQualifiedName.fromComponents(PyNames.CLASSMETHOD).equals(qualifiedName)) { + final QualifiedName qualifiedName = targetExpressionStub.getInitializer(); + if (QualifiedName.fromComponents(PyNames.CLASSMETHOD).equals(qualifiedName)) { return CLASSMETHOD; } - if (PyQualifiedName.fromComponents(PyNames.STATICMETHOD).equals(qualifiedName)) { + if (QualifiedName.fromComponents(PyNames.STATICMETHOD).equals(qualifiedName)) { return STATICMETHOD; } } diff --git a/python/src/com/jetbrains/python/psi/impl/PyImportElementImpl.java b/python/src/com/jetbrains/python/psi/impl/PyImportElementImpl.java index 1954608ba123..795aaee57442 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyImportElementImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyImportElementImpl.java @@ -8,6 +8,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.intellij.util.containers.EmptyIterable; import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.PythonDialectsTokenSetProvider; @@ -46,7 +47,7 @@ public class PyImportElementImpl extends PyBaseElementImpl return node == null ? null : (PyReferenceExpression) node.getPsi(); } - public PyQualifiedName getImportedQName() { + public QualifiedName getImportedQName() { final PyImportElementStub stub = getStub(); if (stub != null) { return stub.getImportedQName(); @@ -77,7 +78,7 @@ public class PyImportElementImpl extends PyBaseElementImpl if (!StringUtil.isEmpty(asName)) { return asName; } - final PyQualifiedName importedName = stub.getImportedQName(); + final QualifiedName importedName = stub.getImportedQName(); if (importedName != null && importedName.getComponentCount() > 0) { return importedName.getComponents().get(0); } @@ -87,7 +88,7 @@ public class PyImportElementImpl extends PyBaseElementImpl if (asNameElement != null) { return asNameElement.getName(); } - final PyQualifiedName importedName = getImportedQName(); + final QualifiedName importedName = getImportedQName(); if (importedName != null && importedName.getComponentCount() > 0) { return importedName.getComponents().get(0); } @@ -193,13 +194,13 @@ public class PyImportElementImpl extends PyBaseElementImpl return resolveImportElement ? resolve() : this; } else { - final PyQualifiedName qName = getImportedQName(); + final QualifiedName qName = getImportedQName(); if (qName == null || qName.getComponentCount() == 0 || !qName.getComponents().get(0).equals(name)) { return null; } if (qName.getComponentCount() == 1) { if (resolveImportElement) { - return ResolveImportUtil.resolveImportElement(this, PyQualifiedName.fromComponents(name)); + return ResolveImportUtil.resolveImportElement(this, QualifiedName.fromComponents(name)); } return this; } @@ -210,7 +211,7 @@ public class PyImportElementImpl extends PyBaseElementImpl @Nullable @Override public PsiElement resolve() { - PyQualifiedName qName = getImportedQName(); + QualifiedName qName = getImportedQName(); return qName == null ? null : ResolveImportUtil.resolveImportElement(this, qName); } @@ -225,7 +226,7 @@ public class PyImportElementImpl extends PyBaseElementImpl @Override public String toString() { - final PyQualifiedName qName = getImportedQName(); + final QualifiedName qName = getImportedQName(); return String.format("%s:%s", super.toString(), qName != null ? qName : "null"); } @@ -233,7 +234,7 @@ public class PyImportElementImpl extends PyBaseElementImpl private PsiElement createImportedModule(String name) { final PsiFile file = getContainingFile(); if (file instanceof PyFile) { - return new PyImportedModule(this, (PyFile)file, PyQualifiedName.fromComponents(name)); + return new PyImportedModule(this, (PyFile)file, QualifiedName.fromComponents(name)); } return null; } diff --git a/python/src/com/jetbrains/python/psi/impl/PyImportedModule.java b/python/src/com/jetbrains/python/psi/impl/PyImportedModule.java index 38b8ade0769b..8fbc38326d06 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyImportedModule.java +++ b/python/src/com/jetbrains/python/psi/impl/PyImportedModule.java @@ -5,6 +5,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.impl.light.LightElement; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.PythonLanguage; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.resolve.ResolveImportUtil; @@ -19,9 +20,9 @@ import java.util.List; public class PyImportedModule extends LightElement implements NameDefiner { @Nullable private PyImportElement myImportElement; @NotNull private final PyFile myContainingFile; - @NotNull private final PyQualifiedName myImportedPrefix; + @NotNull private final QualifiedName myImportedPrefix; - public PyImportedModule(@Nullable PyImportElement importElement, @NotNull PyFile containingFile, @NotNull PyQualifiedName importedPrefix) { + public PyImportedModule(@Nullable PyImportElement importElement, @NotNull PyFile containingFile, @NotNull QualifiedName importedPrefix) { super(containingFile.getManager(), PythonLanguage.getInstance()); myImportElement = importElement; myContainingFile = containingFile; @@ -35,7 +36,7 @@ public class PyImportedModule extends LightElement implements NameDefiner { } @NotNull - public PyQualifiedName getImportedPrefix() { + public QualifiedName getImportedPrefix() { return myImportedPrefix; } @@ -45,9 +46,9 @@ public class PyImportedModule extends LightElement implements NameDefiner { } public PsiElement getElementNamed(String the_name) { - PyQualifiedName prefix = myImportedPrefix.append(the_name); + QualifiedName prefix = myImportedPrefix.append(the_name); if (myImportElement != null) { - final PyQualifiedName qName = myImportElement.getImportedQName(); + final QualifiedName qName = myImportElement.getImportedQName(); if (qName != null && qName.getComponentCount() == prefix.getComponentCount()) { return resolve(myImportElement, prefix); } @@ -62,14 +63,14 @@ public class PyImportedModule extends LightElement implements NameDefiner { } @Nullable - private PyImportElement findMatchingFromImport(PyQualifiedName prefix, String name) { + private PyImportElement findMatchingFromImport(QualifiedName prefix, String name) { final List fromImports = getContainingFile().getFromImports(); for (PyFromImportStatement fromImport : fromImports) { - final PyQualifiedName qName = fromImport.getImportSourceQName(); + final QualifiedName qName = fromImport.getImportSourceQName(); if (prefix.equals(qName)) { final PyImportElement[] importElements = fromImport.getImportElements(); for (PyImportElement importElement : importElements) { - final PyQualifiedName importedName = importElement.getImportedQName(); + final QualifiedName importedName = importElement.getImportedQName(); if (importedName != null && importedName.matches(name)) { return importElement; } @@ -133,7 +134,7 @@ public class PyImportedModule extends LightElement implements NameDefiner { } @Nullable - private static PsiElement resolve(PyImportElement importElement, @NotNull final PyQualifiedName prefix) { + private static PsiElement resolve(PyImportElement importElement, @NotNull final QualifiedName prefix) { final PsiElement resolved = ResolveImportUtil.resolveImportElement(importElement, prefix); final PsiElement packageInit = PyUtil.turnDirIntoInit(resolved); return packageInit != null ? packageInit : resolved; diff --git a/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java b/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java index 1faa83cf8681..bcc6821963e3 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java @@ -3,6 +3,7 @@ package com.jetbrains.python.psi.impl; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyPsiFacade; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; @@ -31,7 +32,7 @@ public class PyPsiFacadeImpl extends PyPsiFacade { } @Override - public QualifiedNameResolver qualifiedNameResolver(PyQualifiedName qualifiedName) { + public QualifiedNameResolver qualifiedNameResolver(QualifiedName qualifiedName) { return new QualifiedNameResolverImpl(qualifiedName); } diff --git a/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java index 63e2e1902feb..6428d82fb565 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java @@ -6,6 +6,7 @@ import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.Ref; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.PyNames; import com.jetbrains.python.PyTokenTypes; import com.jetbrains.python.PythonDialectsTokenSetProvider; @@ -156,8 +157,8 @@ public class PyReferenceExpressionImpl extends PyElementImpl implements PyRefere } @Nullable - public PyQualifiedName asQualifiedName() { - return PyQualifiedName.fromReferenceChain(PyResolveUtil.unwindQualifiers(this)); + public QualifiedName asQualifiedName() { + return PyQualifiedNameFactory.fromReferenceChain(PyResolveUtil.unwindQualifiers(this)); } @Override @@ -224,7 +225,7 @@ public class PyReferenceExpressionImpl extends PyElementImpl implements PyRefere next = qualifier instanceof PyQualifiedExpression ? ((PyQualifiedExpression)qualifier).getQualifier() : null; } final ScopeOwner scopeOwner = ScopeUtil.getScopeOwner(this); - final PyQualifiedName qname = asQualifiedName(); + final QualifiedName qname = asQualifiedName(); if (qname != null && scopeOwner != null) { return getTypeByControlFlow(qname.toString(), context, qualifier, scopeOwner); } @@ -335,7 +336,7 @@ public class PyReferenceExpressionImpl extends PyElementImpl implements PyRefere return PyBuiltinCache.getInstance(target).getObjectType(PyNames.PROPERTY); } for (PyDecorator decorator : decoratorList.getDecorators()) { - final PyQualifiedName qName = decorator.getQualifiedName(); + final QualifiedName qName = decorator.getQualifiedName(); if (qName != null && (qName.endsWith(PyNames.SETTER) || qName.endsWith(PyNames.DELETER) || qName.endsWith(PyNames.GETTER))) { return PyBuiltinCache.getInstance(target).getObjectType(PyNames.PROPERTY); diff --git a/python/src/com/jetbrains/python/psi/impl/PyTargetExpressionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyTargetExpressionImpl.java index 536442afe9d1..3a2db7862ea9 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyTargetExpressionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyTargetExpressionImpl.java @@ -10,6 +10,7 @@ import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.SearchScope; import com.intellij.psi.stubs.StubElement; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.PlatformIcons; @@ -477,7 +478,7 @@ public class PyTargetExpressionImpl extends PyPresentableElementImpl resolveInner() { - PyQualifiedName qName = myElement.asQualifiedName(); + QualifiedName qName = myElement.asQualifiedName(); return qName == null ? Collections.emptyList() : ResolveImportUtil.resolveNameInFromImport(myStatement, qName); diff --git a/python/src/com/jetbrains/python/psi/impl/references/PyImportReference.java b/python/src/com/jetbrains/python/psi/impl/references/PyImportReference.java index 934edbbdbcac..7a757e7e0c4d 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyImportReference.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyImportReference.java @@ -16,7 +16,7 @@ import com.intellij.util.ProcessingContext; import com.jetbrains.python.PyNames; import com.jetbrains.python.PyTokenTypes; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.PyReferenceExpressionImpl; import com.jetbrains.python.psi.resolve.*; import com.jetbrains.python.psi.types.PyModuleType; @@ -65,7 +65,7 @@ public class PyImportReference extends PyReferenceImpl { @Override protected List resolveInner() { final PyImportElement parent = PsiTreeUtil.getParentOfType(myElement, PyImportElement.class); //importRef.getParent(); - final PyQualifiedName qname = myElement.asQualifiedName(); + final QualifiedName qname = myElement.asQualifiedName(); return qname == null ? Collections.emptyList() : ResolveImportUtil.resolveNameInImportStatement(parent, qname); } @@ -228,7 +228,7 @@ public class PyImportReference extends PyReferenceImpl { if (myCurrentFile != null && (relativeLevel >= 0 || !ResolveImportUtil.isAbsoluteImportEnabledFor(myCurrentFile))) { final PsiDirectory containingDirectory = myCurrentFile.getContainingDirectory(); if (containingDirectory != null) { - PyQualifiedName thisQName = QualifiedNameFinder.findShortestImportableQName(containingDirectory); + QualifiedName thisQName = QualifiedNameFinder.findShortestImportableQName(containingDirectory); if (thisQName == null || thisQName.getComponentCount() == relativeLevel) { fillFromDir(ResolveImportUtil.stepBackFrom(myCurrentFile, relativeLevel), insertHandler); } @@ -240,13 +240,13 @@ public class PyImportReference extends PyReferenceImpl { } } if (relativeLevel == -1) { - fillFromQName(PyQualifiedName.fromComponents(), insertHandler); + fillFromQName(QualifiedName.fromComponents(), insertHandler); } return ArrayUtil.toObjectArray(myObjects); } - private void fillFromQName(PyQualifiedName thisQName, InsertHandler insertHandler) { + private void fillFromQName(QualifiedName thisQName, InsertHandler insertHandler) { QualifiedNameResolver visitor = new QualifiedNameResolverImpl(thisQName).fromElement(myCurrentFile); for (PsiDirectory dir : visitor.resultsOfType(PsiDirectory.class)) { fillFromDir(dir, insertHandler); diff --git a/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java b/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java index 8e860e05fcfd..93c42621e534 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java @@ -14,6 +14,7 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.stubs.StubUpdatingIndex; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.intellij.util.ArrayUtil; import com.intellij.util.PlatformIcons; import com.intellij.util.ProcessingContext; @@ -21,10 +22,7 @@ import com.intellij.util.indexing.FileBasedIndex; import com.jetbrains.python.PyNames; import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyImportedModule; -import com.jetbrains.python.psi.impl.PyQualifiedName; -import com.jetbrains.python.psi.impl.ResolveResultList; +import com.jetbrains.python.psi.impl.*; import com.jetbrains.python.psi.resolve.*; import com.jetbrains.python.psi.search.PyProjectScopeBuilder; import com.jetbrains.python.psi.stubs.PyClassNameIndexInsensitive; @@ -114,7 +112,7 @@ public class PyQualifiedReference extends PyReferenceImpl { final GlobalSearchScope scope = PyProjectScopeBuilder.excludeSdkTestsScope(project); final Collection functions = PyFunctionNameIndex.find(referencedName, project, scope); final PsiFile containingFile = myElement.getContainingFile(); - final List imports; + final List imports; if (containingFile instanceof PyFile) { imports = collectImports((PyFile)containingFile); } @@ -145,16 +143,16 @@ public class PyQualifiedReference extends PyReferenceImpl { } } - private static List collectImports(PyFile containingFile) { - List imports = new ArrayList(); + private static List collectImports(PyFile containingFile) { + List imports = new ArrayList(); for (PyFromImportStatement anImport : containingFile.getFromImports()) { - final PyQualifiedName source = anImport.getImportSourceQName(); + final QualifiedName source = anImport.getImportSourceQName(); if (source != null) { imports.add(source); } } for (PyImportElement importElement : containingFile.getImportTargets()) { - final PyQualifiedName qName = importElement.getImportedQName(); + final QualifiedName qName = importElement.getImportedQName(); if (qName != null) { imports.add(qName.removeLastComponent()); } @@ -162,7 +160,7 @@ public class PyQualifiedReference extends PyReferenceImpl { return imports; } - private int getImplicitResultRate(PyElement target, List imports) { + private int getImplicitResultRate(PyElement target, List imports) { int rate = RatedResolveResult.RATE_LOW; if (target.getContainingFile() == myElement.getContainingFile()) { rate += 200; @@ -173,7 +171,7 @@ public class PyQualifiedReference extends PyReferenceImpl { if (ProjectScope.getProjectScope(myElement.getProject()).contains(vFile)) { rate += 80; } - final PyQualifiedName qName = QualifiedNameFinder.findShortestImportableQName(myElement, vFile); + final QualifiedName qName = QualifiedNameFinder.findShortestImportableQName(myElement, vFile); if (qName != null && imports.contains(qName)) { rate += 70; } @@ -359,7 +357,7 @@ public class PyQualifiedReference extends PyReferenceImpl { } private static Collection collectAssignedAttributes(PyQualifiedExpression qualifier) { - PyQualifiedName qualifierPath = PyQualifiedName.fromReferenceChain(PyResolveUtil.unwindQualifiers(qualifier)); + QualifiedName qualifierPath = PyQualifiedNameFactory.fromReferenceChain(PyResolveUtil.unwindQualifiers(qualifier)); if (qualifierPath != null) { AssignmentCollectProcessor proc = new AssignmentCollectProcessor(qualifierPath); PyResolveUtil.treeCrawlUp(proc, qualifier); diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java index e0d93eb86f5f..d1ef14c29f8c 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java @@ -8,7 +8,8 @@ import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyClassImpl; import com.jetbrains.python.psi.impl.PyPsiUtils; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; +import com.jetbrains.python.psi.impl.PyQualifiedNameFactory; import com.jetbrains.python.psi.stubs.PyClassNameIndex; import com.jetbrains.python.psi.stubs.PyClassNameIndexInsensitive; import com.jetbrains.python.psi.stubs.PyClassStub; @@ -41,14 +42,14 @@ public class PyClassElementType extends PyStubElementType public PyClassStub createStub(@NotNull final PyClass psi, final StubElement parentStub) { final PyExpression[] exprs = psi.getSuperClassExpressions(); - List superClasses = new ArrayList(); + List superClasses = new ArrayList(); for (PyExpression expression : exprs) { expression = PyClassImpl.unfoldClass(expression); - superClasses.add(PyQualifiedName.fromExpression(expression)); + superClasses.add(PyQualifiedNameFactory.fromExpression(expression)); } final PyStringLiteralExpression docStringExpression = psi.getDocStringExpression(); return new PyClassStubImpl(psi.getName(), parentStub, - superClasses.toArray(new PyQualifiedName[superClasses.size()]), + superClasses.toArray(new QualifiedName[superClasses.size()]), psi.getOwnSlots(), PyPsiUtils.strValue(docStringExpression), getStubElementType()); @@ -56,10 +57,10 @@ public class PyClassElementType extends PyStubElementType public void serialize(@NotNull final PyClassStub pyClassStub, @NotNull final StubOutputStream dataStream) throws IOException { dataStream.writeName(pyClassStub.getName()); - final PyQualifiedName[] classes = pyClassStub.getSuperClasses(); + final QualifiedName[] classes = pyClassStub.getSuperClasses(); dataStream.writeByte(classes.length); - for (PyQualifiedName s : classes) { - PyQualifiedName.serialize(s, dataStream); + for (QualifiedName s : classes) { + QualifiedName.serialize(s, dataStream); } PyFileElementType.writeNullableList(dataStream, pyClassStub.getSlots()); final String docString = pyClassStub.getDocString(); @@ -70,9 +71,9 @@ public class PyClassElementType extends PyStubElementType public PyClassStub deserialize(@NotNull final StubInputStream dataStream, final StubElement parentStub) throws IOException { String name = StringRef.toString(dataStream.readName()); int superClassCount = dataStream.readByte(); - PyQualifiedName[] superClasses = new PyQualifiedName[superClassCount]; + QualifiedName[] superClasses = new QualifiedName[superClassCount]; for (int i = 0; i < superClassCount; i++) { - superClasses[i] = PyQualifiedName.deserialize(dataStream); + superClasses[i] = QualifiedName.deserialize(dataStream); } List slots = PyFileElementType.readNullableList(dataStream); final String docString = dataStream.readUTFFast(); @@ -85,7 +86,7 @@ public class PyClassElementType extends PyStubElementType sink.occurrence(PyClassNameIndex.KEY, name); sink.occurrence(PyClassNameIndexInsensitive.KEY, name.toLowerCase()); } - for (PyQualifiedName s : stub.getSuperClasses()) { + for (QualifiedName s : stub.getSuperClasses()) { if (s != null) { String className = s.getLastComponent(); if (className != null) { diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java index 2abfbbffccfa..8d1a6ee3680a 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java @@ -4,7 +4,7 @@ import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.StubBase; import com.intellij.psi.stubs.StubElement; import com.jetbrains.python.psi.PyClass; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.stubs.PyClassStub; import java.util.List; @@ -14,11 +14,11 @@ import java.util.List; */ public class PyClassStubImpl extends StubBase implements PyClassStub { private final String myName; - private final PyQualifiedName[] mySuperClasses; + private final QualifiedName[] mySuperClasses; private final List mySlots; private final String myDocString; - public PyClassStubImpl(final String name, StubElement parentStub, final PyQualifiedName[] superClasses, final List slots, + public PyClassStubImpl(final String name, StubElement parentStub, final QualifiedName[] superClasses, final List slots, String docString, IStubElementType stubElementType) { super(parentStub, stubElementType); myName = name; @@ -31,7 +31,7 @@ public class PyClassStubImpl extends StubBase implements PyClassStub { return myName; } - public PyQualifiedName[] getSuperClasses() { + public QualifiedName[] getSuperClasses() { return mySuperClasses; } diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyDecoratorCallElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyDecoratorCallElementType.java index 1d78a798d5aa..40842375b680 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyDecoratorCallElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyDecoratorCallElementType.java @@ -8,7 +8,7 @@ import com.intellij.psi.stubs.StubOutputStream; import com.jetbrains.python.psi.PyStubElementType; import com.jetbrains.python.psi.PyDecorator; import com.jetbrains.python.psi.impl.PyDecoratorImpl; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.stubs.PyDecoratorStub; import org.jetbrains.annotations.NotNull; @@ -37,12 +37,12 @@ public class PyDecoratorCallElementType extends PyStubElementType implements PyDecoratorStub { - private final PyQualifiedName myQualifiedName; + private final QualifiedName myQualifiedName; - protected PyDecoratorStubImpl(final PyQualifiedName qualname, final StubElement parent) { + protected PyDecoratorStubImpl(final QualifiedName qualname, final StubElement parent) { super(parent, PyElementTypes.DECORATOR_CALL); myQualifiedName = qualname; } - public PyQualifiedName getQualifiedName() { + public QualifiedName getQualifiedName() { return myQualifiedName; } } diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyFromImportStatementElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyFromImportStatementElementType.java index 337d76e998ff..2b4378b2a4a7 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyFromImportStatementElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyFromImportStatementElementType.java @@ -10,7 +10,7 @@ import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.psi.PyFromImportStatement; import com.jetbrains.python.psi.PyStubElementType; import com.jetbrains.python.psi.impl.PyFromImportStatementImpl; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.stubs.PyFromImportStatementStub; import org.jetbrains.annotations.NotNull; @@ -45,15 +45,15 @@ public class PyFromImportStatementElementType extends PyStubElementType implements PyFromImportStatementStub { - private final PyQualifiedName myImportSourceQName; + private final QualifiedName myImportSourceQName; private final boolean myStarImport; private final int myRelativeLevel; - public PyFromImportStatementStubImpl(PyQualifiedName importSourceQName, boolean isStarImport, int relativeLevel, + public PyFromImportStatementStubImpl(QualifiedName importSourceQName, boolean isStarImport, int relativeLevel, final StubElement parent, IStubElementType elementType) { super(parent, elementType); myImportSourceQName = importSourceQName; @@ -23,7 +23,7 @@ public class PyFromImportStatementStubImpl extends StubBase implements PyImportElementStub { - private final PyQualifiedName myImportedQName; + private final QualifiedName myImportedQName; private final String myAsName; - public PyImportElementStubImpl(@Nullable PyQualifiedName importedQName, String asName, final StubElement parent, + public PyImportElementStubImpl(@Nullable QualifiedName importedQName, String asName, final StubElement parent, IStubElementType elementType) { super(parent, elementType); myImportedQName = importedQName; @@ -23,7 +23,7 @@ public class PyImportElementStubImpl extends StubBase implement } @Nullable - public PyQualifiedName getImportedQName() { + public QualifiedName getImportedQName() { return myImportedQName; } diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java index 4f004f594be9..66af843a8bb1 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java @@ -15,7 +15,7 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.PythonDialectsTokenSetProvider; import com.jetbrains.python.documentation.DocStringUtil; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.PyTargetExpressionImpl; import com.jetbrains.python.psi.stubs.*; import org.jetbrains.annotations.NotNull; @@ -58,7 +58,7 @@ public class PyTargetExpressionElementType extends PyStubElementType implements PyTargetExpressionStub { private final String myName; private final InitializerType myInitializerType; - private final PyQualifiedName myInitializer; + private final QualifiedName myInitializer; private final boolean myQualified; @Nullable private final String myDocString; @@ -34,7 +34,7 @@ public class PyTargetExpressionStubImpl extends StubBase imp } public PyTargetExpressionStubImpl(final String name, @Nullable String docString, final InitializerType initializerType, - final PyQualifiedName initializer, + final QualifiedName initializer, final boolean qualified, final StubElement parentStub) { super(parentStub, PyElementTypes.TARGET_EXPRESSION); @@ -55,7 +55,7 @@ public class PyTargetExpressionStubImpl extends StubBase imp return myInitializerType; } - public PyQualifiedName getInitializer() { + public QualifiedName getInitializer() { return myInitializer; } diff --git a/python/src/com/jetbrains/python/psi/resolve/AssignmentCollectProcessor.java b/python/src/com/jetbrains/python/psi/resolve/AssignmentCollectProcessor.java index ff01a27fb339..daf7d7ec76a5 100644 --- a/python/src/com/jetbrains/python/psi/resolve/AssignmentCollectProcessor.java +++ b/python/src/com/jetbrains/python/psi/resolve/AssignmentCollectProcessor.java @@ -7,7 +7,8 @@ import com.intellij.psi.scope.PsiScopeProcessor; import com.jetbrains.python.psi.PyAssignmentStatement; import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.PyTargetExpression; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; +import com.jetbrains.python.psi.impl.PyQualifiedNameFactory; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -17,7 +18,7 @@ public class AssignmentCollectProcessor implements PsiScopeProcessor { * Collects all assignments in context above given element, if they match given naming pattern. * Used to track creation of attributes by assignment (e.g in constructor). */ - private final PyQualifiedName myQualifier; + private final QualifiedName myQualifier; private final List myResult; private final Set mySeenNames; @@ -27,7 +28,7 @@ public class AssignmentCollectProcessor implements PsiScopeProcessor { * * @param qualifier qualifying names, outermost first; must not be empty. */ - public AssignmentCollectProcessor(@NotNull PyQualifiedName qualifier) { + public AssignmentCollectProcessor(@NotNull QualifiedName qualifier) { assert qualifier.getComponentCount() > 0; myQualifier = qualifier; myResult = new ArrayList(); @@ -41,7 +42,7 @@ public class AssignmentCollectProcessor implements PsiScopeProcessor { if (ex instanceof PyTargetExpression) { final PyTargetExpression target = (PyTargetExpression)ex; List qualsExpr = PyResolveUtil.unwindQualifiers(target); - PyQualifiedName qualifiedName = PyQualifiedName.fromReferenceChain(qualsExpr); + QualifiedName qualifiedName = PyQualifiedNameFactory.fromReferenceChain(qualsExpr); if (qualifiedName != null) { if (qualifiedName.getComponentCount() == myQualifier.getComponentCount() + 1 && qualifiedName.matchesPrefix(myQualifier)) { // a new attribute follows last qualifier; collect it. diff --git a/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java b/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java index f3c2f6cc2273..4dd861cfe30d 100644 --- a/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java +++ b/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java @@ -15,7 +15,7 @@ import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.Nullable; @@ -90,7 +90,7 @@ public class CompletionVariantsProcessor extends VariantsProcessor { source = cls.getName(); } else if (myContext == null || !PyUtil.inSameFile(myContext, element)) { - PyQualifiedName path = QualifiedNameFinder.findCanonicalImportPath(element, null); + QualifiedName path = QualifiedNameFinder.findCanonicalImportPath(element, null); if (path != null) { if (element instanceof PyFile) { path = path.removeLastComponent(); diff --git a/python/src/com/jetbrains/python/psi/resolve/PyResolveUtil.java b/python/src/com/jetbrains/python/psi/resolve/PyResolveUtil.java index aefb28dc9321..847d72c044cc 100644 --- a/python/src/com/jetbrains/python/psi/resolve/PyResolveUtil.java +++ b/python/src/com/jetbrains/python/psi/resolve/PyResolveUtil.java @@ -20,7 +20,8 @@ import com.jetbrains.python.codeInsight.dataflow.scope.Scope; import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyPsiUtils; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; +import com.jetbrains.python.psi.impl.PyQualifiedNameFactory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -259,7 +260,7 @@ public class PyResolveUtil { public static String toPath(PyQualifiedExpression expr) { if (expr == null) return ""; List path = unwindQualifiers(expr); - final PyQualifiedName qName = PyQualifiedName.fromReferenceChain(path); + final QualifiedName qName = PyQualifiedNameFactory.fromReferenceChain(path); if (qName != null) { return qName.toString(); } diff --git a/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java b/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java index ab14f2053370..11ce4dfdf27b 100644 --- a/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java +++ b/python/src/com/jetbrains/python/psi/resolve/PythonPathCache.java @@ -2,7 +2,7 @@ package com.jetbrains.python.psi.resolve; import com.intellij.openapi.vfs.*; import com.intellij.psi.PsiElement; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import java.util.HashMap; import java.util.List; @@ -12,27 +12,27 @@ import java.util.Map; * @author yole */ public abstract class PythonPathCache { - private final Map> myCache = new HashMap>(); - private final Map> myQNameCache = new HashMap>(); + private final Map> myCache = new HashMap>(); + private final Map> myQNameCache = new HashMap>(); protected void clearCache() { myCache.clear(); myQNameCache.clear(); } - public synchronized List get(PyQualifiedName qualifiedName) { + public synchronized List get(QualifiedName qualifiedName) { return myCache.get(qualifiedName); } - public synchronized void put(PyQualifiedName qualifiedName, List results) { + public synchronized void put(QualifiedName qualifiedName, List results) { myCache.put(qualifiedName, results); } - public synchronized List getNames(VirtualFile vFile) { + public synchronized List getNames(VirtualFile vFile) { return myQNameCache.get(vFile); } - public synchronized void putNames(VirtualFile vFile, List qNames) { + public synchronized void putNames(VirtualFile vFile, List qNames) { myQNameCache.put(vFile, qNames); } diff --git a/python/src/com/jetbrains/python/psi/resolve/QualifiedNameFinder.java b/python/src/com/jetbrains/python/psi/resolve/QualifiedNameFinder.java index b38d7c79aabb..2518c2c767dc 100644 --- a/python/src/com/jetbrains/python/psi/resolve/QualifiedNameFinder.java +++ b/python/src/com/jetbrains/python/psi/resolve/QualifiedNameFinder.java @@ -12,7 +12,7 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.PyFunction; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -33,31 +33,31 @@ public class QualifiedNameFinder { */ @Nullable public static String findShortestImportableName(@NotNull PsiElement foothold, @NotNull VirtualFile vfile) { - final PyQualifiedName qName = findShortestImportableQName(foothold, vfile); + final QualifiedName qName = findShortestImportableQName(foothold, vfile); return qName == null ? null : qName.toString(); } @Nullable - public static PyQualifiedName findShortestImportableQName(@Nullable PsiFileSystemItem fsItem) { + public static QualifiedName findShortestImportableQName(@Nullable PsiFileSystemItem fsItem) { VirtualFile vFile = fsItem != null ? fsItem.getVirtualFile() : null; return vFile != null ? findShortestImportableQName(fsItem, vFile) : null; } @Nullable - public static PyQualifiedName findShortestImportableQName(@NotNull PsiElement foothold, @NotNull VirtualFile vfile) { + public static QualifiedName findShortestImportableQName(@NotNull PsiElement foothold, @NotNull VirtualFile vfile) { return shortestQName(findImportableQNames(foothold, vfile)); } @NotNull - public static List findImportableQNames(@NotNull PsiElement foothold, @NotNull VirtualFile vfile) { + public static List findImportableQNames(@NotNull PsiElement foothold, @NotNull VirtualFile vfile) { final PythonPathCache cache = ResolveImportUtil.getPathCache(foothold); - final List names = cache != null ? cache.getNames(vfile) : null; + final List names = cache != null ? cache.getNames(vfile) : null; if (names != null) { return names; } PathChoosingVisitor visitor = new PathChoosingVisitor(vfile); RootVisitorHost.visitRoots(foothold, visitor); - final List results = visitor.getResults(); + final List results = visitor.getResults(); if (cache != null) { cache.putNames(vfile, results); } @@ -65,9 +65,9 @@ public class QualifiedNameFinder { } @Nullable - private static PyQualifiedName shortestQName(@NotNull List qNames) { - PyQualifiedName result = null; - for (PyQualifiedName name : qNames) { + private static QualifiedName shortestQName(@NotNull List qNames) { + QualifiedName result = null; + for (QualifiedName name : qNames) { if (result == null || name.getComponentCount() < result.getComponentCount()) { result = name; } @@ -78,15 +78,15 @@ public class QualifiedNameFinder { @Nullable public static String findShortestImportableName(Module module, @NotNull VirtualFile vfile) { final PythonPathCache cache = PythonModulePathCache.getInstance(module); - final List names = cache.getNames(vfile); + final List names = cache.getNames(vfile); if (names != null) { return names.toString(); } PathChoosingVisitor visitor = new PathChoosingVisitor(vfile); RootVisitorHost.visitRoots(module, false, visitor); - final List results = visitor.getResults(); + final List results = visitor.getResults(); cache.putNames(vfile, results); - final PyQualifiedName qName = shortestQName(results); + final QualifiedName qName = shortestQName(results); return qName == null ? null : qName.toString(); } @@ -100,7 +100,7 @@ public class QualifiedNameFinder { * @return the qualified name, or null if it wasn't possible to calculate one */ @Nullable - public static PyQualifiedName findCanonicalImportPath(@NotNull PsiElement symbol, @Nullable PsiElement foothold) { + public static QualifiedName findCanonicalImportPath(@NotNull PsiElement symbol, @Nullable PsiElement foothold) { PsiFileSystemItem srcfile = symbol instanceof PsiFileSystemItem ? (PsiFileSystemItem)symbol : symbol.getContainingFile(); if (srcfile == null) { return null; @@ -129,10 +129,10 @@ public class QualifiedNameFinder { dir = dir.getParentDirectory(); } } - final PyQualifiedName qname = findShortestImportableQName(foothold != null ? foothold : symbol, virtualFile); + final QualifiedName qname = findShortestImportableQName(foothold != null ? foothold : symbol, virtualFile); if (qname != null) { for (PyCanonicalPathProvider provider : Extensions.getExtensions(PyCanonicalPathProvider.EP_NAME)) { - final PyQualifiedName restored = provider.getCanonicalPath(qname, foothold); + final QualifiedName restored = provider.getCanonicalPath(qname, foothold); if (restored != null) { return restored; } @@ -147,7 +147,7 @@ public class QualifiedNameFinder { */ private static class PathChoosingVisitor implements RootVisitor { @Nullable private final VirtualFile myVFile; - @NotNull private final List myResults = new ArrayList(); + @NotNull private final List myResults = new ArrayList(); private PathChoosingVisitor(@NotNull VirtualFile file) { if (!file.isDirectory() && file.getName().equals(PyNames.INIT_DOT_PY)) { @@ -171,14 +171,14 @@ public class QualifiedNameFinder { return true; } } - myResults.add(PyQualifiedName.fromComponents(result)); + myResults.add(QualifiedName.fromComponents(result)); } } return true; } @NotNull - public List getResults() { + public List getResults() { return myResults; } } diff --git a/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java b/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java index 4be01fc8b508..103de21b78a9 100644 --- a/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java +++ b/python/src/com/jetbrains/python/psi/resolve/QualifiedNameResolverImpl.java @@ -18,7 +18,7 @@ import com.jetbrains.python.console.PydevConsoleRunner; import com.jetbrains.python.facet.PythonPathContributingFacet; import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.impl.PyImportResolver; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.sdk.PythonSdkType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -36,7 +36,7 @@ import java.util.Set; public class QualifiedNameResolverImpl implements RootVisitor, QualifiedNameResolver { boolean myCheckForPackage = true; private final QualifiedNameResolveContext myContext = new QualifiedNameResolveContext(); - private final @NotNull PyQualifiedName myQualifiedName; + private final @NotNull QualifiedName myQualifiedName; final Set mySourceResults = Sets.newLinkedHashSet(); final Set myLibResults = Sets.newLinkedHashSet(); final Set myForeignResults = Sets.newLinkedHashSet(); @@ -47,10 +47,10 @@ public class QualifiedNameResolverImpl implements RootVisitor, QualifiedNameReso private boolean myWithMembers; public QualifiedNameResolverImpl(@NotNull String qNameString) { - myQualifiedName = PyQualifiedName.fromDottedString(qNameString); + myQualifiedName = QualifiedName.fromDottedString(qNameString); } - public QualifiedNameResolverImpl(@NotNull PyQualifiedName qName) { + public QualifiedNameResolverImpl(@NotNull QualifiedName qName) { myQualifiedName = qName; } @@ -175,7 +175,7 @@ public class QualifiedNameResolverImpl implements RootVisitor, QualifiedNameReso addRoot(resolveResult, isModuleSource); } - if (isAcceptRootAsTopLevelPackage() && myQualifiedName.matchesPrefix(PyQualifiedName.fromDottedString(root.getName()))) { + if (isAcceptRootAsTopLevelPackage() && myQualifiedName.matchesPrefix(QualifiedName.fromDottedString(root.getName()))) { resolveResult = resolveInRoot(root.getParent()); if (resolveResult != null) { addRoot(resolveResult, isModuleSource); diff --git a/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java b/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java index 1cf482a5fdfd..cfa4043ce4d8 100644 --- a/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java +++ b/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java @@ -11,6 +11,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiInvalidElementAccessException; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.QualifiedName; import com.intellij.util.containers.HashSet; import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.*; @@ -84,7 +85,7 @@ public class ResolveImportUtil { } @Nullable - public static PsiElement resolveImportElement(PyImportElement importElement, @NotNull final PyQualifiedName qName) { + public static PsiElement resolveImportElement(PyImportElement importElement, @NotNull final QualifiedName qName) { List targets; final PyStatement importStatement = importElement.getContainingImportStatement(); if (importStatement instanceof PyFromImportStatement) { @@ -97,14 +98,14 @@ public class ResolveImportUtil { return resultList.size() > 0 ? resultList.get(0).getElement() : null; } - public static List resolveNameInImportStatement(PyImportElement importElement, @NotNull PyQualifiedName qName) { + public static List resolveNameInImportStatement(PyImportElement importElement, @NotNull QualifiedName qName) { final PsiFile file = importElement.getContainingFile().getOriginalFile(); boolean absoluteImportEnabled = isAbsoluteImportEnabledFor(importElement); final List modules = resolveModule(qName, file, absoluteImportEnabled, 0); return rateResults(modules); } - public static List resolveNameInFromImport(PyFromImportStatement importStatement, @NotNull PyQualifiedName qName) { + public static List resolveNameInFromImport(PyFromImportStatement importStatement, @NotNull QualifiedName qName) { PsiFile file = importStatement.getContainingFile().getOriginalFile(); String name = qName.getComponents().get(0); @@ -132,7 +133,7 @@ public class ResolveImportUtil { } @NotNull - public static List resolveFromImportStatementSource(PyFromImportStatement from_import_statement, PyQualifiedName qName) { + public static List resolveFromImportStatementSource(PyFromImportStatement from_import_statement, QualifiedName qName) { boolean absoluteImportEnabled = isAbsoluteImportEnabledFor(from_import_statement); PsiFile file = from_import_statement.getContainingFile(); return resolveModule(qName, file, absoluteImportEnabled, from_import_statement.getRelativeLevel()); @@ -149,7 +150,7 @@ public class ResolveImportUtil { * @return list of possible candidates */ @NotNull - public static List resolveModule(@Nullable PyQualifiedName qualifiedName, PsiFile sourceFile, + public static List resolveModule(@Nullable QualifiedName qualifiedName, PsiFile sourceFile, boolean importIsAbsolute, int relativeLevel) { if (qualifiedName == null || sourceFile == null) { return Collections.emptyList(); @@ -194,12 +195,12 @@ public class ResolveImportUtil { */ @NotNull private static List resolveRelativeImportAsAbsolute(@NotNull PsiFile foothold, - @NotNull PyQualifiedName qualifiedName) { + @NotNull QualifiedName qualifiedName) { final PsiDirectory containingDirectory = foothold.getContainingDirectory(); if (containingDirectory != null) { - final PyQualifiedName containingPath = QualifiedNameFinder.findCanonicalImportPath(containingDirectory, null); + final QualifiedName containingPath = QualifiedNameFinder.findCanonicalImportPath(containingDirectory, null); if (containingPath != null && containingPath.getComponentCount() > 0) { - final PyQualifiedName absolutePath = containingPath.append(qualifiedName.toString()); + final QualifiedName absolutePath = containingPath.append(qualifiedName.toString()); final QualifiedNameResolver absoluteVisitor = new QualifiedNameResolverImpl(absolutePath).fromElement(foothold); return absoluteVisitor.resultsAsList(); } @@ -208,7 +209,7 @@ public class ResolveImportUtil { } @Nullable - public static PsiElement resolveModuleInRoots(@NotNull PyQualifiedName moduleQualifiedName, @Nullable PsiElement foothold) { + public static PsiElement resolveModuleInRoots(@NotNull QualifiedName moduleQualifiedName, @Nullable PsiElement foothold) { if (foothold == null) return null; QualifiedNameResolver visitor = new QualifiedNameResolverImpl(moduleQualifiedName).fromElement(foothold); return visitor.firstResult(); @@ -294,7 +295,7 @@ public class ResolveImportUtil { } if (parent instanceof PsiFile) { final List items = resolveRelativeImportAsAbsolute((PsiFile)parent, - PyQualifiedName.fromComponents(referencedName)); + QualifiedName.fromComponents(referencedName)); if (!items.isEmpty()) { return items.get(0); } diff --git a/python/src/com/jetbrains/python/psi/resolve/ResolveProcessor.java b/python/src/com/jetbrains/python/psi/resolve/ResolveProcessor.java index 88d7481b3491..8f5070a67b4a 100644 --- a/python/src/com/jetbrains/python/psi/resolve/ResolveProcessor.java +++ b/python/src/com/jetbrains/python/psi/resolve/ResolveProcessor.java @@ -10,7 +10,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyImportedModule; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -106,7 +106,7 @@ public class ResolveProcessor implements PsiScopeProcessor { } else if (element instanceof PyImportElement) { final PyImportElement importElement = (PyImportElement) element; - final PyQualifiedName qName = importElement.getImportedQName(); + final QualifiedName qName = importElement.getImportedQName(); // http://stackoverflow.com/questions/6048786/from-module-import-in-init-py-makes-module-name-visible if (qName != null && qName.getComponentCount() > 1 && myName.equals(qName.getLastComponent()) && PyNames.INIT_DOT_PY.equals(importElement.getContainingFile().getName())) { @@ -132,7 +132,7 @@ public class ResolveProcessor implements PsiScopeProcessor { } if (element instanceof PyFromImportStatement && PyNames.INIT_DOT_PY.equals(element.getContainingFile().getName())) { final PyFromImportStatement fromImportStatement = (PyFromImportStatement)element; - final PyQualifiedName qName = fromImportStatement.getImportSourceQName(); + final QualifiedName qName = fromImportStatement.getImportSourceQName(); if (qName != null && qName.endsWith(myName)) { final PsiElement source = PyUtil.turnInitIntoDir(fromImportStatement.resolveImportSource()); if (source != null && source.getParent() == element.getContainingFile().getContainingDirectory()) { diff --git a/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java b/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java index f79cb9014052..06d65a135e27 100644 --- a/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java +++ b/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java @@ -9,7 +9,7 @@ import com.intellij.psi.PsiNamedElement; import com.intellij.psi.ResolveState; import com.intellij.psi.scope.PsiScopeProcessor; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -88,7 +88,7 @@ public abstract class VariantsProcessor implements PsiScopeProcessor { } protected boolean handleImportElement(PyImportElement importElement) { - final PyQualifiedName qName = importElement.getImportedQName(); + final QualifiedName qName = importElement.getImportedQName(); if (qName != null && qName.getComponentCount() == 1) { String name = importElement.getAsName() != null ? importElement.getAsName() : qName.getLastComponent(); if (name != null && nameIsAcceptable(name)) { diff --git a/python/src/com/jetbrains/python/psi/stubs/PropertyStubStorage.java b/python/src/com/jetbrains/python/psi/stubs/PropertyStubStorage.java index bdb8d32259dd..ff04c939c85a 100644 --- a/python/src/com/jetbrains/python/psi/stubs/PropertyStubStorage.java +++ b/python/src/com/jetbrains/python/psi/stubs/PropertyStubStorage.java @@ -5,7 +5,7 @@ import com.intellij.psi.stubs.StubOutputStream; import com.intellij.util.io.StringRef; import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.impl.PropertyBunch; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.stubs.CustomTargetExpressionStub; import com.jetbrains.python.psi.impl.stubs.CustomTargetExpressionStubType; import com.jetbrains.python.psi.impl.stubs.PropertyStubType; @@ -53,7 +53,7 @@ public class PropertyStubStorage extends PropertyBunch implements Custom } @Override - public PyQualifiedName getCalleeName() { + public QualifiedName getCalleeName() { return null; // ?? } diff --git a/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java b/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java index 5708645e8e9f..931774ef46a8 100644 --- a/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java +++ b/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java @@ -12,7 +12,7 @@ import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.PyImportElement; import com.jetbrains.python.psi.impl.PyImportedModule; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.RatedResolveResult; import com.jetbrains.python.psi.resolve.ResolveImportUtil; @@ -58,7 +58,7 @@ public class PyImportedModuleType implements PyType { final List importTargets = PyModuleType.getVisibleImports(scopeOwner); final int imported = myImportedModule.getImportedPrefix().getComponentCount(); for (PyImportElement importTarget : importTargets) { - final PyQualifiedName qName = importTarget.getImportedQName(); + final QualifiedName qName = importTarget.getImportedQName(); if (qName != null && qName.matchesPrefix(myImportedModule.getImportedPrefix())) { final List components = qName.getComponents(); if (components.size() > imported) { diff --git a/python/src/com/jetbrains/python/psi/types/PyModuleType.java b/python/src/com/jetbrains/python/psi/types/PyModuleType.java index ba3505404874..9578c3b0168d 100644 --- a/python/src/com/jetbrains/python/psi/types/PyModuleType.java +++ b/python/src/com/jetbrains/python/psi/types/PyModuleType.java @@ -20,7 +20,7 @@ import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyImportedModule; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.ResolveResultList; import com.jetbrains.python.psi.resolve.*; import com.jetbrains.python.sdk.PythonSdkType; @@ -132,10 +132,10 @@ public class PyModuleType implements PyType { // Modules don't descend from obje @NotNull List importElements) { final VirtualFile moduleFile = myModule.getVirtualFile(); if (moduleFile != null) { - for (PyQualifiedName packageQName : QualifiedNameFinder.findImportableQNames(myModule, myModule.getVirtualFile())) { - final PyQualifiedName resolvingQName = packageQName.append(name); + for (QualifiedName packageQName : QualifiedNameFinder.findImportableQNames(myModule, myModule.getVirtualFile())) { + final QualifiedName resolvingQName = packageQName.append(name); for (PyImportElement importElement : importElements) { - for (PyQualifiedName qName : getImportedQNames(importElement)) { + for (QualifiedName qName : getImportedQNames(importElement)) { if (qName.matchesPrefix(resolvingQName)) { final PsiElement subModule = ResolveImportUtil.resolveChild(myModule, name, myModule, false, true); if (subModule != null) { @@ -153,23 +153,23 @@ public class PyModuleType implements PyType { // Modules don't descend from obje } @NotNull - private static List getImportedQNames(@NotNull PyImportElement element) { - final List importedQNames = new ArrayList(); + private static List getImportedQNames(@NotNull PyImportElement element) { + final List importedQNames = new ArrayList(); final PyStatement stmt = element.getContainingImportStatement(); if (stmt instanceof PyFromImportStatement) { final PyFromImportStatement fromImportStatement = (PyFromImportStatement)stmt; - final PyQualifiedName importedQName = fromImportStatement.getImportSourceQName(); + final QualifiedName importedQName = fromImportStatement.getImportSourceQName(); final String visibleName = element.getVisibleName(); if (importedQName != null) { importedQNames.add(importedQName); - final PyQualifiedName implicitSubModuleQName = importedQName.append(visibleName); + final QualifiedName implicitSubModuleQName = importedQName.append(visibleName); if (implicitSubModuleQName != null) { importedQNames.add(implicitSubModuleQName); } } } else if (stmt instanceof PyImportStatement) { - final PyQualifiedName importedQName = element.getImportedQName(); + final QualifiedName importedQName = element.getImportedQName(); if (importedQName != null) { importedQNames.add(importedQName); } @@ -179,17 +179,17 @@ public class PyModuleType implements PyType { // Modules don't descend from obje if (file != null) { file = file.getOriginalFile(); } - final PyQualifiedName absoluteQName = QualifiedNameFinder.findShortestImportableQName(file); + final QualifiedName absoluteQName = QualifiedNameFinder.findShortestImportableQName(file); if (file != null && absoluteQName != null) { - final PyQualifiedName prefixQName = PyUtil.isPackage(file) ? absoluteQName : absoluteQName.removeLastComponent(); + final QualifiedName prefixQName = PyUtil.isPackage(file) ? absoluteQName : absoluteQName.removeLastComponent(); if (prefixQName.getComponentCount() > 0) { - final List results = new ArrayList(); + final List results = new ArrayList(); results.addAll(importedQNames); - for (PyQualifiedName qName : importedQNames) { + for (QualifiedName qName : importedQNames) { final List components = new ArrayList(); components.addAll(prefixQName.getComponents()); components.addAll(qName.getComponents()); - results.add(PyQualifiedName.fromComponents(components)); + results.add(QualifiedName.fromComponents(components)); } return results; } diff --git a/python/src/com/jetbrains/python/psi/types/PyTypeParser.java b/python/src/com/jetbrains/python/psi/types/PyTypeParser.java index 34a81327f29d..ca6048e77f42 100644 --- a/python/src/com/jetbrains/python/psi/types/PyTypeParser.java +++ b/python/src/com/jetbrains/python/psi/types/PyTypeParser.java @@ -11,7 +11,7 @@ import com.intellij.util.containers.hash.HashMap; import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.QualifiedNameResolverImpl; import com.jetbrains.python.psi.resolve.RatedResolveResult; @@ -424,11 +424,11 @@ public class PyTypeParser { } else { // Implicitly available in the type string - PyQualifiedName qName = null; + QualifiedName qName = null; while (!tokens.isEmpty()) { final Token token = tokens.get(0); final String name = token.getText().toString(); - qName = qName != null ? qName.append(name) : PyQualifiedName.fromComponents(name); + qName = qName != null ? qName.append(name) : QualifiedName.fromComponents(name); PsiElement module = new QualifiedNameResolverImpl(qName).fromElement(myAnchor).firstResult(); if (module == null) { break; diff --git a/python/src/com/jetbrains/python/refactoring/PyDefUseUtil.java b/python/src/com/jetbrains/python/refactoring/PyDefUseUtil.java index 3c9bff0960e5..9c4c60c1cfe4 100644 --- a/python/src/com/jetbrains/python/refactoring/PyDefUseUtil.java +++ b/python/src/com/jetbrains/python/refactoring/PyDefUseUtil.java @@ -12,7 +12,7 @@ import com.jetbrains.python.codeInsight.controlflow.ReadWriteInstruction; import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyAugAssignmentStatementNavigator; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -77,7 +77,7 @@ public class PyDefUseUtil { return ((PyImportElement) element).getVisibleName(); } if (element instanceof PyReferenceExpression) { - final PyQualifiedName qname = ((PyReferenceExpression)element).asQualifiedName(); + final QualifiedName qname = ((PyReferenceExpression)element).asQualifiedName(); if (qname != null) { return qname.toString(); } diff --git a/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java b/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java index 2b0e5bb63d65..91c31c969df5 100644 --- a/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java +++ b/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java @@ -19,7 +19,7 @@ import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.impl.PyImportedModule; import com.jetbrains.python.psi.impl.PyPsiUtils; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -216,7 +216,7 @@ public class PyClassRefactoringUtil { } } - public static boolean isValidQualifiedName(PyQualifiedName name) { + public static boolean isValidQualifiedName(QualifiedName name) { if (name == null) { return false; } @@ -245,11 +245,11 @@ public class PyClassRefactoringUtil { final PsiFile newFile = element.getContainingFile(); final PsiFile file = anchor.getContainingFile(); if (newFile == file) return false; - final PyQualifiedName qname = QualifiedNameFinder.findCanonicalImportPath(element, anchor); + final QualifiedName qname = QualifiedNameFinder.findCanonicalImportPath(element, anchor); if (qname == null || !isValidQualifiedName(qname)) { return false; } - final PyQualifiedName containingQName; + final QualifiedName containingQName; final String importedName; if (element instanceof PyFile) { containingQName = qname.removeLastComponent(); @@ -384,7 +384,7 @@ public class PyClassRefactoringUtil { @Nullable private static String getOriginalName(PyImportElement element) { - final PyQualifiedName qname = element.getImportedQName(); + final QualifiedName qname = element.getImportedQName(); if (qname != null && qname.getComponentCount() > 0) { return qname.getComponents().get(0); } diff --git a/python/src/com/jetbrains/python/refactoring/move/PyMoveClassOrFunctionProcessor.java b/python/src/com/jetbrains/python/refactoring/move/PyMoveClassOrFunctionProcessor.java index 686a193d58a6..d4012d8fced5 100644 --- a/python/src/com/jetbrains/python/refactoring/move/PyMoveClassOrFunctionProcessor.java +++ b/python/src/com/jetbrains/python/refactoring/move/PyMoveClassOrFunctionProcessor.java @@ -20,7 +20,7 @@ import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.codeInsight.imports.PyImportOptimizer; import com.jetbrains.python.documentation.DocStringTypeReference; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; import com.jetbrains.python.refactoring.PyRefactoringUtil; import com.jetbrains.python.refactoring.classes.PyClassRefactoringUtil; @@ -228,7 +228,7 @@ public class PyMoveClassOrFunctionProcessor extends BaseRefactoringProcessor { } private static void checkValidImportableFile(PsiElement anchor, VirtualFile file) { - final PyQualifiedName qName = QualifiedNameFinder.findShortestImportableQName(anchor, file); + final QualifiedName qName = QualifiedNameFinder.findShortestImportableQName(anchor, file); if (!PyClassRefactoringUtil.isValidQualifiedName(qName)) { throw new IncorrectOperationException(PyBundle.message("refactoring.move.class.or.function.error.cannot.use.module.name.$0", qName)); } diff --git a/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java b/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java index 900e83129e7a..3d21a76f6fd2 100644 --- a/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java +++ b/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java @@ -16,7 +16,7 @@ import com.jetbrains.python.PythonFileType; import com.jetbrains.python.actions.CreatePackageAction; import com.jetbrains.python.codeInsight.imports.PyImportOptimizer; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.resolve.QualifiedNameFinder; import com.jetbrains.python.refactoring.PyRefactoringUtil; import com.jetbrains.python.refactoring.classes.PyClassRefactoringUtil; @@ -89,16 +89,16 @@ public class PyMoveFileHandler extends MoveFileHandler { if (importStmt instanceof PyFromImportStatement && PsiTreeUtil.getParentOfType(element, PyImportElement.class) != null) { continue; } - final PyQualifiedName newElementName = QualifiedNameFinder.findCanonicalImportPath(newElement, element); + final QualifiedName newElementName = QualifiedNameFinder.findCanonicalImportPath(newElement, element); replaceWithQualifiedExpression(element, newElementName); } else if (element instanceof PyReferenceExpression) { updatedFiles.add(file); if (((PyReferenceExpression)element).getQualifier() != null) { - final PyQualifiedName newQualifiedName = QualifiedNameFinder.findCanonicalImportPath(newElement, element); + final QualifiedName newQualifiedName = QualifiedNameFinder.findCanonicalImportPath(newElement, element); replaceWithQualifiedExpression(element, newQualifiedName); } else { - final PyQualifiedName newName = PyQualifiedName.fromComponents(PyClassRefactoringUtil.getOriginalName(newElement)); + final QualifiedName newName = QualifiedName.fromComponents(PyClassRefactoringUtil.getOriginalName(newElement)); replaceWithQualifiedExpression(element, newName); PyClassRefactoringUtil.insertImport(element, newElement, null); } @@ -117,7 +117,7 @@ public class PyMoveFileHandler extends MoveFileHandler { } private static void replaceWithQualifiedExpression(@NotNull PsiElement oldElement, - @Nullable PyQualifiedName newElementName) { + @Nullable QualifiedName newElementName) { if (newElementName != null && PyClassRefactoringUtil.isValidQualifiedName(newElementName)) { final PyElementGenerator generator = PyElementGenerator.getInstance(oldElement.getProject()); final PsiElement newElement = generator.createExpressionFromText(LanguageLevel.forElement(oldElement), newElementName.toString()); diff --git a/python/src/com/jetbrains/python/sdk/skeletons/SkeletonVersionChecker.java b/python/src/com/jetbrains/python/sdk/skeletons/SkeletonVersionChecker.java index 311b60fdc908..02ae9c6ed99e 100644 --- a/python/src/com/jetbrains/python/sdk/skeletons/SkeletonVersionChecker.java +++ b/python/src/com/jetbrains/python/sdk/skeletons/SkeletonVersionChecker.java @@ -2,7 +2,7 @@ package com.jetbrains.python.sdk.skeletons; import com.intellij.openapi.diagnostic.Logger; import com.jetbrains.python.PythonHelpersLocator; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import org.jetbrains.annotations.NonNls; import java.io.*; @@ -29,7 +29,7 @@ public class SkeletonVersionChecker { @NonNls static final String REQUIRED_VERSION_FNAME = "required_gen_version"; @NonNls static final String DEFAULT_NAME = "(default)"; // version required if a package is not explicitly mentioned @NonNls public static final String BUILTIN_NAME = "(built-in)"; // version required for built-ins - private TreeMap myExplicitVersion; // versions of regularly named packages + private TreeMap myExplicitVersion; // versions of regularly named packages private Integer myDefaultVersion; // version of (default) private Integer myBuiltinsVersion; // version of (built-it) @@ -42,10 +42,10 @@ public class SkeletonVersionChecker { load(); } - private static TreeMap createTreeMap() { - return new TreeMap(new Comparator() { + private static TreeMap createTreeMap() { + return new TreeMap(new Comparator() { @Override - public int compare(PyQualifiedName left, PyQualifiedName right) { + public int compare(QualifiedName left, QualifiedName right) { Iterator lefts = left.getComponents().iterator(); Iterator rights = right.getComponents().iterator(); while (lefts.hasNext() && rights.hasNext()) { @@ -59,7 +59,7 @@ public class SkeletonVersionChecker { }); } - SkeletonVersionChecker(TreeMap explicit, Integer builtins) { + SkeletonVersionChecker(TreeMap explicit, Integer builtins) { myExplicitVersion = explicit; myBuiltinsVersion = builtins; } @@ -99,7 +99,7 @@ public class SkeletonVersionChecker { myBuiltinsVersion = version; } else { - myExplicitVersion.put(PyQualifiedName.fromDottedString(package_name), version); + myExplicitVersion.put(QualifiedName.fromDottedString(package_name), version); } } // else the whole line is a valid comment, and both catch groups are null } @@ -123,8 +123,8 @@ public class SkeletonVersionChecker { } public int getRequiredVersion(String package_name) { - PyQualifiedName qname = PyQualifiedName.fromDottedString(package_name); - Map.Entry found = myExplicitVersion.floorEntry(qname); + QualifiedName qname = QualifiedName.fromDottedString(package_name); + Map.Entry found = myExplicitVersion.floorEntry(qname); if (found != null && qname.matchesPrefix(found.getKey())) { return found.getValue(); } diff --git a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java index b4fc1ee55ce7..87984eb26e9e 100644 --- a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java +++ b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java @@ -12,7 +12,7 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.PyTokenTypes; import com.jetbrains.python.inspections.quickfix.*; import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.PyStringLiteralExpressionImpl; import org.jetbrains.annotations.Nullable; @@ -130,7 +130,7 @@ public abstract class CompatibilityVisitor extends PyAnnotator { for (int i = 0; i != myVersionsToProcess.size(); ++i) { LanguageLevel languageLevel = myVersionsToProcess.get(i); for (PyImportElement importElement : importElements) { - final PyQualifiedName qName = importElement.getImportedQName(); + final QualifiedName qName = importElement.getImportedQName(); if (qName != null) { if (!languageLevel.isPy3K()) { if (qName.matches("builtins")) { diff --git a/python/testSrc/com/jetbrains/python/PyStubsTest.java b/python/testSrc/com/jetbrains/python/PyStubsTest.java index b44c0b90757c..9428f31205c5 100644 --- a/python/testSrc/com/jetbrains/python/PyStubsTest.java +++ b/python/testSrc/com/jetbrains/python/PyStubsTest.java @@ -19,7 +19,7 @@ import com.intellij.util.indexing.FileBasedIndex; import com.jetbrains.python.fixtures.PyTestCase; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyFileImpl; -import com.jetbrains.python.psi.impl.PyQualifiedName; +import com.intellij.psi.util.QualifiedName; import com.jetbrains.python.psi.impl.PythonLanguageLevelPusher; import com.jetbrains.python.psi.stubs.PyClassNameIndex; import com.jetbrains.python.psi.stubs.PyClassStub; @@ -225,13 +225,13 @@ public class PyStubsTest extends PyTestCase { assertEquals("argv", importElements [0].getVisibleName()); assertFalse(fromImport.isStarImport()); assertEquals(0, fromImport.getRelativeLevel()); - final PyQualifiedName qName = fromImport.getImportSourceQName(); + final QualifiedName qName = fromImport.getImportSourceQName(); assertSameElements(qName.getComponents(), "sys"); final List importTargets = file.getImportTargets(); assertEquals(1, importTargets.size()); final PyImportElement importElement = importTargets.get(0); - final PyQualifiedName importQName = importElement.getImportedQName(); + final QualifiedName importQName = importElement.getImportedQName(); assertSameElements(importQName.getComponents(), "os", "path"); assertNotParsed(file);