diff --git a/midas/checker/checker.py b/midas/checker/checker.py index aff3782..dcf90b0 100644 --- a/midas/checker/checker.py +++ b/midas/checker/checker.py @@ -232,30 +232,37 @@ class Checker( return arg.default.accept(self) return UnknownType() + pos: int = 0 for arg in stmt.posonlyargs: pos_args.append( Function.Argument( + pos=pos, name=arg.name, type=eval_arg_type(arg), required=arg.default is None, ) ) + pos += 1 for arg in stmt.args: args.append( Function.Argument( + pos=pos, name=arg.name, type=eval_arg_type(arg), required=arg.default is None, ) ) + pos += 1 for arg in stmt.kwonlyargs: kw_args.append( Function.Argument( + pos=pos, # not relevant name=arg.name, type=eval_arg_type(arg), required=arg.default is None, ) ) + pos += 1 for arg in pos_args + args + kw_args: env.define(arg.name, arg.type) diff --git a/midas/checker/types.py b/midas/checker/types.py index d62c867..c1d4449 100644 --- a/midas/checker/types.py +++ b/midas/checker/types.py @@ -34,6 +34,7 @@ class Function: @dataclass(frozen=True, kw_only=True) class Argument: + pos: int name: str type: Type required: bool