Use Importer available on Checker (#11513)

## Summary

This PR updates the `FA102` rule logic to use the `Importer` which is
available on the `Checker`.

The main motivation is that this would make updating the `Importer` to
use the `Tokens` struct which will be required to remove the
`lex_starts_at` usage in `Insertion::start_of_block` method.

## Test Plan

`cargo insta test`
This commit is contained in:
Dhruv Manilawala 2024-05-23 16:49:08 +05:30 committed by GitHub
parent 550aa871d3
commit 102b9d930f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -7,7 +7,6 @@ use ruff_python_ast::Expr;
use ruff_text_size::{Ranged, TextSize}; use ruff_text_size::{Ranged, TextSize};
use crate::checkers::ast::Checker; use crate::checkers::ast::Checker;
use crate::importer::Importer;
/// ## What it does /// ## What it does
/// Checks for uses of PEP 585- and PEP 604-style type annotations in Python /// Checks for uses of PEP 585- and PEP 604-style type annotations in Python
@ -87,13 +86,11 @@ impl AlwaysFixableViolation for FutureRequiredTypeAnnotation {
/// FA102 /// FA102
pub(crate) fn future_required_type_annotation(checker: &mut Checker, expr: &Expr, reason: Reason) { pub(crate) fn future_required_type_annotation(checker: &mut Checker, expr: &Expr, reason: Reason) {
let mut diagnostic = Diagnostic::new(FutureRequiredTypeAnnotation { reason }, expr.range()); let mut diagnostic = Diagnostic::new(FutureRequiredTypeAnnotation { reason }, expr.range());
if let Some(python_ast) = checker.semantic().definitions.python_ast() { let required_import = AnyImport::ImportFrom(ImportFrom::member("__future__", "annotations"));
let required_import = diagnostic.set_fix(Fix::unsafe_edit(
AnyImport::ImportFrom(ImportFrom::member("__future__", "annotations")); checker
diagnostic.set_fix(Fix::unsafe_edit( .importer()
Importer::new(python_ast, checker.locator(), checker.stylist()) .add_import(&required_import, TextSize::default()),
.add_import(&required_import, TextSize::default()), ));
));
}
checker.diagnostics.push(diagnostic); checker.diagnostics.push(diagnostic);
} }