Fork of daniellemaywood.uk/gleam — Wasm codegen work
Something went wrong. Try again.
2.5 kB · 215 lines
Rust
at wasm
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216// SPDX-License-Identifier: Apache-2.0// SPDX-FileCopyrightText: 2021 The Gleam contributors
use crate::{assert_js, assert_ts_def};
#[test]fn expressions() { assert_js!( r#"pub fn go() { True False Nil}"# );}
#[test]fn constants() { assert_js!( r#"pub const a = Truepub const b = Falsepub const c = Nil"#, );}
#[test]fn constants_typescript() { assert_ts_def!( r#"pub const a = Truepub const b = Falsepub const c = Nil"#, );}
#[test]fn operators() { assert_js!( r#"pub fn go() { True && True False || False}"#, );}
#[test]fn assigning() { assert_js!( r#"pub fn go(x, y) { let assert True = x let assert False = x let assert Nil = y}"#, );}
// https://github.com/gleam-lang/gleam/issues/1112// differentiate between prelude constructors and custom type constructors#[test]fn shadowed_bools_and_nil() { assert_js!( r#"pub type True { True False Nil }pub fn go(x, y) { let assert True = x let assert False = x let assert Nil = y}"#, );}
#[test]fn shadowed_bools_and_nil_typescript() { assert_ts_def!( r#"pub type True { True False Nil }pub fn go(x, y) { let assert True = x let assert False = x let assert Nil = y}"#, );}
#[test]fn equality() { assert_js!( r#"pub fn go(a, b) { a == True a != True a == False a != False a == a a != a b == Nil b != Nil b == b}"#, );}
#[test]fn case() { assert_js!( r#"pub fn go(a) { case a { True -> 1 False -> 0 }}"#, );}
#[test]fn nil_case() { assert_js!( r#"pub fn go(a) { case a { Nil -> 0 }}"#, );}
#[test]fn negation() { assert_js!( "pub fn negate(x) { !x}" );}
#[test]fn negation_block() { assert_js!( "pub fn negate(x) { !{ 123 x }}" );}
#[test]fn binop_panic_right() { assert_js!( "pub fn negate(x) { x && panic}" );}
#[test]fn binop_panic_left() { assert_js!( "pub fn negate(x) { panic && x}" );}
#[test]fn binop_todo_right() { assert_js!( "pub fn negate(x) { x && todo}" );}
#[test]fn binop_todo_left() { assert_js!( "pub fn negate(x) { todo && x}" );}
#[test]fn negate_panic() { assert_js!( "pub fn negate(x) { !panic}" );}
#[test]fn negate_todo() { assert_js!( "pub fn negate(x) { !todo}" );}