Ejemplo n.º 1
0
	def attach_annotations(self, ret, args, vararg_name, vararg, kwonlyargs, kwarg_name, kwarg):
		if not (ret or args or vararg or kwonlyargs or kwarg):
			return

		self.v.ctx.add(c.Comment("build annotations dict"))
		tmp = PyDictLL(None, self.v)
		tmp.declare_tmp(name=self.hlnode.owner.name + '_annotations')
		tmp.new()

		if ret:
			tmp.set_item_string('return', ret)
		if vararg:
			tmp.set_item_string(vararg_name, vararg)
		if kwarg:
			tmp.set_item_string(kwarg_name, kwarg)
		for name, ann in args:
			if ann:
				tmp.set_item_string(str(name), ann)
		for name, ann in kwonlyargs:
			if ann:
				tmp.set_item_string(str(name), ann)

		self.c_obj.set_attr_string('__annotations__', tmp)
		tmp.decref()