[ty] follow the breaking API changes made in salsa-rs/salsa#1015 (#21117)

This commit is contained in:
Shunsuke Shibayama 2025-10-29 23:56:12 +09:00 committed by GitHub
parent 8b22fd1a5f
commit 83a00c0ac8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 80 additions and 15 deletions

6
Cargo.lock generated
View file

@ -3563,7 +3563,7 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]] [[package]]
name = "salsa" name = "salsa"
version = "0.24.0" version = "0.24.0"
source = "git+https://github.com/salsa-rs/salsa.git?rev=25b3ef146cfa2615f4ec82760bd0c22b454d0a12#25b3ef146cfa2615f4ec82760bd0c22b454d0a12" source = "git+https://github.com/salsa-rs/salsa.git?rev=cdd0b85516a52c18b8a6d17a2279a96ed6c3e198#cdd0b85516a52c18b8a6d17a2279a96ed6c3e198"
dependencies = [ dependencies = [
"boxcar", "boxcar",
"compact_str", "compact_str",
@ -3587,12 +3587,12 @@ dependencies = [
[[package]] [[package]]
name = "salsa-macro-rules" name = "salsa-macro-rules"
version = "0.24.0" version = "0.24.0"
source = "git+https://github.com/salsa-rs/salsa.git?rev=25b3ef146cfa2615f4ec82760bd0c22b454d0a12#25b3ef146cfa2615f4ec82760bd0c22b454d0a12" source = "git+https://github.com/salsa-rs/salsa.git?rev=cdd0b85516a52c18b8a6d17a2279a96ed6c3e198#cdd0b85516a52c18b8a6d17a2279a96ed6c3e198"
[[package]] [[package]]
name = "salsa-macros" name = "salsa-macros"
version = "0.24.0" version = "0.24.0"
source = "git+https://github.com/salsa-rs/salsa.git?rev=25b3ef146cfa2615f4ec82760bd0c22b454d0a12#25b3ef146cfa2615f4ec82760bd0c22b454d0a12" source = "git+https://github.com/salsa-rs/salsa.git?rev=cdd0b85516a52c18b8a6d17a2279a96ed6c3e198#cdd0b85516a52c18b8a6d17a2279a96ed6c3e198"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",

View file

@ -146,7 +146,7 @@ regex-automata = { version = "0.4.9" }
rustc-hash = { version = "2.0.0" } rustc-hash = { version = "2.0.0" }
rustc-stable-hash = { version = "0.1.2" } rustc-stable-hash = { version = "0.1.2" }
# When updating salsa, make sure to also update the revision in `fuzz/Cargo.toml` # When updating salsa, make sure to also update the revision in `fuzz/Cargo.toml`
salsa = { git = "https://github.com/salsa-rs/salsa.git", rev = "25b3ef146cfa2615f4ec82760bd0c22b454d0a12", default-features = false, features = [ salsa = { git = "https://github.com/salsa-rs/salsa.git", rev = "cdd0b85516a52c18b8a6d17a2279a96ed6c3e198", default-features = false, features = [
"compact_str", "compact_str",
"macros", "macros",
"salsa_unstable", "salsa_unstable",

View file

@ -10,7 +10,11 @@ use crate::semantic_index::{SemanticIndex, semantic_index};
use crate::types::{Truthiness, Type, TypeContext, infer_expression_types}; use crate::types::{Truthiness, Type, TypeContext, infer_expression_types};
use crate::{Db, ModuleName, resolve_module}; use crate::{Db, ModuleName, resolve_module};
fn dunder_all_names_cycle_initial(_db: &dyn Db, _file: File) -> Option<FxHashSet<Name>> { fn dunder_all_names_cycle_initial(
_db: &dyn Db,
_id: salsa::Id,
_file: File,
) -> Option<FxHashSet<Name>> {
None None
} }

View file

@ -697,6 +697,7 @@ impl<'db> From<Place<'db>> for PlaceAndQualifiers<'db> {
fn place_cycle_initial<'db>( fn place_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_scope: ScopeId<'db>, _scope: ScopeId<'db>,
_place_id: ScopedPlaceId, _place_id: ScopedPlaceId,
_requires_explicit_reexport: RequiresExplicitReExport, _requires_explicit_reexport: RequiresExplicitReExport,
@ -1528,7 +1529,10 @@ mod implicit_globals {
.collect() .collect()
} }
fn module_type_symbols_initial(_db: &dyn Db) -> smallvec::SmallVec<[ast::name::Name; 8]> { fn module_type_symbols_initial(
_db: &dyn Db,
_id: salsa::Id,
) -> smallvec::SmallVec<[ast::name::Name; 8]> {
smallvec::SmallVec::default() smallvec::SmallVec::default()
} }

View file

@ -30,7 +30,7 @@ use rustc_hash::FxHashMap;
use crate::{Db, module_name::ModuleName, resolve_module}; use crate::{Db, module_name::ModuleName, resolve_module};
fn exports_cycle_initial(_db: &dyn Db, _file: File) -> Box<[Name]> { fn exports_cycle_initial(_db: &dyn Db, _id: salsa::Id, _file: File) -> Box<[Name]> {
Box::default() Box::default()
} }

View file

@ -371,6 +371,7 @@ impl Default for MemberLookupPolicy {
fn member_lookup_cycle_initial<'db>( fn member_lookup_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: Type<'db>, _self: Type<'db>,
_name: Name, _name: Name,
_policy: MemberLookupPolicy, _policy: MemberLookupPolicy,
@ -380,6 +381,7 @@ fn member_lookup_cycle_initial<'db>(
fn class_lookup_cycle_initial<'db>( fn class_lookup_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: Type<'db>, _self: Type<'db>,
_name: Name, _name: Name,
_policy: MemberLookupPolicy, _policy: MemberLookupPolicy,
@ -389,6 +391,7 @@ fn class_lookup_cycle_initial<'db>(
fn variance_cycle_initial<'db, T>( fn variance_cycle_initial<'db, T>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: T, _self: T,
_typevar: BoundTypeVarInstance<'db>, _typevar: BoundTypeVarInstance<'db>,
) -> TypeVarVariance { ) -> TypeVarVariance {
@ -7420,6 +7423,7 @@ impl<'db> VarianceInferable<'db> for Type<'db> {
#[allow(clippy::trivially_copy_pass_by_ref)] #[allow(clippy::trivially_copy_pass_by_ref)]
fn is_redundant_with_cycle_initial<'db>( fn is_redundant_with_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_subtype: Type<'db>, _subtype: Type<'db>,
_supertype: Type<'db>, _supertype: Type<'db>,
) -> bool { ) -> bool {
@ -7428,6 +7432,7 @@ fn is_redundant_with_cycle_initial<'db>(
fn apply_specialization_cycle_initial<'db>( fn apply_specialization_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: Type<'db>, _self: Type<'db>,
_specialization: Specialization<'db>, _specialization: Specialization<'db>,
) -> Type<'db> { ) -> Type<'db> {
@ -8498,6 +8503,7 @@ impl<'db> TypeVarInstance<'db> {
fn lazy_bound_or_constraints_cycle_initial<'db>( fn lazy_bound_or_constraints_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: TypeVarInstance<'db>, _self: TypeVarInstance<'db>,
) -> Option<TypeVarBoundOrConstraints<'db>> { ) -> Option<TypeVarBoundOrConstraints<'db>> {
None None
@ -8505,6 +8511,7 @@ fn lazy_bound_or_constraints_cycle_initial<'db>(
fn lazy_default_cycle_initial<'db>( fn lazy_default_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: TypeVarInstance<'db>, _self: TypeVarInstance<'db>,
) -> Option<Type<'db>> { ) -> Option<Type<'db>> {
None None
@ -10032,6 +10039,7 @@ fn walk_bound_method_type<'db, V: visitor::TypeVisitor<'db> + ?Sized>(
fn into_callable_type_cycle_initial<'db>( fn into_callable_type_cycle_initial<'db>(
db: &'db dyn Db, db: &'db dyn Db,
_id: salsa::Id,
_self: BoundMethodType<'db>, _self: BoundMethodType<'db>,
) -> CallableType<'db> { ) -> CallableType<'db> {
CallableType::bottom(db) CallableType::bottom(db)
@ -11007,12 +11015,17 @@ impl<'db> PEP695TypeAliasType<'db> {
fn generic_context_cycle_initial<'db>( fn generic_context_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: PEP695TypeAliasType<'db>, _self: PEP695TypeAliasType<'db>,
) -> Option<GenericContext<'db>> { ) -> Option<GenericContext<'db>> {
None None
} }
fn value_type_cycle_initial<'db>(_db: &'db dyn Db, _self: PEP695TypeAliasType<'db>) -> Type<'db> { fn value_type_cycle_initial<'db>(
_db: &'db dyn Db,
_id: salsa::Id,
_self: PEP695TypeAliasType<'db>,
) -> Type<'db> {
Type::Never Type::Never
} }

View file

@ -71,6 +71,7 @@ use rustc_hash::FxHashSet;
fn explicit_bases_cycle_initial<'db>( fn explicit_bases_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: ClassLiteral<'db>, _self: ClassLiteral<'db>,
) -> Box<[Type<'db>]> { ) -> Box<[Type<'db>]> {
Box::default() Box::default()
@ -78,6 +79,7 @@ fn explicit_bases_cycle_initial<'db>(
fn inheritance_cycle_initial<'db>( fn inheritance_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: ClassLiteral<'db>, _self: ClassLiteral<'db>,
) -> Option<InheritanceCycle> { ) -> Option<InheritanceCycle> {
None None
@ -85,6 +87,7 @@ fn inheritance_cycle_initial<'db>(
fn implicit_attribute_initial<'db>( fn implicit_attribute_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_class_body_scope: ScopeId<'db>, _class_body_scope: ScopeId<'db>,
_name: String, _name: String,
_target_method_decorator: MethodDecorator, _target_method_decorator: MethodDecorator,
@ -94,6 +97,7 @@ fn implicit_attribute_initial<'db>(
fn try_mro_cycle_initial<'db>( fn try_mro_cycle_initial<'db>(
db: &'db dyn Db, db: &'db dyn Db,
_id: salsa::Id,
self_: ClassLiteral<'db>, self_: ClassLiteral<'db>,
specialization: Option<Specialization<'db>>, specialization: Option<Specialization<'db>>,
) -> Result<Mro<'db>, MroError<'db>> { ) -> Result<Mro<'db>, MroError<'db>> {
@ -104,13 +108,18 @@ fn try_mro_cycle_initial<'db>(
} }
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn is_typed_dict_cycle_initial<'db>(_db: &'db dyn Db, _self: ClassLiteral<'db>) -> bool { fn is_typed_dict_cycle_initial<'db>(
_db: &'db dyn Db,
_id: salsa::Id,
_self: ClassLiteral<'db>,
) -> bool {
false false
} }
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn try_metaclass_cycle_initial<'db>( fn try_metaclass_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self_: ClassLiteral<'db>, _self_: ClassLiteral<'db>,
) -> Result<(Type<'db>, Option<DataclassTransformerParams<'db>>), MetaclassError<'db>> { ) -> Result<(Type<'db>, Option<DataclassTransformerParams<'db>>), MetaclassError<'db>> {
Err(MetaclassError { Err(MetaclassError {
@ -169,6 +178,7 @@ impl<'db> CodeGeneratorKind<'db> {
fn code_generator_of_class_initial<'db>( fn code_generator_of_class_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_class: ClassLiteral<'db>, _class: ClassLiteral<'db>,
_specialization: Option<Specialization<'db>>, _specialization: Option<Specialization<'db>>,
) -> Option<CodeGeneratorKind<'db>> { ) -> Option<CodeGeneratorKind<'db>> {
@ -1181,7 +1191,11 @@ impl<'db> ClassType<'db> {
} }
} }
fn into_callable_cycle_initial<'db>(_db: &'db dyn Db, _self: ClassType<'db>) -> Type<'db> { fn into_callable_cycle_initial<'db>(
_db: &'db dyn Db,
_id: salsa::Id,
_self: ClassType<'db>,
) -> Type<'db> {
Type::Never Type::Never
} }
@ -1334,6 +1348,7 @@ impl get_size2::GetSize for ClassLiteral<'_> {}
fn generic_context_cycle_initial<'db>( fn generic_context_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: ClassLiteral<'db>, _self: ClassLiteral<'db>,
) -> Option<GenericContext<'db>> { ) -> Option<GenericContext<'db>> {
None None

View file

@ -39,6 +39,7 @@ impl EnumMetadata<'_> {
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
fn enum_metadata_cycle_initial<'db>( fn enum_metadata_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_class: ClassLiteral<'db>, _class: ClassLiteral<'db>,
) -> Option<EnumMetadata<'db>> { ) -> Option<EnumMetadata<'db>> {
Some(EnumMetadata::empty()) Some(EnumMetadata::empty())

View file

@ -1195,6 +1195,7 @@ fn is_mode_with_nontrivial_return_type<'db>(db: &'db dyn Db, mode: Type<'db>) ->
fn signature_cycle_initial<'db>( fn signature_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_function: FunctionType<'db>, _function: FunctionType<'db>,
) -> CallableSignature<'db> { ) -> CallableSignature<'db> {
CallableSignature::single(Signature::bottom()) CallableSignature::single(Signature::bottom())
@ -1202,6 +1203,7 @@ fn signature_cycle_initial<'db>(
fn last_definition_signature_cycle_initial<'db>( fn last_definition_signature_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_function: FunctionType<'db>, _function: FunctionType<'db>,
) -> Signature<'db> { ) -> Signature<'db> {
Signature::bottom() Signature::bottom()

View file

@ -627,6 +627,7 @@ impl<'db> GenericContext<'db> {
fn inferable_typevars_cycle_initial<'db>( fn inferable_typevars_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_self: GenericContext<'db>, _self: GenericContext<'db>,
) -> FxHashSet<BoundTypeVarIdentity<'db>> { ) -> FxHashSet<BoundTypeVarIdentity<'db>> {
FxHashSet::default() FxHashSet::default()

View file

@ -81,7 +81,11 @@ pub(crate) fn infer_scope_types<'db>(db: &'db dyn Db, scope: ScopeId<'db>) -> Sc
TypeInferenceBuilder::new(db, InferenceRegion::Scope(scope), index, &module).finish_scope() TypeInferenceBuilder::new(db, InferenceRegion::Scope(scope), index, &module).finish_scope()
} }
fn scope_cycle_initial<'db>(_db: &'db dyn Db, scope: ScopeId<'db>) -> ScopeInference<'db> { fn scope_cycle_initial<'db>(
_db: &'db dyn Db,
_id: salsa::Id,
scope: ScopeId<'db>,
) -> ScopeInference<'db> {
ScopeInference::cycle_initial(scope) ScopeInference::cycle_initial(scope)
} }
@ -126,6 +130,7 @@ fn definition_cycle_recover<'db>(
fn definition_cycle_initial<'db>( fn definition_cycle_initial<'db>(
db: &'db dyn Db, db: &'db dyn Db,
_id: salsa::Id,
definition: Definition<'db>, definition: Definition<'db>,
) -> DefinitionInference<'db> { ) -> DefinitionInference<'db> {
DefinitionInference::cycle_initial(definition.scope(db)) DefinitionInference::cycle_initial(definition.scope(db))
@ -158,6 +163,7 @@ pub(crate) fn infer_deferred_types<'db>(
fn deferred_cycle_initial<'db>( fn deferred_cycle_initial<'db>(
db: &'db dyn Db, db: &'db dyn Db,
_id: salsa::Id,
definition: Definition<'db>, definition: Definition<'db>,
) -> DefinitionInference<'db> { ) -> DefinitionInference<'db> {
DefinitionInference::cycle_initial(definition.scope(db)) DefinitionInference::cycle_initial(definition.scope(db))
@ -240,6 +246,7 @@ fn expression_cycle_recover<'db>(
fn expression_cycle_initial<'db>( fn expression_cycle_initial<'db>(
db: &'db dyn Db, db: &'db dyn Db,
_id: salsa::Id,
input: InferExpression<'db>, input: InferExpression<'db>,
) -> ExpressionInference<'db> { ) -> ExpressionInference<'db> {
ExpressionInference::cycle_initial(input.expression(db).scope(db)) ExpressionInference::cycle_initial(input.expression(db).scope(db))
@ -287,6 +294,7 @@ fn infer_expression_type_impl<'db>(db: &'db dyn Db, input: InferExpression<'db>)
fn single_expression_cycle_initial<'db>( fn single_expression_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_input: InferExpression<'db>, _input: InferExpression<'db>,
) -> Type<'db> { ) -> Type<'db> {
Type::Never Type::Never
@ -399,6 +407,7 @@ pub(crate) fn static_expression_truthiness<'db>(
fn static_expression_truthiness_cycle_initial<'db>( fn static_expression_truthiness_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_expression: Expression<'db>, _expression: Expression<'db>,
) -> Truthiness { ) -> Truthiness {
Truthiness::Ambiguous Truthiness::Ambiguous
@ -422,7 +431,11 @@ pub(super) fn infer_unpack_types<'db>(db: &'db dyn Db, unpack: Unpack<'db>) -> U
unpacker.finish() unpacker.finish()
} }
fn unpack_cycle_initial<'db>(_db: &'db dyn Db, _unpack: Unpack<'db>) -> UnpackResult<'db> { fn unpack_cycle_initial<'db>(
_db: &'db dyn Db,
_id: salsa::Id,
_unpack: Unpack<'db>,
) -> UnpackResult<'db> {
UnpackResult::cycle_initial(Type::Never) UnpackResult::cycle_initial(Type::Never)
} }

View file

@ -666,7 +666,12 @@ impl<'db> ProtocolInstanceType<'db> {
.is_always_satisfied(db) .is_always_satisfied(db)
} }
fn initial<'db>(_db: &'db dyn Db, _value: ProtocolInstanceType<'db>, _: ()) -> bool { fn initial<'db>(
_db: &'db dyn Db,
_id: salsa::Id,
_value: ProtocolInstanceType<'db>,
_: (),
) -> bool {
true true
} }

View file

@ -120,6 +120,7 @@ fn all_negative_narrowing_constraints_for_pattern<'db>(
fn constraints_for_expression_cycle_initial<'db>( fn constraints_for_expression_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_expression: Expression<'db>, _expression: Expression<'db>,
) -> Option<NarrowingConstraints<'db>> { ) -> Option<NarrowingConstraints<'db>> {
None None
@ -127,6 +128,7 @@ fn constraints_for_expression_cycle_initial<'db>(
fn negative_constraints_for_expression_cycle_initial<'db>( fn negative_constraints_for_expression_cycle_initial<'db>(
_db: &'db dyn Db, _db: &'db dyn Db,
_id: salsa::Id,
_expression: Expression<'db>, _expression: Expression<'db>,
) -> Option<NarrowingConstraints<'db>> { ) -> Option<NarrowingConstraints<'db>> {
None None

View file

@ -866,6 +866,7 @@ fn cached_protocol_interface<'db>(
#[allow(clippy::trivially_copy_pass_by_ref)] #[allow(clippy::trivially_copy_pass_by_ref)]
fn proto_interface_cycle_initial<'db>( fn proto_interface_cycle_initial<'db>(
db: &'db dyn Db, db: &'db dyn Db,
_id: salsa::Id,
_class: ClassType<'db>, _class: ClassType<'db>,
) -> ProtocolInterface<'db> { ) -> ProtocolInterface<'db> {
ProtocolInterface::empty(db) ProtocolInterface::empty(db)

View file

@ -290,7 +290,11 @@ impl<'db> TupleType<'db> {
} }
} }
fn to_class_type_cycle_initial<'db>(db: &'db dyn Db, self_: TupleType<'db>) -> ClassType<'db> { fn to_class_type_cycle_initial<'db>(
db: &'db dyn Db,
_id: salsa::Id,
self_: TupleType<'db>,
) -> ClassType<'db> {
let tuple_class = KnownClass::Tuple let tuple_class = KnownClass::Tuple
.try_to_class_literal(db) .try_to_class_literal(db)
.expect("Typeshed should always have a `tuple` class in `builtins.pyi`"); .expect("Typeshed should always have a `tuple` class in `builtins.pyi`");

View file

@ -30,7 +30,7 @@ ty_python_semantic = { path = "../crates/ty_python_semantic" }
ty_vendored = { path = "../crates/ty_vendored" } ty_vendored = { path = "../crates/ty_vendored" }
libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer", default-features = false } libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer", default-features = false }
salsa = { git = "https://github.com/salsa-rs/salsa.git", rev = "25b3ef146cfa2615f4ec82760bd0c22b454d0a12", default-features = false, features = [ salsa = { git = "https://github.com/salsa-rs/salsa.git", rev = "cdd0b85516a52c18b8a6d17a2279a96ed6c3e198", default-features = false, features = [
"compact_str", "compact_str",
"macros", "macros",
"salsa_unstable", "salsa_unstable",