diff --git a/crates/oxc_isolated_declarations/src/class.rs b/crates/oxc_isolated_declarations/src/class.rs index 0316624b8..cadaa08d5 100644 --- a/crates/oxc_isolated_declarations/src/class.rs +++ b/crates/oxc_isolated_declarations/src/class.rs @@ -238,7 +238,7 @@ impl<'a> IsolatedDeclarations<'a> { ) -> oxc_allocator::Vec<'a, ClassElement<'a>> { let mut elements = self.ast.new_vec(); for (index, param) in function.params.items.iter().enumerate() { - if param.accessibility.is_some() { + if param.accessibility.is_some() || param.readonly { // transformed params will definitely have type annotation let type_annotation = self.ast.copy(¶ms.items[index].pattern.type_annotation); if let Some(new_element) = diff --git a/crates/oxc_isolated_declarations/src/function.rs b/crates/oxc_isolated_declarations/src/function.rs index 12c7278f6..bb581f3e3 100644 --- a/crates/oxc_isolated_declarations/src/function.rs +++ b/crates/oxc_isolated_declarations/src/function.rs @@ -106,14 +106,7 @@ impl<'a> IsolatedDeclarations<'a> { ); } - Some(self.ast.formal_parameter( - param.span, - pattern, - None, - param.readonly, - false, - self.ast.new_vec(), - )) + Some(self.ast.formal_parameter(param.span, pattern, None, false, false, self.ast.new_vec())) } pub fn transform_formal_parameters( diff --git a/crates/oxc_isolated_declarations/tests/fixtures/class.ts b/crates/oxc_isolated_declarations/tests/fixtures/class.ts index e5a4f40dd..ae8b2713f 100644 --- a/crates/oxc_isolated_declarations/tests/fixtures/class.ts +++ b/crates/oxc_isolated_declarations/tests/fixtures/class.ts @@ -22,3 +22,11 @@ export class Baz { readonly prop1 = 'some string'; prop2 = 'another string'; } + +export class Boo { + constructor( + public readonly prop: number = 0, + private readonly prop2: number = 1, + readonly prop3: number = 1, + ) {} +} diff --git a/crates/oxc_isolated_declarations/tests/snapshots/class.snap b/crates/oxc_isolated_declarations/tests/snapshots/class.snap index 2a754eedc..5a598fed7 100644 --- a/crates/oxc_isolated_declarations/tests/snapshots/class.snap +++ b/crates/oxc_isolated_declarations/tests/snapshots/class.snap @@ -22,3 +22,9 @@ export declare class Baz { readonly prop1: 'some string'; prop2: string; } +export declare class Boo { + readonly prop: number; + private readonly prop2: number; + readonly prop3: number; + constructor(prop?: number, prop2?: number, prop3?: number); +}