natalie icon indicating copy to clipboard operation
natalie copied to clipboard

Bug with evaluation of method argument default value

Open seven1m opened this issue 7 months ago • 1 comments

We shouldn't always evaluate the default value of an argument. Given the following code:

# default.rb

def foo(bar = (bar_missing = true))
  p(bar:, bar_missing:)
end

foo
foo(1)

CRuby produces:

→ ruby default.rb                                                                                                                                                                
{:bar=>true, :bar_missing=>true}
{:bar=>1, :bar_missing=>nil}

But Natalie produces:

→ bin/natalie default.rb
{:bar=>true, :bar_missing=>true}
{:bar=>1, :bar_missing=>true}

seven1m avatar Jul 10 '24 03:07 seven1m