Respect --unfixable in ISC rules (#7917)

Closes https://github.com/astral-sh/ruff/issues/7909.
This commit is contained in:
Charlie Marsh
2023-10-11 09:40:24 -04:00
committed by GitHub
parent 8c4b5d3c90
commit 7a072cc2ea
2 changed files with 14 additions and 9 deletions

View File

@@ -137,7 +137,7 @@ pub(crate) fn check_tokens(
flake8_implicit_str_concat::rules::implicit(
&mut diagnostics,
tokens,
&settings.flake8_implicit_str_concat,
settings,
locator,
indexer,
);

View File

@@ -1,15 +1,16 @@
use itertools::Itertools;
use ruff_python_parser::lexer::LexResult;
use ruff_python_parser::Tok;
use ruff_text_size::{Ranged, TextRange};
use ruff_diagnostics::{Diagnostic, Edit, Fix, FixAvailability, Violation};
use ruff_macros::{derive_message_formats, violation};
use ruff_python_ast::str::{leading_quote, trailing_quote};
use ruff_python_index::Indexer;
use ruff_python_parser::lexer::LexResult;
use ruff_python_parser::Tok;
use ruff_source_file::Locator;
use ruff_text_size::{Ranged, TextRange};
use crate::rules::flake8_implicit_str_concat::settings::Settings;
use crate::registry::AsRule;
use crate::settings::LinterSettings;
/// ## What it does
/// Checks for implicitly concatenated strings on a single line.
@@ -94,7 +95,7 @@ impl Violation for MultiLineImplicitStringConcatenation {
pub(crate) fn implicit(
diagnostics: &mut Vec<Diagnostic>,
tokens: &[LexResult],
settings: &Settings,
settings: &LinterSettings,
locator: &Locator,
indexer: &Indexer,
) {
@@ -102,7 +103,9 @@ pub(crate) fn implicit(
.iter()
.flatten()
.filter(|(tok, _)| {
!tok.is_comment() && (settings.allow_multiline || !tok.is_non_logical_newline())
!tok.is_comment()
&& (settings.flake8_implicit_str_concat.allow_multiline
|| !tok.is_non_logical_newline())
})
.tuple_windows()
{
@@ -134,8 +137,10 @@ pub(crate) fn implicit(
TextRange::new(a_range.start(), b_range.end()),
);
if let Some(fix) = concatenate_strings(a_range, b_range, locator) {
diagnostic.set_fix(fix);
if settings.rules.should_fix(diagnostic.kind.rule()) {
if let Some(fix) = concatenate_strings(a_range, b_range, locator) {
diagnostic.set_fix(fix);
}
}
diagnostics.push(diagnostic);