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

Configure Feed

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

fix generated erlang code for externals with discarded arguments

author
Giacomo Cavalieri
committer
Louis Pilfold
date (Jul 15, 2026, 2:16 PM +0100) commit 1b62fdf3 parent 5c775ced change-id mlqutvyu
+35 -11
+1 -7
compiler-core/src/erlang.rs
··· 739 739 name, 740 740 name_location: location, 741 741 .. 742 - } if is_external => { 743 - if name.chars().all(|char| char == '_') { 744 - self.new_generated_variable() 745 - } else { 746 - self.new_erlang_variable(name, *location) 747 - } 748 - } 742 + } if is_external => self.new_generated_variable(), 749 743 ArgNames::Discard { .. } | ArgNames::LabelledDiscard { .. } => EcoString::from("_"), 750 744 ArgNames::Named { name, location } 751 745 | ArgNames::NamedLabelled {
+11
compiler-core/src/erlang/tests/external_fn.rs
··· 423 423 "# 424 424 ); 425 425 } 426 + 427 + #[test] 428 + // https://github.com/gleam-lang/gleam/issues/5970 429 + fn discarded_argument_called_value_does_not_have_the_same_name_as_discarded_one() { 430 + assert_erl!( 431 + r#" 432 + @external(erlang, "wibble", "wobble") 433 + pub fn woo(_: a, _value: b) -> Nil 434 + "# 435 + ); 436 + }
+2 -2
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__external_fn__discarded_arg_in_external_are_passed_correctly.snap
··· 15 15 16 16 -file("project/test/my/mod.gleam", 3). 17 17 -spec woo(any()) -> nil. 18 - woo(_a) -> 19 - wibble:wobble(_a). 18 + woo(_value) -> 19 + wibble:wobble(_value).
+19
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__external_fn__discarded_argument_called_value_does_not_have_the_same_name_as_discarded_one.snap
··· 1 + --- 2 + source: compiler-core/src/erlang/tests/external_fn.rs 3 + expression: "\n@external(erlang, \"wibble\", \"wobble\")\npub fn woo(_: a, _value: b) -> Nil\n" 4 + --- 5 + ----- SOURCE CODE 6 + 7 + @external(erlang, "wibble", "wobble") 8 + pub fn woo(_: a, _value: b) -> Nil 9 + 10 + 11 + ----- COMPILED ERLANG 12 + -module(my@mod). 13 + -compile([no_auto_import, nowarn_ignored, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). 14 + -export([woo/2]). 15 + 16 + -file("project/test/my/mod.gleam", 3). 17 + -spec woo(any(), any()) -> nil. 18 + woo(_value, _value@1) -> 19 + wibble:wobble(_value, _value@1).
+2 -2
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__external_fn__multiple_discarded_args_in_external_are_passed_correctly_2.snap
··· 15 15 16 16 -file("project/test/my/mod.gleam", 3). 17 17 -spec woo(any(), any()) -> nil. 18 - woo(_value, _two) -> 19 - wibble:wobble(_value, _two). 18 + woo(_value, _value@1) -> 19 + wibble:wobble(_value, _value@1).