Skip to content

Commit 93913f9

Browse files
committed
feat(linter): introduce LintPlugins to store builtin + custom plugins
1 parent a18c4ed commit 93913f9

File tree

10 files changed

+400
-208
lines changed

10 files changed

+400
-208
lines changed

apps/oxlint/src/command/lint.rs

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::path::PathBuf;
22

33
use bpaf::Bpaf;
4-
use oxc_linter::{AllowWarnDeny, FixKind, BuiltinLintPlugins};
4+
use oxc_linter::{AllowWarnDeny, BuiltinLintPlugins, FixKind, LintPlugins};
55

66
use crate::output_formatter::OutputFormat;
77

@@ -327,24 +327,26 @@ impl OverrideToggle {
327327
}
328328

329329
impl EnablePlugins {
330-
pub fn apply_overrides(&self, plugins: &mut BuiltinLintPlugins) {
331-
self.react_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::REACT, yes));
332-
self.unicorn_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::UNICORN, yes));
333-
self.oxc_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::OXC, yes));
334-
self.typescript_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::TYPESCRIPT, yes));
335-
self.import_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::IMPORT, yes));
336-
self.jsdoc_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::JSDOC, yes));
337-
self.jest_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::JEST, yes));
338-
self.vitest_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::VITEST, yes));
339-
self.jsx_a11y_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::JSX_A11Y, yes));
340-
self.nextjs_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::NEXTJS, yes));
341-
self.react_perf_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::REACT_PERF, yes));
342-
self.promise_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::PROMISE, yes));
343-
self.node_plugin.inspect(|yes| plugins.set(BuiltinLintPlugins::NODE, yes));
330+
pub fn apply_overrides(&self, plugins: &mut LintPlugins) {
331+
self.react_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::REACT, yes));
332+
self.unicorn_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::UNICORN, yes));
333+
self.oxc_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::OXC, yes));
334+
self.typescript_plugin
335+
.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::TYPESCRIPT, yes));
336+
self.import_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::IMPORT, yes));
337+
self.jsdoc_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::JSDOC, yes));
338+
self.jest_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::JEST, yes));
339+
self.vitest_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::VITEST, yes));
340+
self.jsx_a11y_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::JSX_A11Y, yes));
341+
self.nextjs_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::NEXTJS, yes));
342+
self.react_perf_plugin
343+
.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::REACT_PERF, yes));
344+
self.promise_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::PROMISE, yes));
345+
self.node_plugin.inspect(|yes| plugins.builtin.set(BuiltinLintPlugins::NODE, yes));
344346

345347
// Without this, jest plugins adapted to vitest will not be enabled.
346348
if self.vitest_plugin.is_enabled() && self.jest_plugin.is_not_set() {
347-
plugins.set(BuiltinLintPlugins::JEST, true);
349+
plugins.builtin.set(BuiltinLintPlugins::JEST, true);
348350
}
349351
}
350352
}
@@ -381,40 +383,47 @@ pub struct InlineConfigOptions {
381383

382384
#[cfg(test)]
383385
mod plugins {
384-
use oxc_linter::BuiltinLintPlugins;
386+
use rustc_hash::FxHashSet;
387+
388+
use oxc_linter::{BuiltinLintPlugins, LintPlugins};
385389

386390
use super::{EnablePlugins, OverrideToggle};
387391

388392
#[test]
389393
fn test_override_default() {
390-
let mut plugins = BuiltinLintPlugins::default();
394+
let mut plugins = LintPlugins::default();
391395
let enable = EnablePlugins::default();
392396

393397
enable.apply_overrides(&mut plugins);
394-
assert_eq!(plugins, BuiltinLintPlugins::default());
398+
assert_eq!(plugins, LintPlugins::default());
395399
}
396400

397401
#[test]
398402
fn test_overrides() {
399-
let mut plugins = BuiltinLintPlugins::default();
403+
let mut plugins = LintPlugins::default();
400404
let enable = EnablePlugins {
401405
react_plugin: OverrideToggle::Enable,
402406
unicorn_plugin: OverrideToggle::Disable,
403407
..EnablePlugins::default()
404408
};
405-
let expected =
406-
BuiltinLintPlugins::default().union(BuiltinLintPlugins::REACT).difference(BuiltinLintPlugins::UNICORN);
409+
410+
let expected = BuiltinLintPlugins::default()
411+
.union(BuiltinLintPlugins::REACT)
412+
.difference(BuiltinLintPlugins::UNICORN);
407413

408414
enable.apply_overrides(&mut plugins);
409-
assert_eq!(plugins, expected);
415+
assert_eq!(plugins, LintPlugins::new(expected, FxHashSet::default()));
410416
}
411417

412418
#[test]
413419
fn test_override_vitest() {
414-
let mut plugins = BuiltinLintPlugins::default();
420+
let mut plugins = LintPlugins::default();
415421
let enable =
416422
EnablePlugins { vitest_plugin: OverrideToggle::Enable, ..EnablePlugins::default() };
417-
let expected = BuiltinLintPlugins::default() | BuiltinLintPlugins::VITEST | BuiltinLintPlugins::JEST;
423+
let expected = LintPlugins::new(
424+
BuiltinLintPlugins::default() | BuiltinLintPlugins::VITEST | BuiltinLintPlugins::JEST,
425+
FxHashSet::default(),
426+
);
418427

419428
enable.apply_overrides(&mut plugins);
420429
assert_eq!(plugins, expected);

0 commit comments

Comments
 (0)