From 8c0a362b8b859fabea0271fedb2793dfa3c5b517 Mon Sep 17 00:00:00 2001 From: Boshen <1430279+Boshen@users.noreply.github.com> Date: Wed, 6 Nov 2024 06:25:05 +0000 Subject: [PATCH] refactor(linter): use `ctx.source_range(comment.content_span())` API (#7155) --- crates/oxc_linter/src/rules/eslint/default_case.rs | 2 +- crates/oxc_linter/src/rules/eslint/no_fallthrough.rs | 2 +- crates/oxc_linter/src/rules/jest/no_commented_out_tests.rs | 3 +-- crates/oxc_linter/src/rules/typescript/ban_tslint_comment.rs | 2 +- .../oxc_linter/src/rules/typescript/prefer_ts_expect_error.rs | 2 +- .../oxc_linter/src/rules/typescript/triple_slash_reference.rs | 2 +- crates/oxc_linter/src/rules/unicorn/no_empty_file.rs | 2 +- crates/oxc_linter/src/utils/tree_shaking.rs | 2 +- 8 files changed, 8 insertions(+), 9 deletions(-) diff --git a/crates/oxc_linter/src/rules/eslint/default_case.rs b/crates/oxc_linter/src/rules/eslint/default_case.rs index 240638a9220c3..bc71a98f090e1 100644 --- a/crates/oxc_linter/src/rules/eslint/default_case.rs +++ b/crates/oxc_linter/src/rules/eslint/default_case.rs @@ -79,7 +79,7 @@ impl Rule for DefaultCase { .comments_range(last_case.span.start..switch.span.end) .last() .is_some_and(|comment| { - let raw = comment.content_span().source_text(ctx.source_text()).trim(); + let raw = ctx.source_range(comment.content_span()).trim(); match &self.comment_pattern { Some(comment_pattern) => comment_pattern.is_match(raw), None => raw.eq_ignore_ascii_case("no default"), diff --git a/crates/oxc_linter/src/rules/eslint/no_fallthrough.rs b/crates/oxc_linter/src/rules/eslint/no_fallthrough.rs index f58b023d983e8..621c3f45a7cdc 100644 --- a/crates/oxc_linter/src/rules/eslint/no_fallthrough.rs +++ b/crates/oxc_linter/src/rules/eslint/no_fallthrough.rs @@ -382,7 +382,7 @@ impl NoFallthrough { let is_fallthrough_comment_in_range = |range: Range| { let comment = semantic .comments_range(range) - .map(|comment| comment.content_span().source_text(semantic.source_text())) + .map(|comment| ctx.source_range(comment.content_span())) .last() .map(str::trim); diff --git a/crates/oxc_linter/src/rules/jest/no_commented_out_tests.rs b/crates/oxc_linter/src/rules/jest/no_commented_out_tests.rs index ce283b6d43d5e..85a61bae6f6be 100644 --- a/crates/oxc_linter/src/rules/jest/no_commented_out_tests.rs +++ b/crates/oxc_linter/src/rules/jest/no_commented_out_tests.rs @@ -60,9 +60,8 @@ impl Rule for NoCommentedOutTests { Regex::new(r#"(?mu)^\s*[xf]?(test|it|describe)(\.\w+|\[['"]\w+['"]\])?\s*\("#).unwrap(); } let comments = ctx.semantic().comments(); - let source_text = ctx.source_text(); let commented_tests = comments.iter().filter_map(|comment| { - let text = comment.content_span().source_text(source_text); + let text = ctx.source_range(comment.content_span()); if RE.is_match(text) { Some(comment.content_span()) } else { diff --git a/crates/oxc_linter/src/rules/typescript/ban_tslint_comment.rs b/crates/oxc_linter/src/rules/typescript/ban_tslint_comment.rs index 302887c65723f..073b0fa36edba 100644 --- a/crates/oxc_linter/src/rules/typescript/ban_tslint_comment.rs +++ b/crates/oxc_linter/src/rules/typescript/ban_tslint_comment.rs @@ -36,7 +36,7 @@ impl Rule for BanTslintComment { let comments = ctx.semantic().comments(); let source_text_len = ctx.semantic().source_text().len(); for comment in comments { - let raw = comment.content_span().source_text(ctx.source_text()); + let raw = ctx.source_range(comment.content_span()); if is_tslint_comment_directive(raw) { let comment_span = get_full_comment(source_text_len, comment.span); ctx.diagnostic_with_fix( diff --git a/crates/oxc_linter/src/rules/typescript/prefer_ts_expect_error.rs b/crates/oxc_linter/src/rules/typescript/prefer_ts_expect_error.rs index 1b0c8144e0ada..a926876b6c361 100644 --- a/crates/oxc_linter/src/rules/typescript/prefer_ts_expect_error.rs +++ b/crates/oxc_linter/src/rules/typescript/prefer_ts_expect_error.rs @@ -51,7 +51,7 @@ impl Rule for PreferTsExpectError { let comments = ctx.semantic().comments(); for comment in comments { - let raw = comment.content_span().source_text(ctx.source_text()); + let raw = ctx.source_range(comment.content_span()); if !is_valid_ts_ignore_present(*comment, raw) { continue; diff --git a/crates/oxc_linter/src/rules/typescript/triple_slash_reference.rs b/crates/oxc_linter/src/rules/typescript/triple_slash_reference.rs index 17d3f5699aeef..5b26e2348d5bd 100644 --- a/crates/oxc_linter/src/rules/typescript/triple_slash_reference.rs +++ b/crates/oxc_linter/src/rules/typescript/triple_slash_reference.rs @@ -115,7 +115,7 @@ impl Rule for TripleSlashReference { let mut refs_for_import = FxHashMap::default(); for comment in ctx.semantic().comments_range(0..comments_range_end) { - let raw = comment.content_span().source_text(ctx.source_text()); + let raw = ctx.source_range(comment.content_span()); if let Some((group1, group2)) = get_attr_key_and_value(raw) { if (group1 == "types" && self.types == TypesOption::Never) || (group1 == "path" && self.path == PathOption::Never) diff --git a/crates/oxc_linter/src/rules/unicorn/no_empty_file.rs b/crates/oxc_linter/src/rules/unicorn/no_empty_file.rs index e61ac0f486d0f..8ad936f24bd68 100644 --- a/crates/oxc_linter/src/rules/unicorn/no_empty_file.rs +++ b/crates/oxc_linter/src/rules/unicorn/no_empty_file.rs @@ -73,7 +73,7 @@ fn has_triple_slash_directive(ctx: &LintContext<'_>) -> bool { if !comment.is_line() { continue; } - let text = comment.content_span().source_text(ctx.source_text()); + let text = ctx.source_range(comment.content_span()); if text.starts_with("///") { return true; } diff --git a/crates/oxc_linter/src/utils/tree_shaking.rs b/crates/oxc_linter/src/utils/tree_shaking.rs index 47cd03d91578c..ead1649d37389 100644 --- a/crates/oxc_linter/src/utils/tree_shaking.rs +++ b/crates/oxc_linter/src/utils/tree_shaking.rs @@ -226,7 +226,7 @@ pub fn has_pure_notation(span: Span, ctx: &LintContext) -> bool { let Some(comment) = ctx.semantic().comments_range(..span.start).next_back() else { return false; }; - let raw = comment.content_span().source_text(ctx.source_text()); + let raw = ctx.source_range(comment.content_span()); raw.contains("@__PURE__") || raw.contains("#__PURE__") }