diff --git a/apps/oxlint/src/lint.rs b/apps/oxlint/src/lint.rs index d34bd46b059ef..2060dc9645177 100644 --- a/apps/oxlint/src/lint.rs +++ b/apps/oxlint/src/lint.rs @@ -296,10 +296,16 @@ impl LintRunner { .filter(|path| !config_store.should_ignore(Path::new(path))) .collect::>>(); + let lint_options = LintOptions { + fix: fix_options.fix_kind(), + report_unused_directive: report_unused_directives, + ..LintOptions::default() + }; + // Run type-aware linting through tsgolint // TODO: Add a warning message if `tsgolint` cannot be found, but type-aware rules are enabled if self.options.type_aware { - if let Err(err) = TsGoLintState::new(options.cwd(), config_store.clone()) + if let Err(err) = TsGoLintState::new(options.cwd(), lint_options, config_store.clone()) .lint(&files_to_lint, tx_error.clone()) { print_and_flush_stdout(stdout, &err); @@ -307,9 +313,7 @@ impl LintRunner { } } - let linter = Linter::new(LintOptions::default(), config_store, self.external_linter) - .with_fix(fix_options.fix_kind()) - .with_report_unused_directives(report_unused_directives); + let linter = Linter::new(lint_options, config_store, self.external_linter); let number_of_files = files_to_lint.len(); diff --git a/crates/oxc_linter/src/lib.rs b/crates/oxc_linter/src/lib.rs index bea97b3b7bcc2..dada8d77c83ec 100644 --- a/crates/oxc_linter/src/lib.rs +++ b/crates/oxc_linter/src/lib.rs @@ -106,12 +106,6 @@ impl Linter { self } - #[must_use] - pub fn with_report_unused_directives(mut self, report_config: Option) -> Self { - self.options.report_unused_directive = report_config; - self - } - pub(crate) fn options(&self) -> &LintOptions { &self.options } diff --git a/crates/oxc_linter/src/tsgolint.rs b/crates/oxc_linter/src/tsgolint.rs index d3f0efdc454df..cb4132350d0d7 100644 --- a/crates/oxc_linter/src/tsgolint.rs +++ b/crates/oxc_linter/src/tsgolint.rs @@ -11,7 +11,10 @@ use serde::{Deserialize, Serialize}; use oxc_diagnostics::{DiagnosticSender, DiagnosticService, OxcDiagnostic, Severity}; use oxc_span::{SourceType, Span}; -use crate::fixer::{CompositeFix, Message, PossibleFixes}; +use crate::{ + LintOptions, + fixer::{CompositeFix, Message, PossibleFixes}, +}; use super::{AllowWarnDeny, ConfigStore, ResolvedLinterState, read_to_string}; @@ -24,14 +27,18 @@ pub struct TsGoLintState { cwd: PathBuf, /// The configuration store for `tsgolint` (used to resolve configurations outside of `oxc_linter`) config_store: ConfigStore, + /// The linting options for `tsgolint`, needed for `--fix` + #[expect(dead_code)] + lint_options: LintOptions, } impl TsGoLintState { - pub fn new(cwd: &Path, config_store: ConfigStore) -> Self { + pub fn new(cwd: &Path, lint_options: LintOptions, config_store: ConfigStore) -> Self { TsGoLintState { config_store, executable_path: try_find_tsgolint_executable(cwd).unwrap_or(PathBuf::from("tsgolint")), cwd: cwd.to_path_buf(), + lint_options, } }