mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 12:19:15 +00:00
feat(isolated-declarations): support for export default function overloads (#3809)
This commit is contained in:
parent
eadf495e85
commit
231b8f0946
2 changed files with 23 additions and 8 deletions
|
|
@ -328,6 +328,7 @@ impl<'a> IsolatedDeclarations<'a> {
|
|||
stmts: oxc_allocator::Vec<'a, Statement<'a>>,
|
||||
) -> impl Iterator<Item = Statement<'a>> + '_ {
|
||||
let mut last_function_name: Option<Atom<'a>> = None;
|
||||
let mut is_export_default_function_overloads = false;
|
||||
|
||||
stmts.into_iter().filter_map(move |stmt| match stmt {
|
||||
Statement::FunctionDeclaration(ref func) => {
|
||||
|
|
@ -373,6 +374,21 @@ impl<'a> IsolatedDeclarations<'a> {
|
|||
Some(stmt)
|
||||
}
|
||||
}
|
||||
Statement::ExportDefaultDeclaration(ref decl) => {
|
||||
if let ExportDefaultDeclarationKind::FunctionDeclaration(ref func) =
|
||||
decl.declaration
|
||||
{
|
||||
if is_export_default_function_overloads && func.body.is_some() {
|
||||
is_export_default_function_overloads = false;
|
||||
return None;
|
||||
}
|
||||
is_export_default_function_overloads = true;
|
||||
Some(stmt)
|
||||
} else {
|
||||
is_export_default_function_overloads = false;
|
||||
Some(stmt)
|
||||
}
|
||||
}
|
||||
_ => Some(stmt),
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -360,14 +360,13 @@ export function foo(a: any): number {
|
|||
"export default function(a: number, b: number): number {};",
|
||||
"export default function(a: number, b: number): number;",
|
||||
);
|
||||
// TODO export default function overloads
|
||||
// transform_dts_test(
|
||||
// "export default function(a: number, b: number): number;
|
||||
// export default function(a: number, b: number): any {
|
||||
// return foo
|
||||
// };",
|
||||
// "export default function(a: number, b: number): number;",
|
||||
// );
|
||||
transform_dts_test(
|
||||
"export default function(a: number, b: number): number;
|
||||
export default function(a: number, b: number): any {
|
||||
return foo
|
||||
};",
|
||||
"export default function(a: number, b: number): number;",
|
||||
);
|
||||
transform_dts_test(
|
||||
"export default class {foo = 2};",
|
||||
"export default class {\n foo: number;\n}",
|
||||
|
|
|
|||
Loading…
Reference in a new issue