Esempio n. 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)
Esempio n. 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
Esempio n. 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)		
Esempio n. 4
0
	def rtype(self, crumbs=None):
		types = [child.rtype(crumbs) for child in self.children]
		return asttype.combine(types)