Project

General

Profile

Actions

Bug #6172

closed

Inconsistent behaviour of defined?

Added by pkondzior (Paweł Kondzior) over 12 years ago. Updated over 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
ruby -v:
ruby 2.0.0dev (2012-03-18 trunk 35081) [x86_64-darwin11.2.0]
Backport:
[ruby-core:43443]

Description

Following behavior is obvious:

irb(main):004:0> Object.const_get("Misio")
NameError: uninitialized constant Misio
from (irb):4:in const_get' from (irb):4 from /Users/pawel/.rbenv/versions/1.9.4-dev/bin/irb:12:in '
irb(main):005:0> Object.const_get(Misio)
NameError: uninitialized constant Misio
from (irb):5
from /Users/pawel/.rbenv/versions/1.9.4-dev/bin/irb:12:in `'

Both cases throws an exception, obviously with different backtrace because execution paths are different.

But following behavior is doesn't make sens at all for:
irb(main):001:0> defined?(Object.const_get(Misio))
=> nil
irb(main):002:0> defined?(Object.const_get("Misio"))
=> "method"

Shouldn't defined?(Object.const_get("Misio")) return also nil ?

Updated by nobu (Nobuyoshi Nakada) over 12 years ago

  • Status changed from Open to Rejected

The former is analogous to Foo.bar(Misio), while the latter is analogous to Foo.bar("zot").
Object.const_get is mere method call.

Actions

Also available in: Atom PDF

Like0
Like0