[#115884] Windows Ruby 3.2.2: Non-English character added to Windows Registry String Value — Jay Mav via ruby-core <ruby-core@...>
Hello,
3 messages
2023/12/24
[ruby-core:115609] [Ruby master Bug#20043] `defined?` checks for method existence but only sometimes
From:
"byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Date:
2023-12-06 15:33:22 UTC
List:
ruby-core #115609
Issue #20043 has been updated by byroot (Jean Boussier).
> Is there any use case for defined? besides those?
Instance variables for sure: `defined?(@ivar)`.
Also checking for super: `defined?(super)`.
Some people use it for a sequence of calls: `defined?(foo.bar.baz)`.
----------------------------------------
Bug #20043: `defined?` checks for method existence but only sometimes
https://bugs.ruby-lang.org/issues/20043#change-105540
* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.3.0dev (2023-12-05T21:25:34Z master 56eccb350b) [arm64-darwin23]
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
When an expression is passed to `defined?`, it will _sometimes_ check if a method in a sub-expression is defined and sometimes it won't.
For example:
```
$ ./miniruby -e'p defined?(a)'
nil
$ ./miniruby -e'p defined?([a])'
nil
```
In the above case, Ruby will check whether or not the method `a` is defined, and it returns `nil`. However, if you use a splat, it will not check:
```
$ ./miniruby -e'p defined?([*a])'
"expression"
```
The same thing seems to happen with method parameters:
```
$ ./miniruby -e'p defined?(itself)'
"method"
$ ./miniruby -e'p defined?(itself(a))'
nil
$ ./miniruby -e'p defined?(itself(*a))'
"method"
```
Oddly, `defined?` will check contents of arrays, but _won't_ check contents of hashes:
```
$ ./miniruby -e'p defined?([[[[a]]]])'
nil
$ ./miniruby -e'p defined?({ a => a })'
"expression"
```
I think all of the cases that refer to `a` should check whether or not `a` is defined regardless of splats or hashes.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- [email protected]
To unsubscribe send an email to [email protected]
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/