mirror of
https://github.com/erg-lang/erg.git
synced 2025-08-04 18:58:30 +00:00
chore: add helper methods
This commit is contained in:
parent
f41264534e
commit
f0d9639a3b
3 changed files with 29 additions and 2 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue