mirror of https://github.com/astral-sh/ruff
Use SmallVec for binding references
This commit is contained in:
parent
17d938f078
commit
4b3488b5b2
|
|
@ -9,6 +9,7 @@ use rustpython_parser::ast::{
|
||||||
self, Arg, Arguments, Comprehension, Constant, Excepthandler, Expr, ExprContext, Keyword,
|
self, Arg, Arguments, Comprehension, Constant, Excepthandler, Expr, ExprContext, Keyword,
|
||||||
Operator, Pattern, Ranged, Stmt, Suite, Unaryop,
|
Operator, Pattern, Ranged, Stmt, Suite, Unaryop,
|
||||||
};
|
};
|
||||||
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
use ruff_diagnostics::{Diagnostic, Fix};
|
use ruff_diagnostics::{Diagnostic, Fix};
|
||||||
use ruff_python_ast::all::{extract_all_names, AllNamesFlags};
|
use ruff_python_ast::all::{extract_all_names, AllNamesFlags};
|
||||||
|
|
@ -248,7 +249,7 @@ where
|
||||||
let binding_id = self.semantic_model.bindings.push(Binding {
|
let binding_id = self.semantic_model.bindings.push(Binding {
|
||||||
kind: BindingKind::Global,
|
kind: BindingKind::Global,
|
||||||
range: *range,
|
range: *range,
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context,
|
context,
|
||||||
exceptions,
|
exceptions,
|
||||||
|
|
@ -276,7 +277,7 @@ where
|
||||||
let binding_id = self.semantic_model.bindings.push(Binding {
|
let binding_id = self.semantic_model.bindings.push(Binding {
|
||||||
kind: BindingKind::Nonlocal,
|
kind: BindingKind::Nonlocal,
|
||||||
range: *range,
|
range: *range,
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context,
|
context,
|
||||||
exceptions,
|
exceptions,
|
||||||
|
|
@ -812,7 +813,7 @@ where
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::FutureImportation,
|
kind: BindingKind::FutureImportation,
|
||||||
range: alias.range(),
|
range: alias.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -841,7 +842,7 @@ where
|
||||||
full_name,
|
full_name,
|
||||||
}),
|
}),
|
||||||
range: alias.range(),
|
range: alias.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -856,7 +857,7 @@ where
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::Importation(Importation { name, full_name }),
|
kind: BindingKind::Importation(Importation { name, full_name }),
|
||||||
range: alias.range(),
|
range: alias.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -1091,7 +1092,7 @@ where
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::FutureImportation,
|
kind: BindingKind::FutureImportation,
|
||||||
range: alias.range(),
|
range: alias.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -1161,7 +1162,7 @@ where
|
||||||
full_name,
|
full_name,
|
||||||
}),
|
}),
|
||||||
range: alias.range(),
|
range: alias.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -1882,7 +1883,7 @@ where
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::FunctionDefinition,
|
kind: BindingKind::FunctionDefinition,
|
||||||
range: stmt.range(),
|
range: stmt.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -1906,7 +1907,7 @@ where
|
||||||
let id = self.semantic_model.bindings.push(Binding {
|
let id = self.semantic_model.bindings.push(Binding {
|
||||||
kind: BindingKind::Assignment,
|
kind: BindingKind::Assignment,
|
||||||
range: stmt.range(),
|
range: stmt.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -1970,7 +1971,7 @@ where
|
||||||
let id = self.semantic_model.bindings.push(Binding {
|
let id = self.semantic_model.bindings.push(Binding {
|
||||||
kind: BindingKind::Assignment,
|
kind: BindingKind::Assignment,
|
||||||
range: stmt.range(),
|
range: stmt.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -2157,7 +2158,7 @@ where
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::ClassDefinition,
|
kind: BindingKind::ClassDefinition,
|
||||||
range: stmt.range(),
|
range: stmt.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4111,7 +4112,7 @@ where
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::Argument,
|
kind: BindingKind::Argument,
|
||||||
range: arg.range(),
|
range: arg.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4159,7 +4160,7 @@ where
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::Assignment,
|
kind: BindingKind::Assignment,
|
||||||
range: pattern.range(),
|
range: pattern.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4441,7 +4442,7 @@ impl<'a> Checker<'a> {
|
||||||
kind: BindingKind::Builtin,
|
kind: BindingKind::Builtin,
|
||||||
range: TextRange::default(),
|
range: TextRange::default(),
|
||||||
source: None,
|
source: None,
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
context: ExecutionContext::Runtime,
|
context: ExecutionContext::Runtime,
|
||||||
exceptions: Exceptions::empty(),
|
exceptions: Exceptions::empty(),
|
||||||
flags: BindingFlags::empty(),
|
flags: BindingFlags::empty(),
|
||||||
|
|
@ -4560,7 +4561,7 @@ impl<'a> Checker<'a> {
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::Annotation,
|
kind: BindingKind::Annotation,
|
||||||
range: expr.range(),
|
range: expr.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4576,7 +4577,7 @@ impl<'a> Checker<'a> {
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::LoopVar,
|
kind: BindingKind::LoopVar,
|
||||||
range: expr.range(),
|
range: expr.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4592,7 +4593,7 @@ impl<'a> Checker<'a> {
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::Binding,
|
kind: BindingKind::Binding,
|
||||||
range: expr.range(),
|
range: expr.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4672,7 +4673,7 @@ impl<'a> Checker<'a> {
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::Export(Export { names: all_names }),
|
kind: BindingKind::Export(Export { names: all_names }),
|
||||||
range: expr.range(),
|
range: expr.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4693,7 +4694,7 @@ impl<'a> Checker<'a> {
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::NamedExprAssignment,
|
kind: BindingKind::NamedExprAssignment,
|
||||||
range: expr.range(),
|
range: expr.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
@ -4708,7 +4709,7 @@ impl<'a> Checker<'a> {
|
||||||
Binding {
|
Binding {
|
||||||
kind: BindingKind::Assignment,
|
kind: BindingKind::Assignment,
|
||||||
range: expr.range(),
|
range: expr.range(),
|
||||||
references: Vec::new(),
|
references: SmallVec::new(),
|
||||||
source: self.semantic_model.stmt_id,
|
source: self.semantic_model.stmt_id,
|
||||||
context: self.semantic_model.execution_context(),
|
context: self.semantic_model.execution_context(),
|
||||||
exceptions: self.semantic_model.exceptions(),
|
exceptions: self.semantic_model.exceptions(),
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ use std::ops::{Deref, DerefMut};
|
||||||
|
|
||||||
use bitflags::bitflags;
|
use bitflags::bitflags;
|
||||||
use ruff_text_size::TextRange;
|
use ruff_text_size::TextRange;
|
||||||
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
use ruff_index::{newtype_index, IndexSlice, IndexVec};
|
use ruff_index::{newtype_index, IndexSlice, IndexVec};
|
||||||
use ruff_python_ast::helpers;
|
use ruff_python_ast::helpers;
|
||||||
|
|
@ -20,7 +21,7 @@ pub struct Binding<'a> {
|
||||||
/// The statement in which the [`Binding`] was defined.
|
/// The statement in which the [`Binding`] was defined.
|
||||||
pub source: Option<NodeId>,
|
pub source: Option<NodeId>,
|
||||||
/// The references to the [`Binding`].
|
/// The references to the [`Binding`].
|
||||||
pub references: Vec<ReferenceId>,
|
pub references: SmallVec<[ReferenceId; 4]>,
|
||||||
/// The exceptions that were handled when the [`Binding`] was defined.
|
/// The exceptions that were handled when the [`Binding`] was defined.
|
||||||
pub exceptions: Exceptions,
|
pub exceptions: Exceptions,
|
||||||
/// Flags for the [`Binding`].
|
/// Flags for the [`Binding`].
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue