From c5e20505f80e3fd7adc4b3a191049fbc42bbbeee Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Wed, 28 Jun 2023 15:08:10 -0400 Subject: [PATCH] Remove an unsafe access in the resolver (#5428) --- crates/ruff_python_resolver/src/resolver.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/crates/ruff_python_resolver/src/resolver.rs b/crates/ruff_python_resolver/src/resolver.rs index 6c8e076eb9..86b2d5e5b8 100644 --- a/crates/ruff_python_resolver/src/resolver.rs +++ b/crates/ruff_python_resolver/src/resolver.rs @@ -173,8 +173,11 @@ fn resolve_module_descriptor( resolved_paths.len() == module_descriptor.name_parts.len() }; - let is_partly_resolved = - !resolved_paths.is_empty() && resolved_paths.len() < module_descriptor.name_parts.len(); + let is_partly_resolved = if resolved_paths.is_empty() { + false + } else { + resolved_paths.len() < module_descriptor.name_parts.len() + }; ImportResult { is_relative: false, @@ -286,9 +289,10 @@ fn resolve_best_absolute_import( // If we resolved to a namespace package, ensure that all imported symbols are // present in the namespace package's "implicit" imports. if typings_import.is_namespace_package - && typings_import.resolved_paths[typings_import.resolved_paths.len() - 1] - .as_os_str() - .is_empty() + && typings_import + .resolved_paths + .last() + .map_or(false, |path| path.as_os_str().is_empty()) { if typings_import .implicit_imports