Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/generated/ast_changes_watch_list.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ src:
- 'napi/parser/generated/deserialize/js_range.js'
- 'napi/parser/generated/deserialize/ts.js'
- 'napi/parser/generated/deserialize/ts_range.js'
- 'napi/parser/generated/deserialize/ts_range_no_parens.js'
- 'napi/parser/generated/lazy/constructors.js'
- 'napi/parser/generated/lazy/types.js'
- 'napi/parser/generated/lazy/walk.js'
Expand Down
2 changes: 1 addition & 1 deletion apps/oxlint/scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const parserFilePaths = [
'generated/lazy/types.js',
'generated/lazy/walk.js',
*/
'generated/deserialize/ts_range.js',
'generated/deserialize/ts_range_no_parens.js',
'generated/visit/keys.js',
'generated/visit/types.js',
'generated/visit/visitor.d.ts',
Expand Down
8 changes: 3 additions & 5 deletions apps/oxlint/src-js/plugins/source_code.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import {
// @ts-expect-error
} from '../generated/constants.js';
// @ts-expect-error we need to generate `.d.ts` file for this module
import { deserializeProgramOnly } from '../../dist/generated/deserialize/ts_range.js';
// We use the deserializer which removes `ParenthesizedExpression`s from AST to match ESLint
import { deserializeProgramOnly } from '../../dist/generated/deserialize/ts_range_no_parens.js';

import type { Program } from '@oxc-project/types';
import type { Scope, ScopeManager, Variable } from './scope.ts';
Expand Down Expand Up @@ -67,10 +68,7 @@ function initSourceText(): void {
*/
function initAst(): void {
if (sourceText === null) initSourceText();

// `preserveParens` argument is `false`, to match ESLint.
// ESLint does not include `ParenthesizedExpression` nodes in its AST.
ast = deserializeProgramOnly(buffer, sourceText, sourceByteLen, false);
ast = deserializeProgramOnly(buffer, sourceText, sourceByteLen);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions crates/oxc_ast/src/serialize/js.rs
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ impl ESTree for AssignmentTargetPropertyIdentifierInit<'_> {

/// Converter for [`ParenthesizedExpression`].
///
/// In raw transfer, do not produce a `ParenthesizedExpression` node in AST if `preserveParens` is false.
/// In raw transfer, do not produce a `ParenthesizedExpression` node in AST if `PRESERVE_PARENS` is false.
///
/// Not useful in `oxc-parser`, as can use parser option `preserve_parens`.
/// Required for `oxlint` plugins where we run parser with `preserve_parens` set to `true`,
Expand All @@ -459,7 +459,7 @@ impl ESTree for AssignmentTargetPropertyIdentifierInit<'_> {
#[ast_meta]
#[estree(raw_deser = "
let node = DESER[Expression](POS_OFFSET.expression);
if (preserveParens) {
if (PRESERVE_PARENS) {
let start, end;
node = {
type: 'ParenthesizedExpression',
Expand Down
4 changes: 2 additions & 2 deletions crates/oxc_ast/src/serialize/ts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ impl ESTree for TSFunctionTypeParams<'_, '_> {

/// Converter for [`TSParenthesizedType`].
///
/// In raw transfer, do not produce a `TSParenthesizedType` node in AST if `preserveParens` is false.
/// In raw transfer, do not produce a `TSParenthesizedType` node in AST if `PRESERVE_PARENS` is false.
///
/// Not useful in `oxc-parser`, as can use parser option `preserve_parens`.
/// Required for `oxlint` plugins where we run parser with `preserve_parens` set to `true`,
Expand All @@ -437,7 +437,7 @@ impl ESTree for TSFunctionTypeParams<'_, '_> {
#[ast_meta]
#[estree(raw_deser = "
let node = DESER[TSType](POS_OFFSET.type_annotation);
if (preserveParens) {
if (PRESERVE_PARENS) {
let start, end;
node = {
type: 'TSParenthesizedType',
Expand Down
21 changes: 10 additions & 11 deletions napi/parser/generated/deserialize/js.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
// Auto-generated code, DO NOT EDIT DIRECTLY!
// To edit this generated file you have to edit `tasks/ast_tools/src/generators/raw_transfer.rs`.

let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen, preserveParens;
let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen;
const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true }),
decodeStr = textDecoder.decode.bind(textDecoder),
{ fromCodePoint } = String;

export function deserialize(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeRawTransferData);
export function deserialize(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeRawTransferData);
}

export function deserializeProgramOnly(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeProgram);
export function deserializeProgramOnly(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeProgram);
}

function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, preserveParensInput, deserialize) {
function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, deserialize) {
uint8 = buffer;
uint32 = buffer.uint32;
float64 = buffer.float64;
sourceText = sourceTextInput;
sourceByteLen = sourceByteLenInput;
sourceIsAscii = sourceText.length === sourceByteLen;
preserveParens = preserveParensInput;
let data = deserialize(uint32[536870902]);
uint8 =
uint32 =
Expand Down Expand Up @@ -989,12 +988,12 @@ function deserializeChainElement(pos) {

function deserializeParenthesizedExpression(pos) {
let node = deserializeExpression(pos + 8);
preserveParens && (node = {
node = {
type: 'ParenthesizedExpression',
expression: node,
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
});
};
return node;
}

Expand Down Expand Up @@ -2791,12 +2790,12 @@ function deserializeTSIntersectionType(pos) {

function deserializeTSParenthesizedType(pos) {
let node = deserializeTSType(pos + 8);
preserveParens && (node = {
node = {
type: 'TSParenthesizedType',
typeAnnotation: node,
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
});
};
return node;
}

Expand Down
17 changes: 8 additions & 9 deletions napi/parser/generated/deserialize/js_range.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
// Auto-generated code, DO NOT EDIT DIRECTLY!
// To edit this generated file you have to edit `tasks/ast_tools/src/generators/raw_transfer.rs`.

let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen, preserveParens;
let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen;
const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true }),
decodeStr = textDecoder.decode.bind(textDecoder),
{ fromCodePoint } = String;

export function deserialize(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeRawTransferData);
export function deserialize(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeRawTransferData);
}

export function deserializeProgramOnly(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeProgram);
export function deserializeProgramOnly(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeProgram);
}

function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, preserveParensInput, deserialize) {
function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, deserialize) {
uint8 = buffer;
uint32 = buffer.uint32;
float64 = buffer.float64;
sourceText = sourceTextInput;
sourceByteLen = sourceByteLenInput;
sourceIsAscii = sourceText.length === sourceByteLen;
preserveParens = preserveParensInput;
let data = deserialize(uint32[536870902]);
uint8 =
uint32 =
Expand Down Expand Up @@ -1025,7 +1024,7 @@ function deserializeChainElement(pos) {

function deserializeParenthesizedExpression(pos) {
let node = deserializeExpression(pos + 8);
if (preserveParens) {
{
let start, end;
node = {
type: 'ParenthesizedExpression',
Expand Down Expand Up @@ -2918,7 +2917,7 @@ function deserializeTSIntersectionType(pos) {

function deserializeTSParenthesizedType(pos) {
let node = deserializeTSType(pos + 8);
if (preserveParens) {
{
let start, end;
node = {
type: 'TSParenthesizedType',
Expand Down
21 changes: 10 additions & 11 deletions napi/parser/generated/deserialize/ts.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
// Auto-generated code, DO NOT EDIT DIRECTLY!
// To edit this generated file you have to edit `tasks/ast_tools/src/generators/raw_transfer.rs`.

let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen, preserveParens;
let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen;
const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true }),
decodeStr = textDecoder.decode.bind(textDecoder),
{ fromCodePoint } = String;

export function deserialize(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeRawTransferData);
export function deserialize(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeRawTransferData);
}

export function deserializeProgramOnly(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeProgram);
export function deserializeProgramOnly(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeProgram);
}

function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, preserveParensInput, deserialize) {
function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, deserialize) {
uint8 = buffer;
uint32 = buffer.uint32;
float64 = buffer.float64;
sourceText = sourceTextInput;
sourceByteLen = sourceByteLenInput;
sourceIsAscii = sourceText.length === sourceByteLen;
preserveParens = preserveParensInput;
let data = deserialize(uint32[536870902]);
uint8 =
uint32 =
Expand Down Expand Up @@ -1033,12 +1032,12 @@ function deserializeChainElement(pos) {

function deserializeParenthesizedExpression(pos) {
let node = deserializeExpression(pos + 8);
preserveParens && (node = {
node = {
type: 'ParenthesizedExpression',
expression: node,
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
});
};
return node;
}

Expand Down Expand Up @@ -2915,12 +2914,12 @@ function deserializeTSIntersectionType(pos) {

function deserializeTSParenthesizedType(pos) {
let node = deserializeTSType(pos + 8);
preserveParens && (node = {
node = {
type: 'TSParenthesizedType',
typeAnnotation: node,
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
});
};
return node;
}

Expand Down
17 changes: 8 additions & 9 deletions napi/parser/generated/deserialize/ts_range.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
// Auto-generated code, DO NOT EDIT DIRECTLY!
// To edit this generated file you have to edit `tasks/ast_tools/src/generators/raw_transfer.rs`.

let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen, preserveParens;
let uint8, uint32, float64, sourceText, sourceIsAscii, sourceByteLen;
const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true }),
decodeStr = textDecoder.decode.bind(textDecoder),
{ fromCodePoint } = String;

export function deserialize(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeRawTransferData);
export function deserialize(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeRawTransferData);
}

export function deserializeProgramOnly(buffer, sourceText, sourceByteLen, preserveParens) {
return deserializeWith(buffer, sourceText, sourceByteLen, preserveParens, deserializeProgram);
export function deserializeProgramOnly(buffer, sourceText, sourceByteLen) {
return deserializeWith(buffer, sourceText, sourceByteLen, deserializeProgram);
}

function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, preserveParensInput, deserialize) {
function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, deserialize) {
uint8 = buffer;
uint32 = buffer.uint32;
float64 = buffer.float64;
sourceText = sourceTextInput;
sourceByteLen = sourceByteLenInput;
sourceIsAscii = sourceText.length === sourceByteLen;
preserveParens = preserveParensInput;
let data = deserialize(uint32[536870902]);
uint8 =
uint32 =
Expand Down Expand Up @@ -1069,7 +1068,7 @@ function deserializeChainElement(pos) {

function deserializeParenthesizedExpression(pos) {
let node = deserializeExpression(pos + 8);
if (preserveParens) {
{
let start, end;
node = {
type: 'ParenthesizedExpression',
Expand Down Expand Up @@ -3046,7 +3045,7 @@ function deserializeTSIntersectionType(pos) {

function deserializeTSParenthesizedType(pos) {
let node = deserializeTSType(pos + 8);
if (preserveParens) {
{
let start, end;
node = {
type: 'TSParenthesizedType',
Expand Down
Loading
Loading