From e0f578401d3c914bf2d1c766c43b5173e09b2450 Mon Sep 17 00:00:00 2001 From: Denis Bezrukov <6227442+denbezrukov@users.noreply.github.com> Date: Mon, 12 Jun 2023 10:40:37 +0300 Subject: [PATCH] fix(rome_js_analyzer): Big pack of js/ts files that crashes rome #4323 (#4560) --- CHANGELOG.md | 2 ++ crates/rome_cli/tests/commands/check.rs | 32 +++++++++++++++++++ .../apply_bogus_argument.snap | 18 +++++++++++ .../style/no_parameter_assign.rs | 10 +++--- .../specs/style/noParameterAssign/valid.jsonc | 3 +- .../style/noParameterAssign/valid.jsonc.snap | 6 +++- .../src/semantic_model/binding.rs | 5 +-- .../src/semantic_model/model.rs | 2 +- 8 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 crates/rome_cli/tests/snapshots/main_commands_check/apply_bogus_argument.snap diff --git a/CHANGELOG.md b/CHANGELOG.md index fdb9b5614be..c70274d632f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,8 @@ ### Formatter ### Linter +- Fix a crash in the `NoParameterAssign` rule that occurred when there was a bogus binding. [#4323](https://github.com/rome/tools/issues/4323) + #### Other changes - The rules [`useExhaustiveDependencies`](https://docs.rome.tools/lint/rules/useexhaustivedependencies/) and [`useHookAtTopLevel`](https://docs.rome.tools/lint/rules/usehookattoplevel/) accept a different diff --git a/crates/rome_cli/tests/commands/check.rs b/crates/rome_cli/tests/commands/check.rs index 1817f2c3110..14333f57db5 100644 --- a/crates/rome_cli/tests/commands/check.rs +++ b/crates/rome_cli/tests/commands/check.rs @@ -2274,6 +2274,38 @@ if (true) { )); } +#[test] +fn apply_bogus_argument() { + let mut fs = MemoryFileSystem::default(); + let mut console = BufferConsole::default(); + + let file_path = Path::new("fix.js"); + fs.insert( + file_path.into(), + "function _13_1_3_fun(arguments) { }".as_bytes(), + ); + + let result = run_cli( + DynRef::Borrowed(&mut fs), + &mut console, + Args::from(&[ + ("check"), + file_path.as_os_str().to_str().unwrap(), + ("--apply-unsafe"), + ]), + ); + + assert!(result.is_ok(), "run_cli returned {result:?}"); + + assert_cli_snapshot(SnapshotPayload::new( + module_path!(), + "apply_bogus_argument", + fs, + console, + result, + )); +} + #[test] fn ignores_unknown_file() { let mut fs = MemoryFileSystem::default(); diff --git a/crates/rome_cli/tests/snapshots/main_commands_check/apply_bogus_argument.snap b/crates/rome_cli/tests/snapshots/main_commands_check/apply_bogus_argument.snap new file mode 100644 index 00000000000..f5dd858ad26 --- /dev/null +++ b/crates/rome_cli/tests/snapshots/main_commands_check/apply_bogus_argument.snap @@ -0,0 +1,18 @@ +--- +source: crates/rome_cli/tests/snap_test.rs +expression: content +--- +## `fix.js` + +```js +function _13_1_3_fun(arguments) { } + +``` + +# Emitted Messages + +```block +Fixed 1 file(s) in