Fork of daniellemaywood.uk/gleam — Wasm codegen work
2

Configure Feed

Select the types of activity you want to include in your feed.

Fix bug where custom panic message would get lifted

+66 -1
+1 -1
compiler-core/src/javascript/expression.rs
··· 957 957 ) -> Output<'a> { 958 958 let message = match message { 959 959 Some(m) => { 960 - self.not_in_tail_position(Some(Ordering::Loose), |this| this.expression(m))? 960 + self.not_in_tail_position(Some(Ordering::Strict), |this| this.expression(m))? 961 961 } 962 962 None => string("Pattern match failed, no pattern matched the value."), 963 963 };
+21
compiler-core/src/javascript/tests/blocks.rs
··· 323 323 " 324 324 ) 325 325 } 326 + 327 + // https://github.com/gleam-lang/gleam/issues/4395 328 + #[test] 329 + fn let_assert_message_no_lifted() { 330 + assert_js!( 331 + r#" 332 + fn side_effects(x) { 333 + // Some side effects 334 + x 335 + } 336 + 337 + pub fn main() { 338 + let assert Error(Nil) = side_effects(Ok(10)) 339 + as { 340 + let message = side_effects("some message") 341 + message 342 + } 343 + } 344 + "# 345 + ) 346 + }
+44
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__blocks__let_assert_message_no_lifted.snap
··· 1 + --- 2 + source: compiler-core/src/javascript/tests/blocks.rs 3 + expression: "\nfn side_effects(x) {\n // Some side effects\n x\n}\n\npub fn main() {\n let assert Error(Nil) = side_effects(Ok(10))\n as {\n let message = side_effects(\"some message\")\n message\n }\n}\n" 4 + --- 5 + ----- SOURCE CODE 6 + 7 + fn side_effects(x) { 8 + // Some side effects 9 + x 10 + } 11 + 12 + pub fn main() { 13 + let assert Error(Nil) = side_effects(Ok(10)) 14 + as { 15 + let message = side_effects("some message") 16 + message 17 + } 18 + } 19 + 20 + 21 + ----- COMPILED JAVASCRIPT 22 + import { Ok, makeError } from "../gleam.mjs"; 23 + 24 + function side_effects(x) { 25 + return x; 26 + } 27 + 28 + export function main() { 29 + let $ = side_effects(new Ok(10)); 30 + if ($.isOk() || $[0]) { 31 + throw makeError( 32 + "let_assert", 33 + "my/mod", 34 + 8, 35 + "main", 36 + (() => { 37 + let message = side_effects("some message"); 38 + return message; 39 + })(), 40 + { value: $ } 41 + ) 42 + } 43 + return $; 44 + }