mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ResolveImportUtil.resolveFromImportStatementSource() -> PyFromImportStatement.resolveImportSource()
This commit is contained in:
@@ -85,7 +85,7 @@ public class AddImportHelper {
|
||||
if (relativeTo instanceof PyFromImportStatement) {
|
||||
final PyFromImportStatement fromImportStatement = (PyFromImportStatement)relativeTo;
|
||||
relativeToName = fromImportStatement.getImportSourceQName();
|
||||
source = ResolveImportUtil.resolveFromImportStatementSource(fromImportStatement);
|
||||
source = fromImportStatement.resolveImportSource();
|
||||
}
|
||||
else {
|
||||
final PyImportElement[] importElements = relativeTo.getImportElements();
|
||||
|
||||
@@ -650,7 +650,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection {
|
||||
}
|
||||
else {
|
||||
assert importStatement instanceof PyFromImportStatement;
|
||||
if (ResolveImportUtil.resolveFromImportStatementSource((PyFromImportStatement)importStatement) == null) {
|
||||
if (((PyFromImportStatement)importStatement).resolveImportSource() == null) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,4 +51,13 @@ public interface PyFromImportStatement extends PyImportStatementBase, StubBasedP
|
||||
*/
|
||||
@Nullable
|
||||
PsiElement getRightParen();
|
||||
|
||||
/**
|
||||
* Resolves the import source qualified name to a file or directory. Note: performs a Python only resolve,
|
||||
* doesn't handle extension points such as import from Java classes.
|
||||
*
|
||||
* @return the resolved import source, or null if the import is unresolved.
|
||||
*/
|
||||
@Nullable
|
||||
PsiElement resolveImportSource();
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression {
|
||||
if (PyUtil.isClassPrivateName(name)) {
|
||||
return null;
|
||||
}
|
||||
PsiElement starImportSource = ResolveImportUtil.resolveFromImportStatementSource(statement);
|
||||
PsiElement starImportSource = statement.resolveImportSource();
|
||||
if (starImportSource != null) {
|
||||
starImportSource = PyUtil.turnDirIntoInit(starImportSource);
|
||||
if (starImportSource instanceof PyFileImpl) {
|
||||
@@ -277,7 +277,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression {
|
||||
if (PyNames.INIT_DOT_PY.equals(getName())) {
|
||||
final PyQualifiedName qName = statement.getImportSourceQName();
|
||||
if (qName != null && qName.endsWith(name)) {
|
||||
final PsiElement element = PyUtil.turnInitIntoDir(ResolveImportUtil.resolveFromImportStatementSource(statement));
|
||||
final PsiElement element = PyUtil.turnInitIntoDir(statement.resolveImportSource());
|
||||
if (element != null && element.getParent() == getContainingDirectory()) {
|
||||
return element;
|
||||
}
|
||||
|
||||
@@ -189,4 +189,14 @@ public class PyFromImportStatementImpl extends PyBaseElementImpl<PyFromImportSta
|
||||
PyPsiUtils.deleteAdjacentComma(this, child, getImportElements());
|
||||
super.deleteChildInternal(child);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PsiElement resolveImportSource() {
|
||||
final PyQualifiedName qName = getImportSourceQName();
|
||||
if (qName == null) {
|
||||
return null;
|
||||
}
|
||||
final List<PsiElement> source = ResolveImportUtil.resolveFromImportStatementSource(this, qName);
|
||||
return source.isEmpty() ? null : source.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,18 +167,8 @@ public class ResolveImportUtil {
|
||||
return results;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PsiElement resolveFromImportStatementSource(PyFromImportStatement from_import_statement) {
|
||||
final PyQualifiedName qName = from_import_statement.getImportSourceQName();
|
||||
if (qName == null) {
|
||||
return null;
|
||||
}
|
||||
final List<PsiElement> source = resolveFromImportStatementSource(from_import_statement, qName);
|
||||
return source.isEmpty() ? null : source.get(0);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static List<PsiElement> resolveFromImportStatementSource(PyFromImportStatement from_import_statement, PyQualifiedName qName) {
|
||||
public static List<PsiElement> resolveFromImportStatementSource(PyFromImportStatement from_import_statement, PyQualifiedName qName) {
|
||||
boolean absolute_import_enabled = isAbsoluteImportEnabledFor(from_import_statement);
|
||||
PsiFile file = from_import_statement.getContainingFile();
|
||||
return resolveModule(qName, file, absolute_import_enabled, from_import_statement.getRelativeLevel());
|
||||
|
||||
@@ -126,7 +126,7 @@ public class ResolveProcessor implements PsiScopeProcessor {
|
||||
final PyFromImportStatement fromImportStatement = (PyFromImportStatement)element;
|
||||
final PyQualifiedName qName = fromImportStatement.getImportSourceQName();
|
||||
if (qName != null && qName.endsWith(myName)) {
|
||||
final PsiElement source = PyUtil.turnInitIntoDir(ResolveImportUtil.resolveFromImportStatementSource(fromImportStatement));
|
||||
final PsiElement source = PyUtil.turnInitIntoDir(fromImportStatement.resolveImportSource());
|
||||
if (source != null && source.getParent() == element.getContainingFile().getContainingDirectory()) {
|
||||
myResult = source;
|
||||
addNameDefiner(fromImportStatement);
|
||||
|
||||
Reference in New Issue
Block a user