Files
overlookmotel c95951f563 feat(linter/plugins): implement sourceCode.markVariableAsUsed (#20357)
Fixes #19971.

Implement `sourceCode.markVariableAsUsed`.

It has some shortcomings at present - it does mark vars as used, so any other JS plugins can see that, but it doesn't communicate this info back to Rust side, so `no-unused-vars` doesn't act on it. But at least it doesn't cause a crash with "unimplemented" error.

The remaining issue is tracked in #20350.
2026-03-14 01:01:25 +00:00

3.8 KiB

Exit code

1

stdout

  x mark-used-plugin(mark-used): [1] mark `unusedTopLevel` from Program:
  | before: false
  | result: true
  | after: true
   ,-[files/index.cjs:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [2] mark `nonExistent` from Program:
  | result: false
   ,-[files/index.cjs:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [3] mark `shadowedName` (no refNode):
  | before: false
  | result: true
  | after: true
   ,-[files/index.cjs:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [4] mark `nestedVar` from outer:
  | before: false
  | result: true
  | after: true
   ,-[files/index.cjs:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [5] mark `unusedTopLevel2` from outer:
  | before: false
  | result: true
  | after: true
   ,-[files/index.cjs:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [6] mark `nestedVar2` from inner:
  | before: false
  | result: true
  | after: true
   ,-[files/index.cjs:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [7] mark `doesNotExist` from inner:
  | result: false
   ,-[files/index.cjs:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [1] mark `unusedTopLevel` from Program:
  | before: false
  | result: true
  | after: true
   ,-[files/index.js:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [2] mark `nonExistent` from Program:
  | result: false
   ,-[files/index.js:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [3] mark `shadowedName` (no refNode):
  | before: false
  | result: true
  | after: true
   ,-[files/index.js:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [4] mark `nestedVar` from outer:
  | before: false
  | result: true
  | after: true
   ,-[files/index.js:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [5] mark `unusedTopLevel2` from outer:
  | before: false
  | result: true
  | after: true
   ,-[files/index.js:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [6] mark `nestedVar2` from inner:
  | before: false
  | result: true
  | after: true
   ,-[files/index.js:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

  x mark-used-plugin(mark-used): [7] mark `doesNotExist` from inner:
  | result: false
   ,-[files/index.js:1:1]
 1 | // `unusedTopLevel` is declared but never referenced in code,
   : ^
 2 | // so `eslintUsed` should start as `false`.
   `----

Found 0 warnings and 14 errors.
Finished in Xms on 2 files with 1 rules using X threads.

stderr