feat(checker): store function param position
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user