Ejemplo n.º 1
0
 def requires_emit(self, resolver: Resolver, queue: QueueScheduler) -> typing.Dict[object, ResultVariable]:
     sub = ReferenceStatement.requires_emit(self, resolver, queue)
     temp = ResultVariable()
     temp.set_type(self.type)
     temp.set_provider(self)
     HangUnit(queue, resolver, sub, temp, self)
     return {self: temp}
Ejemplo n.º 2
0
    def requires_emit(self, resolver, queue):
        # introduce temp variable to contain the eventual result of this stmt
        temp = ResultVariable()
        temp.set_type(Bool())

        temp.set_provider(self)

        # wait for the lhs
        HangUnit(queue, resolver, self.children[0].requires_emit(resolver, queue), temp, self)
        return {self: temp}
Ejemplo n.º 3
0
    def requires_emit_gradual(self, resolver: Resolver, queue: QueueScheduler, resultcollector) -> Dict[object, ResultVariable]:
        # The tricky one!

        # introduce temp variable to contain the eventual result of this stmt
        temp = ResultVariable()
        temp.set_provider(self)

        # construct waiter
        resumer = AttributeReferenceHelper(temp, self.instance, self.attribute, resultcollector)
        self.copy_location(resumer)

        # wait for the instance
        RawUnit(queue, resolver, self.instance.requires_emit(resolver, queue), resumer)
        return {self: temp}