mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-19 10:00:42 +00:00
Move runtime execution context into add_reference calls (#6003)
This commit is contained in:
parent
4aac801277
commit
4b2ec7d562
2 changed files with 14 additions and 27 deletions
|
@ -49,9 +49,9 @@ use ruff_python_ast::visitor::{walk_except_handler, walk_pattern, Visitor};
|
||||||
use ruff_python_ast::{cast, helpers, str, visitor};
|
use ruff_python_ast::{cast, helpers, str, visitor};
|
||||||
use ruff_python_semantic::analyze::{branch_detection, typing, visibility};
|
use ruff_python_semantic::analyze::{branch_detection, typing, visibility};
|
||||||
use ruff_python_semantic::{
|
use ruff_python_semantic::{
|
||||||
Binding, BindingFlags, BindingId, BindingKind, ContextualizedDefinition, Exceptions,
|
Binding, BindingFlags, BindingId, BindingKind, ContextualizedDefinition, Exceptions, Export,
|
||||||
ExecutionContext, Export, FromImport, Globals, Import, Module, ModuleKind, ScopeId, ScopeKind,
|
FromImport, Globals, Import, Module, ModuleKind, ScopeId, ScopeKind, SemanticModel,
|
||||||
SemanticModel, SemanticModelFlags, StarImport, SubmoduleImport,
|
SemanticModelFlags, StarImport, SubmoduleImport,
|
||||||
};
|
};
|
||||||
use ruff_python_stdlib::builtins::{BUILTINS, MAGIC_GLOBALS};
|
use ruff_python_stdlib::builtins::{BUILTINS, MAGIC_GLOBALS};
|
||||||
use ruff_python_stdlib::path::is_python_stub_file;
|
use ruff_python_stdlib::path::is_python_stub_file;
|
||||||
|
@ -1835,11 +1835,7 @@ where
|
||||||
for name in names {
|
for name in names {
|
||||||
if let Some((scope_id, binding_id)) = self.semantic.nonlocal(name) {
|
if let Some((scope_id, binding_id)) = self.semantic.nonlocal(name) {
|
||||||
// Mark the binding as "used".
|
// Mark the binding as "used".
|
||||||
self.semantic.add_local_reference(
|
self.semantic.add_local_reference(binding_id, name.range());
|
||||||
binding_id,
|
|
||||||
name.range(),
|
|
||||||
ExecutionContext::Runtime,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Mark the binding in the enclosing scope as "rebound" in the current
|
// Mark the binding in the enclosing scope as "rebound" in the current
|
||||||
// scope.
|
// scope.
|
||||||
|
@ -4826,8 +4822,7 @@ impl<'a> Checker<'a> {
|
||||||
for (name, range) in exports {
|
for (name, range) in exports {
|
||||||
if let Some(binding_id) = self.semantic.global_scope().get(name) {
|
if let Some(binding_id) = self.semantic.global_scope().get(name) {
|
||||||
// Mark anything referenced in `__all__` as used.
|
// Mark anything referenced in `__all__` as used.
|
||||||
self.semantic
|
self.semantic.add_global_reference(binding_id, range);
|
||||||
.add_global_reference(binding_id, range, ExecutionContext::Runtime);
|
|
||||||
} else {
|
} else {
|
||||||
if self.semantic.global_scope().uses_star_imports() {
|
if self.semantic.global_scope().uses_star_imports() {
|
||||||
if self.enabled(Rule::UndefinedLocalWithImportStarUsage) {
|
if self.enabled(Rule::UndefinedLocalWithImportStarUsage) {
|
||||||
|
|
|
@ -257,7 +257,7 @@ impl<'a> SemanticModel<'a> {
|
||||||
.get(symbol)
|
.get(symbol)
|
||||||
.map_or(true, |binding_id| {
|
.map_or(true, |binding_id| {
|
||||||
// Treat the deletion of a name as a reference to that name.
|
// Treat the deletion of a name as a reference to that name.
|
||||||
self.add_local_reference(binding_id, range, ExecutionContext::Runtime);
|
self.add_local_reference(binding_id, range);
|
||||||
self.bindings[binding_id].is_unbound()
|
self.bindings[binding_id].is_unbound()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -917,26 +917,18 @@ impl<'a> SemanticModel<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Add a reference to the given [`BindingId`] in the local scope.
|
/// Add a reference to the given [`BindingId`] in the local scope.
|
||||||
pub fn add_local_reference(
|
pub fn add_local_reference(&mut self, binding_id: BindingId, range: TextRange) {
|
||||||
&mut self,
|
let reference_id =
|
||||||
binding_id: BindingId,
|
self.resolved_references
|
||||||
range: TextRange,
|
.push(self.scope_id, range, ExecutionContext::Runtime);
|
||||||
context: ExecutionContext,
|
|
||||||
) {
|
|
||||||
let reference_id = self.resolved_references.push(self.scope_id, range, context);
|
|
||||||
self.bindings[binding_id].references.push(reference_id);
|
self.bindings[binding_id].references.push(reference_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Add a reference to the given [`BindingId`] in the global scope.
|
/// Add a reference to the given [`BindingId`] in the global scope.
|
||||||
pub fn add_global_reference(
|
pub fn add_global_reference(&mut self, binding_id: BindingId, range: TextRange) {
|
||||||
&mut self,
|
let reference_id =
|
||||||
binding_id: BindingId,
|
self.resolved_references
|
||||||
range: TextRange,
|
.push(ScopeId::global(), range, ExecutionContext::Runtime);
|
||||||
context: ExecutionContext,
|
|
||||||
) {
|
|
||||||
let reference_id = self
|
|
||||||
.resolved_references
|
|
||||||
.push(ScopeId::global(), range, context);
|
|
||||||
self.bindings[binding_id].references.push(reference_id);
|
self.bindings[binding_id].references.push(reference_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue