Skip to content

Commit a9b2876

Browse files
authored
[ty] Move TypeVar-related code to a types::typevar submodule (#23710)
1 parent d7efaf4 commit a9b2876

13 files changed

Lines changed: 1516 additions & 1474 deletions

File tree

crates/ty/docs/rules.md

Lines changed: 103 additions & 103 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/ty_python_semantic/src/types.rs

Lines changed: 8 additions & 1329 deletions
Large diffs are not rendered by default.

crates/ty_python_semantic/src/types/bound_super.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ use crate::{
1010
types::{
1111
BoundTypeVarInstance, ClassBase, ClassType, DynamicType, IntersectionBuilder, KnownClass,
1212
MemberLookupPolicy, NominalInstanceType, SpecialFormType, SubclassOfInner, SubclassOfType,
13-
Type, TypeVarBoundOrConstraints, TypeVarConstraints, TypeVarInstance, UnionBuilder,
13+
Type, TypeVarBoundOrConstraints, UnionBuilder,
1414
constraints::{ConstraintSet, ConstraintSetBuilder},
1515
context::InferContext,
1616
diagnostic::{INVALID_SUPER_ARGUMENT, UNAVAILABLE_IMPLICIT_SUPER_ARGUMENTS},
1717
relation::{HasRelationToVisitor, IsDisjointVisitor},
18-
todo_type, visitor,
18+
todo_type,
19+
typevar::{TypeVarConstraints, TypeVarInstance},
20+
visitor,
1921
},
2022
};
2123

crates/ty_python_semantic/src/types/call/bind.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ use crate::types::generics::{
4444
use crate::types::known_instance::FieldInstance;
4545
use crate::types::signatures::{Parameter, ParameterForm, ParameterKind, Parameters};
4646
use crate::types::tuple::{TupleLength, TupleSpec, TupleType};
47+
use crate::types::typevar::BoundTypeVarIdentity;
4748
use crate::types::{
48-
BoundMethodType, BoundTypeVarIdentity, BoundTypeVarInstance, CallableSignature, CallableType,
49-
CallableTypeKind, ClassLiteral, DATACLASS_FLAGS, DataclassFlags, DataclassParams,
50-
EvaluationMode, GenericAlias, InternedConstraintSet, IntersectionType, KnownBoundMethodType,
51-
KnownClass, KnownInstanceType, LiteralValueTypeKind, MemberLookupPolicy, NominalInstanceType,
52-
PropertyInstanceType, SpecialFormType, TypeAliasType, TypeContext, TypeVarBoundOrConstraints,
53-
TypeVarVariance, UnionBuilder, UnionType, WrapperDescriptorKind, enums, list_members,
49+
BoundMethodType, BoundTypeVarInstance, CallableSignature, CallableType, CallableTypeKind,
50+
ClassLiteral, DATACLASS_FLAGS, DataclassFlags, DataclassParams, EvaluationMode, GenericAlias,
51+
InternedConstraintSet, IntersectionType, KnownBoundMethodType, KnownClass, KnownInstanceType,
52+
LiteralValueTypeKind, MemberLookupPolicy, NominalInstanceType, PropertyInstanceType,
53+
SpecialFormType, TypeAliasType, TypeContext, TypeVarBoundOrConstraints, TypeVarVariance,
54+
UnionBuilder, UnionType, WrapperDescriptorKind, enums, list_members,
5455
};
5556
use crate::{DisplaySettings, Program};
5657
use ruff_db::diagnostic::{Annotation, Diagnostic, SubDiagnostic, SubDiagnosticSeverity};

crates/ty_python_semantic/src/types/constraints.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,12 @@ use smallvec::SmallVec;
8080

8181
use crate::types::class::GenericAlias;
8282
use crate::types::generics::InferableTypeVars;
83+
use crate::types::typevar::{BoundTypeVarIdentity, walk_bound_type_var_type};
8384
use crate::types::visitor::{
8485
TypeCollector, TypeVisitor, any_over_type, walk_type_with_recursion_guard,
8586
};
8687
use crate::types::{
87-
BoundTypeVarIdentity, BoundTypeVarInstance, IntersectionType, Type, TypeVarBoundOrConstraints,
88-
UnionType, walk_bound_type_var_type,
88+
BoundTypeVarInstance, IntersectionType, Type, TypeVarBoundOrConstraints, UnionType,
8989
};
9090
use crate::{Db, FxIndexMap, FxIndexSet};
9191

crates/ty_python_semantic/src/types/diagnostic.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@ use crate::types::string_annotation::{
2626
};
2727
use crate::types::tuple::TupleSpec;
2828
use crate::types::typed_dict::TypedDictSchema;
29+
use crate::types::typevar::TypeVarInstance;
2930
use crate::types::{
3031
BoundTypeVarInstance, ClassType, DynamicType, LintDiagnosticGuard, Protocol,
3132
ProtocolInstanceType, SpecialFormType, SubclassOfInner, Type, TypeContext, binding_type,
3233
protocol_class::ProtocolClass,
3334
};
34-
use crate::types::{KnownInstanceType, MemberLookupPolicy, TypeVarInstance, UnionType};
35+
use crate::types::{KnownInstanceType, MemberLookupPolicy, UnionType};
3536
use crate::{Db, DisplaySettings, FxIndexMap, Program, declare_lint};
3637
use itertools::Itertools;
3738
use ruff_db::{

crates/ty_python_semantic/src/types/display.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ use crate::types::signatures::{
2929
CallableSignature, Parameter, Parameters, ParametersKind, Signature,
3030
};
3131
use crate::types::tuple::TupleSpec;
32+
use crate::types::typevar::BoundTypeVarIdentity;
3233
use crate::types::visitor::TypeVisitor;
3334
use crate::types::{
34-
BindingContext, BoundTypeVarIdentity, CallableType, CallableTypeKind, IntersectionType,
35-
KnownBoundMethodType, KnownClass, KnownInstanceType, LiteralValueType, LiteralValueTypeKind,
36-
MaterializationKind, Protocol, ProtocolInstanceType, SpecialFormType, StringLiteralType,
37-
SubclassOfInner, SubclassOfType, Type, TypeAliasType, TypeGuardLike, TypedDictType, UnionType,
35+
BindingContext, CallableType, CallableTypeKind, IntersectionType, KnownBoundMethodType,
36+
KnownClass, KnownInstanceType, LiteralValueType, LiteralValueTypeKind, MaterializationKind,
37+
Protocol, ProtocolInstanceType, SpecialFormType, StringLiteralType, SubclassOfInner,
38+
SubclassOfType, Type, TypeAliasType, TypeGuardLike, TypedDictType, UnionType,
3839
WrapperDescriptorKind, visitor,
3940
};
4041

crates/ty_python_semantic/src/types/generics.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@ use crate::types::constraints::{
2121
use crate::types::relation::{HasRelationToVisitor, IsDisjointVisitor, TypeRelation};
2222
use crate::types::signatures::{CallableSignature, Parameters};
2323
use crate::types::tuple::{TupleSpec, TupleType, walk_tuple_type};
24+
use crate::types::typevar::{
25+
BoundTypeVarIdentity, TypeVarIdentity, TypeVarInstance, walk_type_var_bounds,
26+
};
2427
use crate::types::variance::VarianceInferable;
2528
use crate::types::visitor::{TypeCollector, TypeVisitor, walk_type_with_recursion_guard};
2629
use crate::types::{
27-
ApplyTypeMappingVisitor, BindingContext, BoundTypeVarIdentity, BoundTypeVarInstance,
28-
CallableType, CallableTypes, ClassLiteral, FindLegacyTypeVarsVisitor, IntersectionType,
29-
KnownClass, KnownInstanceType, MaterializationKind, Type, TypeAliasType, TypeContext,
30-
TypeMapping, TypeVarBoundOrConstraints, TypeVarIdentity, TypeVarInstance, TypeVarKind,
31-
TypeVarVariance, UnionType, declaration_type, walk_manual_pep_695_type_alias,
32-
walk_pep_695_type_alias, walk_type_var_bounds,
30+
ApplyTypeMappingVisitor, BindingContext, BoundTypeVarInstance, CallableType, CallableTypes,
31+
ClassLiteral, FindLegacyTypeVarsVisitor, IntersectionType, KnownClass, KnownInstanceType,
32+
MaterializationKind, Type, TypeAliasType, TypeContext, TypeMapping, TypeVarBoundOrConstraints,
33+
TypeVarKind, TypeVarVariance, UnionType, declaration_type, walk_manual_pep_695_type_alias,
34+
walk_pep_695_type_alias,
3335
};
3436
use crate::{Db, FxIndexMap, FxOrderMap, FxOrderSet};
3537

crates/ty_python_semantic/src/types/infer/builder.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -126,19 +126,21 @@ use crate::types::typed_dict::{
126126
TypedDictAssignmentKind, TypedDictKeyAssignment, validate_typed_dict_constructor,
127127
validate_typed_dict_dict_literal,
128128
};
129+
use crate::types::typevar::{
130+
BoundTypeVarIdentity, TypeVarBoundOrConstraintsEvaluation, TypeVarConstraints,
131+
TypeVarDefaultEvaluation, TypeVarIdentity, TypeVarInstance,
132+
};
129133
use crate::types::visitor::find_over_type;
130134
use crate::types::{
131-
BoundTypeVarIdentity, CallDunderError, CallableBinding, CallableType, CallableTypeKind,
132-
ClassType, DataclassParams, DynamicType, EvaluationMode, GenericAlias, InternedConstraintSet,
133-
InternedType, IntersectionBuilder, IntersectionType, KnownClass, KnownInstanceType, KnownUnion,
135+
CallDunderError, CallableBinding, CallableType, CallableTypeKind, ClassType, DataclassParams,
136+
DynamicType, EvaluationMode, GenericAlias, InternedConstraintSet, InternedType,
137+
IntersectionBuilder, IntersectionType, KnownClass, KnownInstanceType, KnownUnion,
134138
LintDiagnosticGuard, LiteralValueTypeKind, ManualPEP695TypeAliasType, MemberLookupPolicy,
135139
MetaclassCandidate, PEP695TypeAliasType, ParamSpecAttrKind, Parameter, ParameterForm,
136140
Parameters, Signature, SpecialFormType, StaticClassLiteral, SubclassOfType, Truthiness, Type,
137141
TypeAliasType, TypeAndQualifiers, TypeContext, TypeQualifiers, TypeVarBoundOrConstraints,
138-
TypeVarBoundOrConstraintsEvaluation, TypeVarConstraints, TypeVarDefaultEvaluation,
139-
TypeVarIdentity, TypeVarInstance, TypeVarKind, TypeVarVariance, TypedDictType, UnionBuilder,
140-
UnionType, binding_type, definition_expression_type, infer_complete_scope_types,
141-
infer_scope_types, todo_type,
142+
TypeVarKind, TypeVarVariance, TypedDictType, UnionBuilder, UnionType, binding_type,
143+
definition_expression_type, infer_complete_scope_types, infer_scope_types, todo_type,
142144
};
143145
use crate::types::{CallableTypes, overrides};
144146
use crate::types::{ClassBase, add_inferred_python_version_hint_to_diagnostic};
@@ -9645,13 +9647,9 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> {
96459647
typevar.identity(self.db()).definition(self.db()),
96469648
TypeVarKind::Pep613Alias,
96479649
);
9648-
Type::KnownInstance(KnownInstanceType::TypeVar(TypeVarInstance::new(
9649-
self.db(),
9650-
identity,
9651-
typevar._bound_or_constraints(self.db()),
9652-
typevar.explicit_variance(self.db()),
9653-
typevar._default(self.db()),
9654-
)))
9650+
Type::KnownInstance(KnownInstanceType::TypeVar(
9651+
typevar.with_identity(self.db(), identity),
9652+
))
96559653
} else {
96569654
inferred_ty
96579655
};

crates/ty_python_semantic/src/types/infer/builder/binary_expressions.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ use super::TypeInferenceBuilder;
44
use crate::Db;
55
use crate::types::constraints::ConstraintSetBuilder;
66
use crate::types::diagnostic::{DIVISION_BY_ZERO, report_unsupported_binary_operation};
7+
use crate::types::typevar::TypeVarConstraints;
78
use crate::types::{
89
DynamicType, InternedConstraintSet, KnownClass, KnownInstanceType, LiteralValueTypeKind,
9-
MemberLookupPolicy, Type, TypeContext, TypeVarBoundOrConstraints, TypeVarConstraints,
10-
UnionBuilder, UnionTypeInstance,
10+
MemberLookupPolicy, Type, TypeContext, TypeVarBoundOrConstraints, UnionBuilder,
11+
UnionTypeInstance,
1112
};
1213
use ruff_python_ast::PythonVersion;
1314

0 commit comments

Comments
 (0)