[#81999] [Ruby trunk Bug#13737] "can't modify frozen String" when installing bundled gems — ko1@...
Issue #13737 has been updated by ko1 (Koichi Sasada).
4 messages
2017/07/11
[#82005] [Ruby trunk Bug#13737] "can't modify frozen String" when installing bundled gems — nobu@...
Issue #13737 has been updated by nobu (Nobuyoshi Nakada).
3 messages
2017/07/12
[#82102] Re: register_fstring_tainted:FL_TEST_RAW(str, RSTRING_FSTR) — Eric Wong <normalperson@...>
Koichi Sasada <ko1@atdot.net> wrote:
4 messages
2017/07/18
[#82151] [Ruby trunk Feature#13637] [PATCH] tool/runruby.rb: test with smallest possible machine stack — Rei.Odaira@...
Issue #13637 has been updated by ReiOdaira (Rei Odaira).
3 messages
2017/07/24
[ruby-core:81960] [Ruby trunk Bug#11779] Module#using does not make sense as a method
From:
alxtskrnk@...
Date:
2017-07-07 17:07:33 UTC
List:
ruby-core #81960
Issue #11779 has been updated by bughit (bug hit).
matz (Yukihiro Matsumoto) wrote:
> Providing a feature by a method does not imply dynamic scoping, for example, Module#private etc. work in lexical scope.
I didn't think about Module#private too deeply at the time, but recently was prompted by something, and Module#private is not lexical
```ruby
module Mod1
class Class1
end
def self.lookup_class
Class1
end
lookup_class.class_eval do
def foo1
self
end
private
def foo2
self
end
end
lookup_class.instance_eval do
define_method :bar1 do
self
end
def bar1
self
end
private
def bar2
self
end
define_method :bar2 do
self
end
end
c1 = Class1.new
c1.foo1.foo2 rescue puts $!.inspect
Class1.bar1.bar2 rescue puts $!.inspect
c1.bar1.bar2 rescue puts $!.inspect
end
```
it affects the dynamically scoped default definee, which though dynamic does not necessarily match the receiver.
----------------------------------------
Bug #11779: Module#using does not make sense as a method
https://bugs.ruby-lang.org/issues/11779#change-65683
* Author: bughit (bug hit)
* Status: Feedback
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version:
* ruby -v: 2.2.3
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
1. it can't be called from another method
2. the receiver must be self
3. since refinements are lexically scoped the self receiver must match the currently open class
#3 is particularly curious
```ruby
module Refinement
refine String do
def refined?
true
end
end
end
module Foo
def self.refined?
''.refined? rescue false
end
end
module Bar
def self.refined?
''.refined? rescue false
end
Foo.module_eval do
using Refinement
end
end
p Foo.refined? #false
```
The module_eval `#using` call does not raise (it's not from a method and the receiver is self), but evidently because currently open class does not match self, it does not do anything. So it should at least raise.
So `#using`, though a method, does not function as a method, which is misleading.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>