chore: minor fix

Signed-off-by: 11happy <bhuminjaysoni@gmail.com>
This commit is contained in:
11happy 2025-12-04 12:01:58 +00:00 committed by 11happy
parent b49c1a8252
commit 5c19faaec0
2 changed files with 25 additions and 24 deletions

View File

@ -1008,7 +1008,6 @@ declare_lint! {
/// ///
/// ## References /// ## References
/// - [PEP 696: Type defaults for type parameters](https://peps.python.org/pep-0696/) /// - [PEP 696: Type defaults for type parameters](https://peps.python.org/pep-0696/)
pub(crate) static INVALID_TYPE_PARAM_ORDER = { pub(crate) static INVALID_TYPE_PARAM_ORDER = {
summary: "detects invalid type parameter order", summary: "detects invalid type parameter order",
status: LintStatus::stable("0.0.1-alpha.1"), status: LintStatus::stable("0.0.1-alpha.1"),

View File

@ -56,13 +56,13 @@ use crate::types::class::{CodeGeneratorKind, FieldKind, MetaclassErrorKind, Meth
use crate::types::context::{InNoTypeCheck, InferContext}; use crate::types::context::{InNoTypeCheck, InferContext};
use crate::types::cyclic::CycleDetector; use crate::types::cyclic::CycleDetector;
use crate::types::diagnostic::{ use crate::types::diagnostic::{
self, CALL_NON_CALLABLE, CONFLICTING_DECLARATIONS, CONFLICTING_METACLASS, self, CALL_NON_CALLABLE, CONFLICTING_DECLARATIONS, CONFLICTING_METACLASS, CYCLIC_CLASS_DEFINITION,
CYCLIC_CLASS_DEFINITION, CYCLIC_TYPE_ALIAS_DEFINITION, DIVISION_BY_ZERO, DUPLICATE_KW_ONLY, CYCLIC_TYPE_ALIAS_DEFINITION, DIVISION_BY_ZERO, DUPLICATE_KW_ONLY, INCONSISTENT_MRO,
INCONSISTENT_MRO, INVALID_ARGUMENT_TYPE, INVALID_ASSIGNMENT, INVALID_ATTRIBUTE_ACCESS, INVALID_ARGUMENT_TYPE, INVALID_ASSIGNMENT, INVALID_ATTRIBUTE_ACCESS, INVALID_BASE,
INVALID_BASE, INVALID_DECLARATION, INVALID_GENERIC_CLASS, INVALID_KEY, INVALID_DECLARATION, INVALID_GENERIC_CLASS, INVALID_KEY, INVALID_LEGACY_TYPE_VARIABLE,
INVALID_LEGACY_TYPE_VARIABLE, INVALID_METACLASS, INVALID_NAMED_TUPLE, INVALID_NEWTYPE, INVALID_METACLASS, INVALID_NAMED_TUPLE, INVALID_NEWTYPE, INVALID_OVERLOAD,
INVALID_OVERLOAD, INVALID_PARAMETER_DEFAULT, INVALID_PARAMSPEC, INVALID_PROTOCOL, INVALID_PARAMETER_DEFAULT, INVALID_PARAMSPEC, INVALID_PROTOCOL, INVALID_TYPE_ARGUMENTS,
INVALID_TYPE_ARGUMENTS, INVALID_TYPE_FORM, INVALID_TYPE_GUARD_CALL, INVALID_TYPE_FORM, INVALID_TYPE_GUARD_CALL, INVALID_TYPE_PARAM_ORDER,
INVALID_TYPE_VARIABLE_CONSTRAINTS, IncompatibleBases, NON_SUBSCRIPTABLE, INVALID_TYPE_VARIABLE_CONSTRAINTS, IncompatibleBases, NON_SUBSCRIPTABLE,
POSSIBLY_MISSING_ATTRIBUTE, POSSIBLY_MISSING_IMPLICIT_CALL, POSSIBLY_MISSING_IMPORT, POSSIBLY_MISSING_ATTRIBUTE, POSSIBLY_MISSING_IMPLICIT_CALL, POSSIBLY_MISSING_IMPORT,
SUBCLASS_OF_FINAL_CLASS, UNDEFINED_REVEAL, UNRESOLVED_ATTRIBUTE, UNRESOLVED_GLOBAL, SUBCLASS_OF_FINAL_CLASS, UNDEFINED_REVEAL, UNRESOLVED_ATTRIBUTE, UNRESOLVED_GLOBAL,
@ -950,22 +950,24 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> {
} }
} }
let type_vars = class.typevars_referenced_in_definition(self.db()); if self.context.is_lint_enabled(&INVALID_TYPE_PARAM_ORDER) {
let mut seen_default = false; let type_vars = class.typevars_referenced_in_definition(self.db());
for type_var in type_vars { let mut seen_default = false;
let has_default = type_var for type_var in type_vars {
.typevar(self.db()) let has_default = type_var
.default_type(self.db()) .typevar(self.db())
.is_some(); .default_type(self.db())
if seen_default && !has_default { .is_some();
report_invalid_type_param_order( if seen_default && !has_default {
&self.context, report_invalid_type_param_order(
class, &self.context,
type_var.typevar(self.db()).name(self.db()).as_str(), class,
); type_var.typevar(self.db()).name(self.db()).as_str(),
} );
if has_default { }
seen_default = true; if has_default {
seen_default = true;
}
} }
} }
let scope = class.body_scope(self.db()).scope(self.db()); let scope = class.body_scope(self.db()).scope(self.db());