Skip to content

testing/quick-lint-js: upgrade to 2.17.0

Krassy Boykinov requested to merge chereskata/aports:quick-lint-js into master

2.16.0...2.17.0 -> code changes lgtm on first glance

Changes
## 2.17.0 (2023-10-25)

[Downloads](https://c.quick-lint-js.com/releases/2.17.0/)

### Added

* quick-lint-js now understands decorators.
* quick-lint-js now understands `accessor` fields.
* `class C { myField, }` now reports better diagnostics.
* quick-lint-js now compiles correctly on big-endian architectures such as
  S/390 (Linux s390x).
* Missing commas in array literals now reports [E0712][]. (Implemented by
  [koopiehoop][].)
* `get *prop()` and `set *prop()` in classes now report [E0713][] ("getters and
  setters cannot be generators"). (Implemented by [koopiehoop][].)
* `async get` and `async set` in classes now report [E0714][] ("'async' keyword
  is not allowed on getters or setters"). (Implemented by [koopiehoop][].)
* Multiple `export default` statements now report [E0715][] ("cannot use
  multiple `export default` statements in one module"). (Implemented by
  [Ariel Don][].)
* Emacs: The Debian/Ubuntu package now installs the Emacs plugin. Manual
  installation of the .el files is no longer required.
* CLI: The new `--stdin-path` CLI option allows users of the `--stdin` option
  (primarily text editors) to have quick-lint-js detect the language
  automatically via `--language=default` or `--language=experimental-default`.
* TypeScript support (still experimental):
  * CLI: The new `--language=experimental-default` option auto-detects the
    language based on the file's extension (`.ts`, `.tsx`, `.d.ts`, or `.js`).
  * Emacs: Flymake plugin users can now opt into TypeScript support. See the
    [Flymake configuration instructions][emacs-configure-flymake].
  * Class method overload signatures are now parsed.
  * [E0398][] is now reported when using both `abstract` and `static` on a
    single class property.
  * `,` is now allowed after interface fields. (Previously only `;` or a newline
    was allowed.)
  * `if (cond);` now reports [E0064][] ("missing body for 'if' statement").
    (Implemented by [Samir Hamud][].)
  * Type predicates are now supported in function types (e.g.
    `(param) => param is Type`).
  * `declare` fields are now parsed inside classes.
  * `declare global` blocks are now parsed.

### Fixed

* [E0072][] is no longer falsely reported if `function` has a newline after it.
* [E0196][] is no longer falsely reported if the shadowing variable is declared
  in the head of a `for` loop. For example, quick-lint-js no longer warns about
  `let x; for (let x = 0;;);`.
* Emacs: .el files are now installed in the correct place on Arch Linux, btw.
* Emacs: The Flymake plugin now reliably clears out diagnostics after issues are
  fixed. Sticky diagnostics are no more.
* TypeScript support (still experimental):
  * A newline after `public`, `protected`, `private`, or `readonly` inside a
    class is now interpreted correctly.
  * `<T>(T: T) => {}` (a generic arrow function with the same name for a
    run-time parameter and a generic parameter) no longer falsely reports
    [E0034][] ("redeclaration of variable").
  * A namespace with the same name as an interface or type alias no longer
    falsely reports [E0034][] ("redeclaration of variable").
  * `declare class` and `function` with the same name no longer falsely reports
    [E0034][] ("redeclaration of variable").
  * `(a?, ...b) => ReturnType` in a TypeScript type no longer falsely reports
    [E0379][] ("optional parameter cannot be followed by a required parameter").
  * LSP: A file named `a.tsxbanana.ts` is no longer recognized as a
    TypeScript JSX file. It is now recognized as a non-JSX TypeScript
    file.
  * Nested `module` declarations no longer falsely report [E0361][]. E0361's
    message has been changed:
    * Before: "module with string name is only allowed at the top level"
    * After: "TypeScript 'declare module' with string name is not allowed in
      namespaces"

Merge request reports