Beispiel #1
0
	def rtype(self, crumbs=None):
		if crumbs is None: crumbs = []
		
		if self.rtype in crumbs: return asttype.Same
	
		crumbs.append(self.rtype)
		calc_types = [calc.rtype(crumbs) for calc in self.calcs]
		return asttype.combine(calc_types)
Beispiel #2
0
	def rtype(self, crumbs=None):
		if crumbs is None: crumbs = []
		if self.rtype in crumbs: return asttype.Same
		crumbs.append(self.rtype)
		types = [self.left.rtype(crumbs), self.right.rtype(crumbs)]
		types = asttype.combine(types)
		if types != asttype.Number:
			raise Exception("One side of ArithPrefixOp is not a number")
		return types
Beispiel #3
0
	def rtype(self, crumbs=None):
		if crumbs is None: crumbs = []
		if self.rtype in crumbs: return asttype.Same
		crumbs.append(self.rtype)
		types = [self.conditionals.rtype(crumbs), self.expr_else.rtype(crumbs)]
		return asttype.combine(types)		
Beispiel #4
0
	def rtype(self, crumbs=None):
		types = [child.rtype(crumbs) for child in self.children]
		return asttype.combine(types)