diff --git a/package.json b/package.json index d397e5946..535592104 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "n-readlines": "3.4.0", "narrow-emojis": "0.0.3", "outdent": "0.8.0", - "oxc-parser": "0.108.0", + "oxc-parser": "0.110.0", "parse-json": "8.3.0", "picocolors": "1.1.1", "please-upgrade-node": "3.2.0", diff --git a/src/language-js/parse/oxc.js b/src/language-js/parse/oxc.js index d17e12d37..3d2477c15 100644 --- a/src/language-js/parse/oxc.js +++ b/src/language-js/parse/oxc.js @@ -7,8 +7,7 @@ import createParser from "./utilities/create-parser.js"; import jsxRegexp from "./utilities/jsx-regexp.evaluate.js"; import { getSourceType, - SOURCE_TYPE_COMMONJS, - SOURCE_TYPE_SCRIPT, + SOURCE_TYPE_COMBINATIONS, } from "./utilities/source-types.js"; /** @import {ParseResult, ParserOptions as ParserOptionsWithoutExperimentalRawTransfer} from "oxc-parser" */ @@ -48,17 +47,10 @@ function createParseError(error, { text }) { @returns {Promise} */ async function parseWithOptions(filepath, text, options) { - let { sourceType } = options; - // https://github.com/oxc-project/oxc/issues/16200 - if (sourceType === SOURCE_TYPE_COMMONJS) { - sourceType = SOURCE_TYPE_SCRIPT; - } - const result = await oxcParse(filepath, text, { preserveParens: true, showSemanticErrors: false, ...options, - sourceType, }); const { errors } = result; @@ -78,18 +70,31 @@ async function parseWithOptions(filepath, text, options) { } async function parseJs(text, options) { - const filepath = options?.filepath; + let filepath = options?.filepath; const sourceType = getSourceType(filepath); - const { program: ast, comments } = await parseWithOptions( - typeof filepath === "string" ? filepath : "prettier.jsx", - text, - { - sourceType, - lang: "jsx", - }, + if (typeof filepath !== "string") { + filepath = "prettier.tsx"; + } + const combinations = ( + sourceType ? [sourceType] : SOURCE_TYPE_COMBINATIONS + ).map( + (sourceType) => () => + parseWithOptions(filepath, text, { sourceType, lang: "jsx" }), ); + let result; + try { + result = await tryCombinations(combinations); + } catch ({ + // @ts-expect-error -- expected + errors: [error], + }) { + throw error; + } + + const { program: ast, comments } = result; + // @ts-expect-error -- expected ast.comments = comments; @@ -118,6 +123,7 @@ function getLanguageCombinations(text, options) { async function parseTs(text, options) { let filepath = options?.filepath; + const sourceType = getSourceType(filepath); const languageCombinations = getLanguageCombinations(text, options); @@ -125,18 +131,18 @@ async function parseTs(text, options) { filepath = "prettier.tsx"; } + const combinations = ( + sourceType ? [sourceType] : SOURCE_TYPE_COMBINATIONS + ).flatMap((sourceType) => + languageCombinations.map( + (lang) => () => + parseWithOptions(filepath, text, { astType: "ts", sourceType, lang }), + ), + ); + let result; try { - result = await tryCombinations( - languageCombinations.map( - (language) => () => - parseWithOptions(filepath, text, { - sourceType, - astType: "ts", - lang: language, - }), - ), - ); + result = await tryCombinations(combinations); } catch ({ // @ts-expect-error -- expected errors: [error], diff --git a/tests/format/typescript/tuple/__snapshots__/format.test.js.snap b/tests/format/typescript/tuple/__snapshots__/format.test.js.snap index 0f7368aa9..394fb8f3c 100644 --- a/tests/format/typescript/tuple/__snapshots__/format.test.js.snap +++ b/tests/format/typescript/tuple/__snapshots__/format.test.js.snap @@ -569,7 +569,7 @@ let x: [A: string, ...B: number[]] type T = [foo: string, bar?: number]; -type T = [x?: A, y: B]; +type T = [x?: A, y?: B]; type T = [x: A, ...B]; @@ -586,7 +586,7 @@ let x: [A: string, ...B: number[]]; type T = [foo: string, bar?: number]; -type T = [x?: A, y: B]; +type T = [x?: A, y?: B]; type T = [x: A, ...B]; @@ -612,7 +612,7 @@ let x: [A: string, ...B: number[]] type T = [foo: string, bar?: number]; -type T = [x?: A, y: B]; +type T = [x?: A, y?: B]; type T = [x: A, ...B]; @@ -629,7 +629,7 @@ let x: [A: string, ...B: number[]]; type T = [foo: string, bar?: number]; -type T = [x?: A, y: B]; +type T = [x?: A, y?: B]; type T = [x: A, ...B]; @@ -655,7 +655,7 @@ let x: [A: string, ...B: number[]] type T = [foo: string, bar?: number]; -type T = [x?: A, y: B]; +type T = [x?: A, y?: B]; type T = [x: A, ...B]; @@ -672,7 +672,7 @@ let x: [A: string, ...B: number[]]; type T = [foo: string, bar?: number]; -type T = [x?: A, y: B]; +type T = [x?: A, y?: B]; type T = [x: A, ...B]; diff --git a/tests/format/typescript/tuple/tuple-labeled.ts b/tests/format/typescript/tuple/tuple-labeled.ts index 1ecfb9e13..27e55738a 100644 --- a/tests/format/typescript/tuple/tuple-labeled.ts +++ b/tests/format/typescript/tuple/tuple-labeled.ts @@ -8,7 +8,7 @@ let x: [A: string, ...B: number[]] type T = [foo: string, bar?: number]; -type T = [x?: A, y: B]; +type T = [x?: A, y?: B]; type T = [x: A, ...B]; diff --git a/yarn.lock b/yarn.lock index 464463f76..b936d8880 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1916,152 +1916,152 @@ __metadata: languageName: node linkType: hard -"@oxc-parser/binding-android-arm-eabi@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-android-arm-eabi@npm:0.108.0" +"@oxc-parser/binding-android-arm-eabi@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-android-arm-eabi@npm:0.110.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@oxc-parser/binding-android-arm64@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-android-arm64@npm:0.108.0" +"@oxc-parser/binding-android-arm64@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-android-arm64@npm:0.110.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@oxc-parser/binding-darwin-arm64@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-darwin-arm64@npm:0.108.0" +"@oxc-parser/binding-darwin-arm64@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-darwin-arm64@npm:0.110.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@oxc-parser/binding-darwin-x64@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-darwin-x64@npm:0.108.0" +"@oxc-parser/binding-darwin-x64@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-darwin-x64@npm:0.110.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@oxc-parser/binding-freebsd-x64@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-freebsd-x64@npm:0.108.0" +"@oxc-parser/binding-freebsd-x64@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-freebsd-x64@npm:0.110.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@oxc-parser/binding-linux-arm-gnueabihf@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-arm-gnueabihf@npm:0.108.0" +"@oxc-parser/binding-linux-arm-gnueabihf@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-arm-gnueabihf@npm:0.110.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@oxc-parser/binding-linux-arm-musleabihf@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-arm-musleabihf@npm:0.108.0" +"@oxc-parser/binding-linux-arm-musleabihf@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-arm-musleabihf@npm:0.110.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@oxc-parser/binding-linux-arm64-gnu@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-arm64-gnu@npm:0.108.0" +"@oxc-parser/binding-linux-arm64-gnu@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-arm64-gnu@npm:0.110.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@oxc-parser/binding-linux-arm64-musl@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-arm64-musl@npm:0.108.0" +"@oxc-parser/binding-linux-arm64-musl@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-arm64-musl@npm:0.110.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@oxc-parser/binding-linux-ppc64-gnu@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-ppc64-gnu@npm:0.108.0" +"@oxc-parser/binding-linux-ppc64-gnu@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-ppc64-gnu@npm:0.110.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@oxc-parser/binding-linux-riscv64-gnu@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-riscv64-gnu@npm:0.108.0" +"@oxc-parser/binding-linux-riscv64-gnu@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-riscv64-gnu@npm:0.110.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@oxc-parser/binding-linux-riscv64-musl@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-riscv64-musl@npm:0.108.0" +"@oxc-parser/binding-linux-riscv64-musl@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-riscv64-musl@npm:0.110.0" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@oxc-parser/binding-linux-s390x-gnu@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-s390x-gnu@npm:0.108.0" +"@oxc-parser/binding-linux-s390x-gnu@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-s390x-gnu@npm:0.110.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@oxc-parser/binding-linux-x64-gnu@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-x64-gnu@npm:0.108.0" +"@oxc-parser/binding-linux-x64-gnu@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-x64-gnu@npm:0.110.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@oxc-parser/binding-linux-x64-musl@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-linux-x64-musl@npm:0.108.0" +"@oxc-parser/binding-linux-x64-musl@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-linux-x64-musl@npm:0.110.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@oxc-parser/binding-openharmony-arm64@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-openharmony-arm64@npm:0.108.0" +"@oxc-parser/binding-openharmony-arm64@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-openharmony-arm64@npm:0.110.0" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@oxc-parser/binding-wasm32-wasi@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-wasm32-wasi@npm:0.108.0" +"@oxc-parser/binding-wasm32-wasi@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-wasm32-wasi@npm:0.110.0" dependencies: "@napi-rs/wasm-runtime": "npm:^1.1.1" conditions: cpu=wasm32 languageName: node linkType: hard -"@oxc-parser/binding-win32-arm64-msvc@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-win32-arm64-msvc@npm:0.108.0" +"@oxc-parser/binding-win32-arm64-msvc@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-win32-arm64-msvc@npm:0.110.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@oxc-parser/binding-win32-ia32-msvc@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-win32-ia32-msvc@npm:0.108.0" +"@oxc-parser/binding-win32-ia32-msvc@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-win32-ia32-msvc@npm:0.110.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@oxc-parser/binding-win32-x64-msvc@npm:0.108.0": - version: 0.108.0 - resolution: "@oxc-parser/binding-win32-x64-msvc@npm:0.108.0" +"@oxc-parser/binding-win32-x64-msvc@npm:0.110.0": + version: 0.110.0 + resolution: "@oxc-parser/binding-win32-x64-msvc@npm:0.110.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@oxc-project/types@npm:^0.108.0": - version: 0.108.0 - resolution: "@oxc-project/types@npm:0.108.0" - checksum: 10/b41a88f024202c415aa1f595764c088e784b0b6e08278413ed194dc26b69a0ab9b8e840f0397dcf64e8298d1f61419a8e199e1763bd79e376ce1baf8e3aabac5 +"@oxc-project/types@npm:^0.110.0": + version: 0.110.0 + resolution: "@oxc-project/types@npm:0.110.0" + checksum: 10/427a130ca22bfbc1c67652309022a7d9ed452ec9fcb05cd13e9601bfb3a68a3755a50e731a10e84849937850c55b0cfc24f708e3e84710b229790f7fac22c423 languageName: node linkType: hard @@ -7838,31 +7838,31 @@ __metadata: languageName: node linkType: hard -"oxc-parser@npm:0.108.0": - version: 0.108.0 - resolution: "oxc-parser@npm:0.108.0" +"oxc-parser@npm:0.110.0": + version: 0.110.0 + resolution: "oxc-parser@npm:0.110.0" dependencies: - "@oxc-parser/binding-android-arm-eabi": "npm:0.108.0" - "@oxc-parser/binding-android-arm64": "npm:0.108.0" - "@oxc-parser/binding-darwin-arm64": "npm:0.108.0" - "@oxc-parser/binding-darwin-x64": "npm:0.108.0" - "@oxc-parser/binding-freebsd-x64": "npm:0.108.0" - "@oxc-parser/binding-linux-arm-gnueabihf": "npm:0.108.0" - "@oxc-parser/binding-linux-arm-musleabihf": "npm:0.108.0" - "@oxc-parser/binding-linux-arm64-gnu": "npm:0.108.0" - "@oxc-parser/binding-linux-arm64-musl": "npm:0.108.0" - "@oxc-parser/binding-linux-ppc64-gnu": "npm:0.108.0" - "@oxc-parser/binding-linux-riscv64-gnu": "npm:0.108.0" - "@oxc-parser/binding-linux-riscv64-musl": "npm:0.108.0" - "@oxc-parser/binding-linux-s390x-gnu": "npm:0.108.0" - "@oxc-parser/binding-linux-x64-gnu": "npm:0.108.0" - "@oxc-parser/binding-linux-x64-musl": "npm:0.108.0" - "@oxc-parser/binding-openharmony-arm64": "npm:0.108.0" - "@oxc-parser/binding-wasm32-wasi": "npm:0.108.0" - "@oxc-parser/binding-win32-arm64-msvc": "npm:0.108.0" - "@oxc-parser/binding-win32-ia32-msvc": "npm:0.108.0" - "@oxc-parser/binding-win32-x64-msvc": "npm:0.108.0" - "@oxc-project/types": "npm:^0.108.0" + "@oxc-parser/binding-android-arm-eabi": "npm:0.110.0" + "@oxc-parser/binding-android-arm64": "npm:0.110.0" + "@oxc-parser/binding-darwin-arm64": "npm:0.110.0" + "@oxc-parser/binding-darwin-x64": "npm:0.110.0" + "@oxc-parser/binding-freebsd-x64": "npm:0.110.0" + "@oxc-parser/binding-linux-arm-gnueabihf": "npm:0.110.0" + "@oxc-parser/binding-linux-arm-musleabihf": "npm:0.110.0" + "@oxc-parser/binding-linux-arm64-gnu": "npm:0.110.0" + "@oxc-parser/binding-linux-arm64-musl": "npm:0.110.0" + "@oxc-parser/binding-linux-ppc64-gnu": "npm:0.110.0" + "@oxc-parser/binding-linux-riscv64-gnu": "npm:0.110.0" + "@oxc-parser/binding-linux-riscv64-musl": "npm:0.110.0" + "@oxc-parser/binding-linux-s390x-gnu": "npm:0.110.0" + "@oxc-parser/binding-linux-x64-gnu": "npm:0.110.0" + "@oxc-parser/binding-linux-x64-musl": "npm:0.110.0" + "@oxc-parser/binding-openharmony-arm64": "npm:0.110.0" + "@oxc-parser/binding-wasm32-wasi": "npm:0.110.0" + "@oxc-parser/binding-win32-arm64-msvc": "npm:0.110.0" + "@oxc-parser/binding-win32-ia32-msvc": "npm:0.110.0" + "@oxc-parser/binding-win32-x64-msvc": "npm:0.110.0" + "@oxc-project/types": "npm:^0.110.0" dependenciesMeta: "@oxc-parser/binding-android-arm-eabi": optional: true @@ -7904,7 +7904,7 @@ __metadata: optional: true "@oxc-parser/binding-win32-x64-msvc": optional: true - checksum: 10/e344599f335e2cecbaeea2235c3e40dfe32cc0119256d407da44ebc79e5b2760b4b5a443c2c999d57cff5c101dcd996931d9dc115e598418e46f9a2c782e6e18 + checksum: 10/3a065128d098c23968588d03b945bcde867c0eaf1c391843e2d8a4fdfccd8ccc91654f5fb149a90d81a88aaf0f517e02e9e9f1021e10e4f79c11c6f3a6e3f2cf languageName: node linkType: hard @@ -8466,7 +8466,7 @@ __metadata: npm-run-all2: "npm:8.0.4" open-editor: "npm:6.0.0" outdent: "npm:0.8.0" - oxc-parser: "npm:0.108.0" + oxc-parser: "npm:0.110.0" parse-json: "npm:8.3.0" picocolors: "npm:1.1.1" please-upgrade-node: "npm:3.2.0"