chore: add helper methods

This commit is contained in:
Shunsuke Shibayama 2025-01-01 20:02:40 +09:00
parent f41264534e
commit f0d9639a3b
3 changed files with 29 additions and 2 deletions

View file

@ -187,7 +187,7 @@ impl ASTSemanticState {
if let Some(t_spec) = def.sig.t_spec() {
tokens.extend(self.gen_from_typespec(t_spec.clone()));
}*/
let params = def.sig.params();
let params = def.sig.into_params();
tokens.extend(self.gen_from_block(params, def.body.block));
tokens
}

View file

@ -2134,6 +2134,7 @@ impl Context {
let there_var = var_args.is_some() || kw_var_args.is_some();
if (params_len < pos_args.len()
|| params_len < pos_args.len() + kw_args.len()
// if there are extra *args or **kwargs
|| (params_len == pos_args.len() + kw_args.len() && there_var))
&& subr.is_no_var()
{

View file

@ -6246,13 +6246,20 @@ impl Signature {
}
}
pub fn params(self) -> Option<Params> {
pub fn into_params(self) -> Option<Params> {
match self {
Self::Var(_) => None,
Self::Subr(subr) => Some(subr.params),
}
}
pub fn params(&self) -> Option<&Params> {
match self {
Self::Var(_) => None,
Self::Subr(subr) => Some(&subr.params),
}
}
pub fn decorators(&self) -> Option<&HashSet<Decorator>> {
match self {
Self::Var(_) => None,
@ -6954,6 +6961,25 @@ impl Expr {
))
}
pub fn method_call(self, ident: Identifier, args: Args) -> Call {
Call::new(self, Some(ident), args)
}
pub fn method_call_expr(self, ident: Identifier, args: Args) -> Self {
Self::Call(self.method_call(ident, args))
}
pub fn method_call1(self, ident: Identifier, expr: Expr) -> Self {
self.method_call_expr(ident, Args::pos_only(vec![PosArg::new(expr)], None))
}
pub fn method_call2(self, ident: Identifier, expr1: Expr, expr2: Expr) -> Self {
self.method_call_expr(
ident,
Args::pos_only(vec![PosArg::new(expr1), PosArg::new(expr2)], None),
)
}
pub fn type_asc(self, t_spec: TypeSpecWithOp) -> TypeAscription {
TypeAscription::new(self, t_spec)
}