diff --git a/crates/oxc_codegen/src/gen.rs b/crates/oxc_codegen/src/gen.rs index 68047ddc44bc9..5edbe14f73fed 100644 --- a/crates/oxc_codegen/src/gen.rs +++ b/crates/oxc_codegen/src/gen.rs @@ -767,8 +767,8 @@ impl Gen for Function<'_> { this_param.print(p, ctx); if !self.params.is_empty() || self.params.rest.is_some() { p.print_str(","); + p.print_soft_space(); } - p.print_soft_space(); } self.params.print(p, ctx); p.print_ascii_byte(b')'); @@ -2675,6 +2675,13 @@ impl Gen for MethodDefinition<'_> { type_parameters.print(p, ctx); } p.print_ascii_byte(b'('); + if let Some(this_param) = &self.value.this_param { + this_param.print(p, ctx); + if !self.value.params.is_empty() || self.value.params.rest.is_some() { + p.print_str(","); + p.print_soft_space(); + } + } self.value.params.print(p, ctx); p.print_ascii_byte(b')'); if let Some(return_type) = &self.value.return_type { @@ -3365,8 +3372,8 @@ impl Gen for TSFunctionType<'_> { this_param.print(p, ctx); if !self.params.is_empty() || self.params.rest.is_some() { p.print_str(","); + p.print_soft_space(); } - p.print_soft_space(); } self.params.print(p, ctx); p.print_str(")"); @@ -3401,8 +3408,8 @@ impl Gen for TSSignature<'_> { this_param.print(p, ctx); if !signature.params.is_empty() || signature.params.rest.is_some() { p.print_str(","); + p.print_soft_space(); } - p.print_soft_space(); } signature.params.print(p, ctx); p.print_str(")"); @@ -3460,8 +3467,8 @@ impl Gen for TSSignature<'_> { this_param.print(p, ctx); if !signature.params.is_empty() || signature.params.rest.is_some() { p.print_str(","); + p.print_soft_space(); } - p.print_soft_space(); } signature.params.print(p, ctx); p.print_str(")"); diff --git a/crates/oxc_isolated_declarations/tests/fixtures/eliminate-imports.ts b/crates/oxc_isolated_declarations/tests/fixtures/eliminate-imports.ts index 91534365f16a5..6ce8e95ce62a1 100644 --- a/crates/oxc_isolated_declarations/tests/fixtures/eliminate-imports.ts +++ b/crates/oxc_isolated_declarations/tests/fixtures/eliminate-imports.ts @@ -1,10 +1,11 @@ -import { AExtend, BExtend, Type, CImplements1, CImplements2, CType, ThisType1, ThisType2, Unused } from 'mod'; +import { AExtend, BExtend, Type, CImplements1, CImplements2, CType, ThisType1, ThisType2, ThisType3, Unused } from 'mod'; export interface A extends AExtend {} export class B extends BExtend {} export class C implements CImplements1, CImplements2 {} -export function foo(this: ThisType1): void {} -export const bar: (this: ThisType2) => void = function() {} +export class D { method(this: ThisType1): void { } } +export function foo(this: ThisType2): void {} +export const bar: (this: ThisType3) => void = function() {} import { type InferType1, type InferType2 } from 'infer'; diff --git a/crates/oxc_isolated_declarations/tests/snapshots/eliminate-imports.snap b/crates/oxc_isolated_declarations/tests/snapshots/eliminate-imports.snap index c0516ca5c7f42..a4b4430bccfe8 100644 --- a/crates/oxc_isolated_declarations/tests/snapshots/eliminate-imports.snap +++ b/crates/oxc_isolated_declarations/tests/snapshots/eliminate-imports.snap @@ -5,12 +5,15 @@ input_file: crates/oxc_isolated_declarations/tests/fixtures/eliminate-imports.ts ``` ==================== .D.TS ==================== -import { AExtend, BExtend, Type, CImplements1, CImplements2, CType, ThisType1, ThisType2 } from "mod"; +import { AExtend, BExtend, Type, CImplements1, CImplements2, CType, ThisType1, ThisType2, ThisType3 } from "mod"; export interface A extends AExtend {} export declare class B extends BExtend {} export declare class C implements CImplements1, CImplements2 {} -export declare function foo(this: ThisType1 ): void; -export declare const bar: (this: ThisType2 ) => void; +export declare class D { + method(this: ThisType1): void; +} +export declare function foo(this: ThisType2): void; +export declare const bar: (this: ThisType3) => void; import { type InferType1, type InferType2 } from "infer"; export type F = X extends infer U extends InferType2 ? U : never; export { Unused } from "./unused";