Project

General

Profile

Actions

Bug #10413

closed

Unexpected block invocation with unknown keywords

Added by ko1 (Koichi Sasada) over 9 years ago. Updated over 9 years ago.

Status:
Closed
Target version:
ruby -v:
2.2dev
[ruby-core:65837]

Description

When unknown keywords are passed, unexpected block is invoked.

def bar(k2: 'v2')
end

def foo
  bar(k1: 1)
end

foo(){
  puts caller_locations
  raise "unreachable"
}

current behavior:

ruby 2.2.0dev (2014-10-22 trunk 48083) [i386-mswin32_110]
test.rb:10:in `block in <main>': unreachable (RuntimeError)
	from test.rb:5:in `foo'
	from test.rb:8:in `<main>'
test.rb:5:in `foo'
test.rb:8:in `<main>'

expected:

../../gitruby/test.rb:5:in `foo': unknown keyword: k1 (ArgumentError)
        from ../../gitruby/test.rb:8:in `<main>'

This strange behavior is because "unknown_keyword_error" in class.c calls rb_hash_delete() (Hash#delete) with :k1 and invoke passed block.

I'm now re-writing all of this part and my branch does not have this problem.
However, Ruby 2.0 and 2.1 have same problem.


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #10623: rb_hash_delete() can return Qundef in 2.2-rc1Closed12/20/2014Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0