[#107867] Fwd: [ruby-cvs:91197] 8f59482f5d (master): add some tests for Unicode Version 14.0.0 — Martin J. Dürst <duerst@...>
To everybody taking care of continuous integration:
3 messages
2022/03/13
[#108090] [Ruby master Bug#18666] No rule to make target 'yaml/yaml.h', needed by 'api.o' — duerst <noreply@...>
Issue #18666 has been reported by duerst (Martin D端rst).
7 messages
2022/03/28
[#108117] [Ruby master Feature#18668] Merge `io-nonblock` gems into core — "Eregon (Benoit Daloze)" <noreply@...>
Issue #18668 has been reported by Eregon (Benoit Daloze).
22 messages
2022/03/30
[ruby-core:107821] [Ruby master Feature#18618] no clobber def
From:
"byroot (Jean Boussier)" <noreply@...>
Date:
2022-03-10 12:25:18 UTC
List:
ruby-core #107821
Issue #18618 has been updated by byroot (Jean Boussier).
Note that you could perfectly implement this in pure Ruby today.
```ruby
module ClobberChecker
def method_added(name)
super
no_clobber(name, caller(1, 1).first) if @no_clobber
end
end
class Class
def no_clobber(method_name = nil, callsite = caller(1, 1).first)
if method_name
if (super_method = instance_method(method_name).super_method)
warn "Clobbering #{super_method.owner}##{super_method.name} (#{callsite})"
end
else
extend(ClobberChecker)
@no_clobber = true
end
end
end
class A
def foo
end
def bar
end
end
class B < A
no_clobber def foo
end
no_clobber
def bar
end
end
```
There might be some subtleties though, if for instance you include a module after defining a method.
----------------------------------------
Feature #18618: no clobber def
https://bugs.ruby-lang.org/issues/18618#change-96750
* Author: ed_ (Ed Mangimelli)
* Status: Open
* Priority: Normal
----------------------------------------
Sometimes I want to be certain I'm not clobbering/masking a method:
```
class Dog
def bark
'bark!'
end
end
class Poodle < Dog
raise if method_defined? :bark
def bark
'bow-wow'
end
end
```
I propose creating a shorthand. Maybe something like:
```
class Dog
def bark
'bark!'
end
end
class Poodle < Dog
ncdef bark # "no clobber" def
'bow-wow'
end
end
=> #<MethodAlreadyDefined: Method `bark' already defined.>
```
This would be useful in scenarios where subclassing a class (or including a mixin) ***you don't own*** is common practice --for instance, subclassing `ApplicationRecord` for your model in Rails.
I agree that `ncdef` is pretty ugly. Maybe `def!`
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>