From: duerst@... Date: 2019-02-05T03:27:30+00:00 Subject: [ruby-core:91403] [Ruby trunk Feature#15574] Prohibit to pass a block on super() implicitly Issue #15574 has been updated by duerst (Martin D��rst). ko1 (Koichi Sasada) wrote: > Why don't you pass a block parameter explicitly? > Because you know the spec and intentional, or simply forget to pass it (and working it with this spec fortunately)? Until quite recently, using an explicit block parameter was (considered to be?) less efficient than an implicit block parameter. ---------------------------------------- Feature #15574: Prohibit to pass a block on super() implicitly https://bugs.ruby-lang.org/issues/15574#change-76659 * Author: ko1 (Koichi Sasada) * Status: Open * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) * Target version: ---------------------------------------- As described in [Feature #15554], `super()` (not `super`) pass the given block. ``` class C def foo p block_given? end end class C1 < C def foo super #=> true super() #=> true end end C1.new.foo{} ``` `super` (without parameters) passes all passed parameters so it is no surprise to pass given block. However, `super()` (with parameters. In this case, it passes 0 parameters) also pass given block implicitly. I'm not sure who use this behavior, but I think it is simple to prohibit such implicit block passing. -- https://bugs.ruby-lang.org/ Unsubscribe: