mirror of https://github.com/astral-sh/ruff
chore: minor fix
Signed-off-by: 11happy <bhuminjaysoni@gmail.com>
This commit is contained in:
parent
b49c1a8252
commit
5c19faaec0
|
|
@ -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"),
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue