From: alanwucanada@... Date: 2019-01-31T04:36:38+00:00 Subject: [ruby-core:91350] [Ruby trunk Feature#15575] Prohibit to pass a block singleton class Issue #15575 has been updated by alanwu (Alan Wu). Another option would be to make everything use lexical scope, if the strangeness is indeed because locals are inaccessible inside class << self. So imagine the following printing 1 2 3. ``` ruby foo = 1 class A bar = 2 def hi baz = 3 class << self p foo, bar, baz end end end A.new.hi ``` Is it less strange if everything used the same scoping rule? ---------------------------------------- Feature #15575: Prohibit to pass a block singleton class https://bugs.ruby-lang.org/issues/15575#change-76602 * Author: ko1 (Koichi Sasada) * Status: Open * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) * Target version: ---------------------------------------- The following code works now: ``` def foo class << Object.new yield end end foo{ p :ok } #=> :ok ``` but I think this feature is very strange because local variables are not active in singleton class. How about to prohibit this feature? plan: warning at ruby 2.7 and prohibit it in ruby 3. -- https://bugs.ruby-lang.org/ Unsubscribe: