diff --git a/crates/oxc_ast/src/serialize/ts.rs b/crates/oxc_ast/src/serialize/ts.rs index cdf03ce5c5731..4e903349157f8 100644 --- a/crates/oxc_ast/src/serialize/ts.rs +++ b/crates/oxc_ast/src/serialize/ts.rs @@ -297,9 +297,10 @@ impl ESTree for TSTypeNameIdentifierReference<'_, '_> { raw_deser = " let expression = DESER[TSTypeName](POS_OFFSET.expression); if (expression.type === 'TSQualifiedName') { + let object = expression.left; let parent = expression = { type: 'MemberExpression', - object: expression.left, + object, property: expression.right, optional: false, computed: false, @@ -307,17 +308,18 @@ impl ESTree for TSTypeNameIdentifierReference<'_, '_> { end: expression.end, }; - while (parent.object.type === 'TSQualifiedName') { - const object = parent.object; + while (object.type === 'TSQualifiedName') { + const { left } = object; parent = parent.object = { type: 'MemberExpression', - object: object.left, + object: left, property: object.right, optional: false, computed: false, start: object.start, end: object.end, }; + object = left; } } expression diff --git a/napi/parser/generated/deserialize/js.js b/napi/parser/generated/deserialize/js.js index 45a36f13882f2..074720acae566 100644 --- a/napi/parser/generated/deserialize/js.js +++ b/napi/parser/generated/deserialize/js.js @@ -1627,9 +1627,10 @@ function deserializeTSTypeAliasDeclaration(pos) { function deserializeTSClassImplements(pos) { let expression = deserializeTSTypeName(pos + 8); if (expression.type === 'TSQualifiedName') { + let object = expression.left; let parent = expression = { type: 'MemberExpression', - object: expression.left, + object, property: expression.right, optional: false, computed: false, @@ -1637,17 +1638,18 @@ function deserializeTSClassImplements(pos) { end: expression.end, }; - while (parent.object.type === 'TSQualifiedName') { - const object = parent.object; + while (object.type === 'TSQualifiedName') { + const { left } = object; parent = parent.object = { type: 'MemberExpression', - object: object.left, + object: left, property: object.right, optional: false, computed: false, start: object.start, end: object.end, }; + object = left; } } return { diff --git a/napi/parser/generated/deserialize/ts.js b/napi/parser/generated/deserialize/ts.js index 035d35f1434f6..de1ee4151e4a4 100644 --- a/napi/parser/generated/deserialize/ts.js +++ b/napi/parser/generated/deserialize/ts.js @@ -1758,9 +1758,10 @@ function deserializeTSTypeAliasDeclaration(pos) { function deserializeTSClassImplements(pos) { let expression = deserializeTSTypeName(pos + 8); if (expression.type === 'TSQualifiedName') { + let object = expression.left; let parent = expression = { type: 'MemberExpression', - object: expression.left, + object, property: expression.right, optional: false, computed: false, @@ -1768,17 +1769,18 @@ function deserializeTSClassImplements(pos) { end: expression.end, }; - while (parent.object.type === 'TSQualifiedName') { - const object = parent.object; + while (object.type === 'TSQualifiedName') { + const { left } = object; parent = parent.object = { type: 'MemberExpression', - object: object.left, + object: left, property: object.right, optional: false, computed: false, start: object.start, end: object.end, }; + object = left; } } return {