@@ -59,6 +59,9 @@ def help(cmd)
59
59
end
60
60
61
61
class VarInstanceCommand < Command # :nodoc:
62
+ # TODO: try to find out a way to use Kernel.binding
63
+ BINDING_COMMAND = ( defined? Rubinius ) ? 'binding' : '::Kernel.binding'
64
+
62
65
def regexp
63
66
# id will be read as first match, name as post match
64
67
/^\s *v(?:ar)?\s +i(?:nstance)?\s +((?:[\\ +-]0x)[\d abcdef]+)?/
@@ -67,8 +70,9 @@ def regexp
67
70
def execute
68
71
if ( @match [ 1 ] )
69
72
obj = ObjectSpace . _id2ref ( @match [ 1 ] . hex ) rescue nil
73
+
70
74
unless obj
71
- # TODO: ensure that empty variables frame will be printed
75
+ print_element ( " variables" )
72
76
@printer . print_msg ( "Unknown object id : %s" , @match [ 1 ] )
73
77
end
74
78
else
@@ -86,15 +90,15 @@ def execute
86
90
# instance variables
87
91
kind = 'instance'
88
92
inst_vars = obj . instance_variables
89
- instance_binding = obj . instance_eval { :: Kernel . binding ( ) }
93
+ instance_binding = obj . instance_eval ( BINDING_COMMAND )
90
94
# print self at top position
91
95
print_variable ( 'self' , debug_eval ( 'self' , instance_binding ) , kind ) if inst_vars . include? ( 'self' )
92
96
inst_vars . sort . each do |var |
93
97
print_variable ( var , debug_eval ( var , instance_binding ) , kind ) unless var == 'self'
94
98
end
95
99
96
100
# class variables
97
- class_binding = obj . class . class_eval ( '::Kernel.binding()' )
101
+ class_binding = obj . class . class_eval ( BINDING_COMMAND )
98
102
obj . class . class_variables . sort . each do |var |
99
103
print_variable ( var , debug_eval ( var , class_binding ) , 'class' )
100
104
end
0 commit comments