mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 21:34:57 +00:00
[ty] Sync vendored typeshed stubs (#20083)
Co-authored-by: typeshedbot <> Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
This commit is contained in:
parent
db423ee978
commit
ba47010150
84 changed files with 1733 additions and 846 deletions
|
@ -1409,7 +1409,12 @@ mod implicit_globals {
|
|||
/// Conceptually this function could be a `Set` rather than a list,
|
||||
/// but the number of symbols declared in this scope is likely to be very small,
|
||||
/// so the cost of hashing the names is likely to be more expensive than it's worth.
|
||||
#[salsa::tracked(returns(deref), heap_size=ruff_memory_usage::heap_size)]
|
||||
#[salsa::tracked(
|
||||
returns(deref),
|
||||
cycle_initial=module_type_symbols_initial,
|
||||
cycle_fn=module_type_symbols_cycle_recover,
|
||||
heap_size=ruff_memory_usage::heap_size
|
||||
)]
|
||||
fn module_type_symbols<'db>(db: &'db dyn Db) -> smallvec::SmallVec<[ast::name::Name; 8]> {
|
||||
let Some(module_type) = KnownClass::ModuleType
|
||||
.to_class_literal(db)
|
||||
|
@ -1437,6 +1442,18 @@ mod implicit_globals {
|
|||
.collect()
|
||||
}
|
||||
|
||||
fn module_type_symbols_initial(_db: &dyn Db) -> smallvec::SmallVec<[ast::name::Name; 8]> {
|
||||
smallvec::SmallVec::default()
|
||||
}
|
||||
|
||||
fn module_type_symbols_cycle_recover(
|
||||
_db: &dyn Db,
|
||||
_value: &smallvec::SmallVec<[ast::name::Name; 8]>,
|
||||
_count: u32,
|
||||
) -> salsa::CycleRecoveryAction<smallvec::SmallVec<[ast::name::Name; 8]>> {
|
||||
salsa::CycleRecoveryAction::Iterate
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
|
@ -11726,6 +11726,14 @@ mod tests {
|
|||
fn unbound_symbol_no_reachability_constraint_check() {
|
||||
let mut db = setup_db();
|
||||
|
||||
// First, type-check a random other file so that we cache a result for the `module_type_symbols`
|
||||
// query (which often encounters cycles due to `types.pyi` importing `typing_extensions` and
|
||||
// `typing_extensions.pyi` importing `types`). Clear the events afterwards so that unrelated
|
||||
// cycles from that query don't interfere with our test.
|
||||
db.write_dedented("src/wherever.py", "print(x)").unwrap();
|
||||
assert_file_diagnostics(&db, "src/wherever.py", &["Name `x` used when not defined"]);
|
||||
db.clear_salsa_events();
|
||||
|
||||
// If the bug we are testing for is not fixed, what happens is that when inferring the
|
||||
// `flag: bool = True` definitions, we look up `bool` as a deferred name (thus from end of
|
||||
// scope), and because of the early return its "unbound" binding has a reachability
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue