def computeExpressionIter1(self, iter_node, trace_collection): constant_type = type(self.constant) if constant_type in (list, set, frozenset, dict): result = makeConstantRefNode( constant=tuple(self.constant), user_provided=self.user_provided, source_ref=self.getSourceReference(), ) self.parent.replaceChild(self, result) self.finalize() return ( iter_node, "new_constant", """\ Iteration over constant %s changed to tuple.""" % constant_type.__name__, ) if not isIterableConstant(self.constant): # An exception may be raised. trace_collection.onExceptionRaiseExit(TypeError) return getComputationResult( node=iter_node, computation=lambda: iter_node.simulator(self.constant), description="Iteration of non-iterable constant.", ) return iter_node, None, None
def computeExpressionIter1(self, iter_node, trace_collection): if type(self.constant) in (list, set, frozenset, dict): result = makeConstantRefNode(constant=tuple(self.constant), user_provided=self.user_provided, source_ref=self.getSourceReference()) self.replaceWith(result) return (iter_node, "new_constant", """\ Iteration over constant %s changed to tuple.""" % type(self.constant).__name__) if not isIterableConstant(self.constant): # Any exception may be raised. trace_collection.onExceptionRaiseExit(TypeError) return iter_node, None, None
def computeExpressionIter1(self, iter_node, constraint_collection): if type(self.constant) in (list, set, frozenset, dict): result = ExpressionConstantRef( constant = tuple(self.constant), user_provided = self.user_provided, source_ref = self.getSourceReference() ) self.replaceWith(result) return ( iter_node, "new_constant", """\ Iteration over constant %s changed to tuple.""" % type(self.constant).__name__ ) if not isIterableConstant(self.constant): # Any exception may be raised. constraint_collection.onExceptionRaiseExit(TypeError) return iter_node, None, None
def isIterableConstant(self): return isIterableConstant(self.constant)
def getIterationLength(self): if isIterableConstant(self.constant): return getConstantIterationLength(self.constant) else: return None
def isKnownToBeIterable(self, count): if isIterableConstant(self.constant): return count is None or \ getConstantIterationLength(self.constant) == count else: return False
def isIterableConstant(self): return isIterableConstant( self.constant )
def getIterationLength(self): if isIterableConstant( self.constant ): return getConstantIterationLength( self.constant ) else: return None
def isKnownToBeIterable(self, count): if isIterableConstant( self.constant ): return count is None or getConstantIterationLength( self.constant ) == count else: return False
def getIterationLength(self, constraint_collection): if isIterableConstant(self.constant): return getConstantIterationLength(self.constant) else: return None