From a4df418a68003daf67df3698c8944bec08ddcda3 Mon Sep 17 00:00:00 2001 From: playX Date: Fri, 3 Sep 2021 13:00:24 +0300 Subject: [PATCH] js: support `[export: 'AnotherName']` for FnDecl codegen (#11377) --- vlib/builtin/js/builtin.js.v | 9 +++++++-- vlib/v/gen/js/js.v | 9 ++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/vlib/builtin/js/builtin.js.v b/vlib/builtin/js/builtin.js.v index dd610feef7..09fa32d0c7 100644 --- a/vlib/builtin/js/builtin.js.v +++ b/vlib/builtin/js/builtin.js.v @@ -5,9 +5,14 @@ pub fn js_throw(s any) { #throw s } +# let globalPrint; +$if js_freestanding { + # globalPrint = globalThis.print +} + pub fn println(s string) { $if js_freestanding { - #print(s.str) + #globalPrint(s.str) } $else { #console.log(s.str) } @@ -23,7 +28,7 @@ pub fn print(s string) { pub fn eprintln(s string) { $if js_freestanding { - #print(s.str) + #globalPrint(s.str) } $else { #console.error(s.str) } diff --git a/vlib/v/gen/js/js.v b/vlib/v/gen/js/js.v index ee71ed2cf0..fc36d9f49d 100644 --- a/vlib/v/gen/js/js.v +++ b/vlib/v/gen/js/js.v @@ -1452,7 +1452,14 @@ fn (mut g JsGen) gen_method_decl(it ast.FnDecl, typ FnGenType) { g.stmts(it.stmts) g.writeln('}') - + for attr in it.attrs { + match attr.name { + 'export' { + g.writeln('globalThis.$attr.arg = ${g.js_name(it.name)};') + } + else {} + } + } if is_main { g.write(')();') } else if typ != .struct_method {