Support export { default as (name) }

This commit is contained in:
Andrew Morris
2023-03-12 15:51:06 +11:00
parent 8d54c0907c
commit 98d92b67e6
3 changed files with 16 additions and 12 deletions

View File

@@ -2,8 +2,6 @@ export default function foo() {
return "this is the foo function";
}
export { foo };
export function other() {
return "this is the other function";
}

View File

@@ -1,2 +1,2 @@
export { foo } from "./foo.ts";
export { default as foo } from "./foo.ts";
export { barExported as bar } from "./bar.ts";

View File

@@ -523,17 +523,23 @@ impl ModuleCompiler {
self.module.definitions.push(Definition {
pointer: defn.clone(),
content: DefinitionContent::Lazy(Lazy {
body: vec![
InstructionOrLabel::Instruction(Instruction::ImportStar(
body: match orig_name == "default" {
true => vec![InstructionOrLabel::Instruction(Instruction::Import(
Value::String(src.value.to_string()),
Register::Return,
)),
InstructionOrLabel::Instruction(Instruction::Sub(
Value::Register(Register::Return),
Value::String(orig_name.clone()),
Register::Return,
)),
],
))],
false => vec![
InstructionOrLabel::Instruction(Instruction::ImportStar(
Value::String(src.value.to_string()),
Register::Return,
)),
InstructionOrLabel::Instruction(Instruction::Sub(
Value::Register(Register::Return),
Value::String(orig_name.clone()),
Register::Return,
)),
],
},
}),
});