feat(checker): store function param position

This commit is contained in:
2026-06-06 16:50:42 +02:00
parent 67c40a3909
commit 2a2bb0aec7
2 changed files with 8 additions and 0 deletions

View File

@@ -232,30 +232,37 @@ class Checker(
return arg.default.accept(self) return arg.default.accept(self)
return UnknownType() return UnknownType()
pos: int = 0
for arg in stmt.posonlyargs: for arg in stmt.posonlyargs:
pos_args.append( pos_args.append(
Function.Argument( Function.Argument(
pos=pos,
name=arg.name, name=arg.name,
type=eval_arg_type(arg), type=eval_arg_type(arg),
required=arg.default is None, required=arg.default is None,
) )
) )
pos += 1
for arg in stmt.args: for arg in stmt.args:
args.append( args.append(
Function.Argument( Function.Argument(
pos=pos,
name=arg.name, name=arg.name,
type=eval_arg_type(arg), type=eval_arg_type(arg),
required=arg.default is None, required=arg.default is None,
) )
) )
pos += 1
for arg in stmt.kwonlyargs: for arg in stmt.kwonlyargs:
kw_args.append( kw_args.append(
Function.Argument( Function.Argument(
pos=pos, # not relevant
name=arg.name, name=arg.name,
type=eval_arg_type(arg), type=eval_arg_type(arg),
required=arg.default is None, required=arg.default is None,
) )
) )
pos += 1
for arg in pos_args + args + kw_args: for arg in pos_args + args + kw_args:
env.define(arg.name, arg.type) env.define(arg.name, arg.type)

View File

@@ -34,6 +34,7 @@ class Function:
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
class Argument: class Argument:
pos: int
name: str name: str
type: Type type: Type
required: bool required: bool