def invoke(self, receiver, arguments, meta_level): if meta_level: return self._som_node.invoke(receiver, arguments, meta_level) # Falta hacer llegar el frame environment = receiver.get_meta_object_environment() # No esta definido o es Nil if environment is None or not isinstance(environment, Object): return self._som_node.invoke(receiver, arguments, meta_level) method = self._lookup_node.lookup_meta_invokable(environment) if method is None: # El mate enviroment no define el methodo correspondiente a este nodo return self._som_node.invoke(receiver, arguments, meta_level) return method.invoke(receiver, [self._som_node.get_method(), Array.from_objects(arguments), environment], True)
def invoke(self, receiver, arguments, meta_level): if meta_level: return self._som_node.invoke(receiver, arguments, meta_level) # Falta hacer llegar el frame environment = receiver.get_meta_object_environment() # No esta definido o es Nil if environment is None or not isinstance(environment, Object): return self._som_node.invoke(receiver, arguments, meta_level) method = self._lookup_node.lookup_meta_invokable(environment) if method is None: # El mate enviroment no define el methodo correspondiente a este nodo return self._som_node.invoke(receiver, arguments, meta_level) return method.invoke(receiver, [ self._som_node.get_method(), Array.from_objects(arguments), environment ], True)
def new_array_with_strings(self, strings): # Allocate a new array with the same length as the string array values = [self.new_string(s) for s in strings] return Array.from_objects(values)