Fork of daniellemaywood.uk/gleam — Wasm codegen work
Something went wrong. Try again.
3.9 kB · 214 lines
Rust
at wasm
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215// SPDX-License-Identifier: Apache-2.0// SPDX-FileCopyrightText: 2021 The Gleam contributors
use crate::assert_js;use crate::javascript::tests::CURRENT_PACKAGE;
#[test]fn empty_module() { // Renders an export statement to ensure it's an ESModule assert_js!("", "export {}\n");}
#[test]fn unqualified_fn_call() { assert_js!( ("rocket_ship", r#"pub fn launch() { 1 }"#), r#"import rocket_ship.{launch}pub fn go() { launch() }"#, );}
#[test]fn aliased_unqualified_fn_call() { assert_js!( ("rocket_ship", r#"pub fn launch() { 1 }"#), r#"import rocket_ship.{launch as boom_time}pub fn go() { boom_time() }"#, );}
#[test]fn multiple_unqualified_fn_call() { assert_js!( ( CURRENT_PACKAGE, "rocket_ship", r#"pub fn a() { 1 }pub fn b() { 2 }"# ), r#"import rocket_ship.{a,b as bb}pub fn go() { a() + bb() }"#, );}
#[test]fn constant() { assert_js!( ("rocket_ship", r#"pub const x = 1"#), r#"import rocket_shippub fn go() { rocket_ship.x }"#, );}
#[test]fn alias_aliased_constant() { assert_js!( ("rocket_ship", r#"pub const x = 1"#), r#"import rocket_ship.{ x as y }pub const z = y"#, );}
#[test]fn renamed_module() { assert_js!( ("x", r#"pub const v = 1"#), r#"import x as ypub const z = y.v"#, );}
#[test]fn nested_module_constant() { assert_js!( ( CURRENT_PACKAGE, "rocket_ship/launcher", r#"pub const x = 1"# ), r#"import rocket_ship/launcherpub fn go() { launcher.x }"#, );}
#[test]fn alias_constant() { assert_js!( ("rocket_ship", r#"pub const x = 1"#), r#"import rocket_ship as booppub fn go() { boop.x }"#, );}
#[test]fn alias_fn_call() { assert_js!( ("rocket_ship", r#"pub fn go() { 1 }"#), r#"import rocket_ship as booppub fn go() { boop.go() }"#, );}
#[test]fn nested_fn_call() { assert_js!( ("one/two", r#"pub fn go() { 1 }"#), r#"import one/twopub fn go() { two.go() }"#, );}
#[test]fn nested_nested_fn_call() { assert_js!( ("one/two/three", r#"pub fn go() { 1 }"#), r#"import one/two/threepub fn go() { three.go() }"#, );}
#[test]fn different_package_import() { assert_js!( ("other_package", "one", r#"pub fn go() { 1 }"#), r#"import onepub fn go() { one.go() }"#, );}
#[test]fn nested_same_package() { assert_js!( ("one/two/three", r#"pub fn go() { 1 }"#), r#"import one/two/threepub fn go() { three.go() }"#, );}
#[test]fn discarded_duplicate_import() { assert_js!( ("esa/rocket_ship", r#"pub fn go() { 1 }"#), ("nasa/rocket_ship", r#"pub fn go() { 1 }"#), r#"import esa/rocket_shipimport nasa/rocket_ship as _nasa_rocketpub fn go() { rocket_ship.go() }"# );}
#[test]fn discarded_duplicate_import_with_unqualified() { assert_js!( ("esa/rocket_ship", r#"pub fn go() { 1 }"#), ("nasa/rocket_ship", r#"pub fn go() { 1 }"#), r#"import esa/rocket_shipimport nasa/rocket_ship.{go} as _nasa_rocketpub fn esa_go() { rocket_ship.go() }pub fn nasa_go() { go() }"# );}
#[test]fn import_with_keyword() { assert_js!( ( CURRENT_PACKAGE, "rocket_ship", r#"pub const class = 1pub const in = 2"# ), r#"import rocket_ship.{class, in as while}pub fn main() { #(class, while)}"# );}
// https://github.com/gleam-lang/gleam/issues/3004#[test]fn constant_module_access_with_keyword() { assert_js!( ("rocket_ship", r#"pub const class = 1"#), r#"import rocket_shippub const variable = rocket_ship.class"#, );}