diff --git a/prism_compile.c b/prism_compile.c index 0f3b3966b8..ffa5cc77a2 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -2510,6 +2510,13 @@ pm_scope_node_init(const pm_node_t *node, pm_scope_node_t *scope, pm_scope_node_ scope->parameters = cast->parameters; scope->body = cast->body; scope->locals = cast->locals; + + if (cast->parameters != NULL) { + scope->base.location.start = cast->parameters->location.start; + } + else { + scope->base.location.start = cast->operator_loc.end; + } break; } case PM_MODULE_NODE: { diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index c48b7ac085..927ce3fa0e 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -1838,6 +1838,15 @@ end assert_prism_eval("-> { to_s }.call") end + def test_LambdaNode_with_multiline_args + assert_prism_eval(<<-CODE) + -> (a, + b) { + a + b + }.call(1, 2) + CODE + end + def test_ModuleNode assert_prism_eval("module M; end") assert_prism_eval("module M::N; end")