Change soft-fail to use the config, rather than env
[rbx.git] / kernel / core / method_table.rb
blob39e3f788a379d684a4154fd5bbbaab95b69485d2
1 # depends on: class.rb
3 ##
4 # Holds Executables for lookup by the VM.
6 # When looking up an Executable, Rubinius starts at the real class (the object
7 # in the class slot of the receiver) and looks in its MethodTable for the
8 # method name.  If the method is not found the ancestors list will be
9 # walked looking for the method.
11 # If no method was found, Rubinius restarts at the real class looking for
12 # "method_missing", walking the ancestors list if it is not found.
14 # If "method_missing" is not found, a VM assertion is triggered.
16 class MethodTable < LookupTable
18   def public_names
19     filter_names :public
20   end
22   def private_names
23     filter_names :private
24   end
26   def protected_names
27     filter_names :protected
28   end
30   alias_method :to_a, :public_names
32   def filter_names(filter)
33     map do |name, meth|
34       if meth.kind_of? RuntimePrimitive or
35          (meth.kind_of?(Tuple) and meth.first == filter) then
36         name
37       end
38     end.compact
39   end
40 end