mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-07 21:25:08 +00:00
[ruff
] Implemented used-dummy-variable
(RUF052
) (#14611)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
parent
a69dfd4a74
commit
bf0fd04e4e
12 changed files with 778 additions and 8 deletions
|
@ -325,9 +325,15 @@ impl<'a> SemanticModel<'a> {
|
|||
}
|
||||
|
||||
/// Return `true` if `member` is an "available" symbol, i.e., a symbol that has not been bound
|
||||
/// in the current scope, or in any containing scope.
|
||||
/// in the current scope currently being visited, or in any containing scope.
|
||||
pub fn is_available(&self, member: &str) -> bool {
|
||||
self.lookup_symbol(member)
|
||||
self.is_available_in_scope(member, self.scope_id)
|
||||
}
|
||||
|
||||
/// Return `true` if `member` is an "available" symbol in a given scope, i.e.,
|
||||
/// a symbol that has not been bound in that current scope, or in any containing scope.
|
||||
pub fn is_available_in_scope(&self, member: &str, scope_id: ScopeId) -> bool {
|
||||
self.lookup_symbol_in_scope(member, scope_id, false)
|
||||
.map(|binding_id| &self.bindings[binding_id])
|
||||
.map_or(true, |binding| binding.kind.is_builtin())
|
||||
}
|
||||
|
@ -620,10 +626,22 @@ impl<'a> SemanticModel<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Lookup a symbol in the current scope. This is a carbon copy of [`Self::resolve_load`], but
|
||||
/// doesn't add any read references to the resolved symbol.
|
||||
/// Lookup a symbol in the current scope.
|
||||
pub fn lookup_symbol(&self, symbol: &str) -> Option<BindingId> {
|
||||
if self.in_forward_reference() {
|
||||
self.lookup_symbol_in_scope(symbol, self.scope_id, self.in_forward_reference())
|
||||
}
|
||||
|
||||
/// Lookup a symbol in a certain scope
|
||||
///
|
||||
/// This is a carbon copy of [`Self::resolve_load`], but
|
||||
/// doesn't add any read references to the resolved symbol.
|
||||
pub fn lookup_symbol_in_scope(
|
||||
&self,
|
||||
symbol: &str,
|
||||
scope_id: ScopeId,
|
||||
in_forward_reference: bool,
|
||||
) -> Option<BindingId> {
|
||||
if in_forward_reference {
|
||||
if let Some(binding_id) = self.scopes.global().get(symbol) {
|
||||
if !self.bindings[binding_id].is_unbound() {
|
||||
return Some(binding_id);
|
||||
|
@ -633,7 +651,7 @@ impl<'a> SemanticModel<'a> {
|
|||
|
||||
let mut seen_function = false;
|
||||
let mut class_variables_visible = true;
|
||||
for (index, scope_id) in self.scopes.ancestor_ids(self.scope_id).enumerate() {
|
||||
for (index, scope_id) in self.scopes.ancestor_ids(scope_id).enumerate() {
|
||||
let scope = &self.scopes[scope_id];
|
||||
if scope.kind.is_class() {
|
||||
if seen_function && matches!(symbol, "__class__") {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue