def _setup_args(ctx, args, arg_types, tree):
# var and kw args are not supported
if args.vararg:
raise _errors.TyError("Varargs are not supported.", args.vararg)
if args.kwarg:
raise _errors.TyError("Kwargs are not supported.", args.kwarg)
if len(args.defaults) != 0:
raise _errors.TyError("Defaults are not supported.", tree)
variables = ctx.variables
arguments = args.args
n_args, n_arg_types = len(arguments), len(arg_types)
if n_args != n_arg_types:
raise _errors.TyError(
"Type specifies {0} arguments but function has {1}.".format(
n_arg_types, n_args),
tree)
for arg, arg_type in zip(arguments, arg_types):
if not isinstance(arg, ast.Name):
raise _errors.TyError("Argument must be an identifier.", arg)
arg_id = arg.id
uniq_id = ctx.generate_fresh_id(arg_id)
arg.uniq_id = uniq_id
variables[arg_id] = (uniq_id, arg_type)
yield arg_id
评论列表
文章目录