From: ts Date: 2008-03-25T22:34:00+09:00 Subject: #defined? Two small problems with defined? * Empty NODE_BEGIN vgs% ./ruby -ve 'puts VM::InstructionSequence.compile("p defined?(a.a=())").disasm' ruby 1.9.0 (2008-03-25 revision 15839) [i686-linux] == disasm: @>================================= == catch table | catch type: ensure st: 0001 ed: 0006 sp: 0001 cont: 0032 == disasm: @>================ 0000 putnil 0001 leave |------------------------------------------------------------------------ 0000 putnil ( 1) 0001 putnil 0002 branchunless 32 0004 putobject true 0006 branchunless 32 0008 putobject true 0010 branchunless 32 0012 putself 0013 defined 21, :a, false 0017 branchunless 32 0019 putnil 0020 send :a, 0, nil, 24, 0026 defined 13, :a=, true 0030 jump 33 0032 putnil 0033 send :p, 1, nil, 8, 0039 leave vgs% * Don't catch the error vgs% ./ruby -ve 'def a() end; p defined?(a(1).a)' ruby 1.9.0 (2008-03-25 revision 15839) [i686-linux] -e:1:in `
': wrong number of arguments (1 for 0) (ArgumentError) vgs% vgs% ./ruby -ve 'def a(x) end; p defined?(a::B)' ruby 1.9.0 (2008-03-25 revision 15839) [i686-linux] -e:1:in `
': wrong number of arguments (0 for 1) (ArgumentError) vgs% Guy Decoux