mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:48:32 +00:00
Avoid walking past root when resolving imports (#6126)
## Summary Noticed in #5954: we walk _past_ the root rather than stopping _at_ the root when attempting to traverse along the parent path. It's effectively an off-by-one bug.
This commit is contained in:
parent
d317af442f
commit
13af91299d
1 changed files with 21 additions and 30 deletions
|
@ -715,37 +715,28 @@ pub(crate) fn resolve_import<Host: host::Host>(
|
|||
// importing file's directory, then the parent directory, and so on, until the
|
||||
// import root is reached.
|
||||
let root = execution_environment.root.as_path();
|
||||
if source_file.starts_with(root) {
|
||||
let mut current = source_file;
|
||||
while let Some(parent) = current.parent() {
|
||||
if parent == root {
|
||||
break;
|
||||
}
|
||||
|
||||
debug!("Resolving absolute import in parent: {}", parent.display());
|
||||
|
||||
let mut result = resolve_absolute_import(
|
||||
parent,
|
||||
module_descriptor,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
|
||||
if result.is_import_found {
|
||||
if let Some(implicit_imports) = result
|
||||
.implicit_imports
|
||||
.filter(&module_descriptor.imported_symbols)
|
||||
{
|
||||
result.implicit_imports = implicit_imports;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
current = parent;
|
||||
let mut current = source_file;
|
||||
while let Some(parent) = current.parent() {
|
||||
if !parent.starts_with(root) {
|
||||
break;
|
||||
}
|
||||
|
||||
debug!("Resolving absolute import in parent: {}", parent.display());
|
||||
|
||||
let mut result =
|
||||
resolve_absolute_import(parent, module_descriptor, false, false, false, true, false);
|
||||
|
||||
if result.is_import_found {
|
||||
if let Some(implicit_imports) = result
|
||||
.implicit_imports
|
||||
.filter(&module_descriptor.imported_symbols)
|
||||
{
|
||||
result.implicit_imports = implicit_imports;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
current = parent;
|
||||
}
|
||||
|
||||
ImportResult::not_found()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue