def _doesNotUnderstand(self, w_selector, argcount, interp, receiver):
        arguments = self.pop_and_return_n(argcount)
        w_message_class = self.space.classtable["w_Message"]
        assert isinstance(w_message_class, model.W_PointersObject)
        s_message_class = w_message_class.as_class_get_shadow(self.space)
        w_message = s_message_class.new()
        w_message.store(self.space, 0, w_selector)
        w_message.store(self.space, 1, self.space.wrap_list(arguments))
        self.pop() # The receiver, already known.

        if interp.space.headless.is_set():
            primitives.exitFromHeadlessExecution(self, "doesNotUnderstand:", w_message)
        return self._sendSpecialSelector(interp, receiver, "doesNotUnderstand", [w_message])
    def _doesNotUnderstand(self, w_selector, argcount, interp, receiver):
        arguments = self.pop_and_return_n(argcount)
        w_message_class = self.space.classtable["w_Message"]
        assert isinstance(w_message_class, model.W_PointersObject)
        s_message_class = w_message_class.as_class_get_shadow(self.space)
        w_message = s_message_class.new()
        w_message.store(self.space, 0, w_selector)
        w_message.store(self.space, 1, self.space.wrap_list(arguments))
        self.pop() # The receiver, already known.

        try:
            if interp.space.headless.is_set():
                primitives.exitFromHeadlessExecution(self, "doesNotUnderstand:", w_message)
            return self._sendSpecialSelector(interp, receiver, "doesNotUnderstand", [w_message])
        except error.MethodNotFound:
            s_class = receiver.class_shadow(self.space)
            assert isinstance(s_class, ClassShadow)
            raise error.Exit("Missing doesNotUnderstand in hierarchy of %s" % s_class.getname())
Ejemplo n.º 3
0
    def _doesNotUnderstand(self, w_selector, argcount, interp, receiver):
        arguments = self.pop_and_return_n(argcount)
        w_message_class = self.space.classtable["w_Message"]
        assert isinstance(w_message_class, model.W_PointersObject)
        s_message_class = w_message_class.as_class_get_shadow(self.space)
        w_message = s_message_class.new()
        w_message.store(self.space, 0, w_selector)
        w_message.store(self.space, 1, self.space.wrap_list(arguments))
        self.pop()  # The receiver, already known.

        try:
            if interp.space.headless.is_set():
                primitives.exitFromHeadlessExecution(self,
                                                     "doesNotUnderstand:",
                                                     w_message)
            return self._sendSpecialSelector(interp, receiver,
                                             "doesNotUnderstand", [w_message])
        except error.MethodNotFound:
            s_class = receiver.class_shadow(self.space)
            assert isinstance(s_class, ClassShadow)
            raise error.Exit("Missing doesNotUnderstand in hierarchy of %s" %
                             s_class.getname())