mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-28 20:14:45 +00:00
Update declare.rs
This commit is contained in:
parent
5052ebb077
commit
446262d74c
1 changed files with 35 additions and 10 deletions
|
@ -411,25 +411,50 @@ impl ASTLowerer {
|
||||||
let (non_defaults_, var_params_, defaults_, parens) = params.deconstruct();
|
let (non_defaults_, var_params_, defaults_, parens) = params.deconstruct();
|
||||||
let mut non_defaults = vec![];
|
let mut non_defaults = vec![];
|
||||||
for non_default_ in non_defaults_.into_iter() {
|
for non_default_ in non_defaults_.into_iter() {
|
||||||
let non_default =
|
let t_spec_as_expr = non_default_
|
||||||
hir::NonDefaultParamSignature::new(non_default_, VarInfo::default(), None);
|
.t_spec
|
||||||
|
.as_ref()
|
||||||
|
.map(|t_spec| self.fake_lower_expr(*t_spec.t_spec_as_expr.clone()))
|
||||||
|
.transpose()?;
|
||||||
|
let non_default = hir::NonDefaultParamSignature::new(
|
||||||
|
non_default_,
|
||||||
|
VarInfo::default(),
|
||||||
|
t_spec_as_expr,
|
||||||
|
);
|
||||||
non_defaults.push(non_default);
|
non_defaults.push(non_default);
|
||||||
}
|
}
|
||||||
let var_args = var_params_.map(|var_args| {
|
let var_params = if let Some(var_params) = var_params_ {
|
||||||
Box::new(hir::NonDefaultParamSignature::new(
|
let t_spec_as_expr = var_params
|
||||||
*var_args,
|
.t_spec
|
||||||
|
.as_ref()
|
||||||
|
.map(|t_spec| self.fake_lower_expr(*t_spec.t_spec_as_expr.clone()))
|
||||||
|
.transpose()?;
|
||||||
|
Some(Box::new(hir::NonDefaultParamSignature::new(
|
||||||
|
*var_params,
|
||||||
VarInfo::default(),
|
VarInfo::default(),
|
||||||
None,
|
t_spec_as_expr,
|
||||||
))
|
)))
|
||||||
});
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
let mut defaults = vec![];
|
let mut defaults = vec![];
|
||||||
for default_ in defaults_.into_iter() {
|
for default_ in defaults_.into_iter() {
|
||||||
|
let t_spec_as_expr = default_
|
||||||
|
.sig
|
||||||
|
.t_spec
|
||||||
|
.as_ref()
|
||||||
|
.map(|t_spec| self.fake_lower_expr(*t_spec.t_spec_as_expr.clone()))
|
||||||
|
.transpose()?;
|
||||||
let default_val = self.fake_lower_expr(default_.default_val)?;
|
let default_val = self.fake_lower_expr(default_.default_val)?;
|
||||||
let sig = hir::NonDefaultParamSignature::new(default_.sig, VarInfo::default(), None);
|
let sig = hir::NonDefaultParamSignature::new(
|
||||||
|
default_.sig,
|
||||||
|
VarInfo::default(),
|
||||||
|
t_spec_as_expr,
|
||||||
|
);
|
||||||
let default = hir::DefaultParamSignature::new(sig, default_val);
|
let default = hir::DefaultParamSignature::new(sig, default_val);
|
||||||
defaults.push(default);
|
defaults.push(default);
|
||||||
}
|
}
|
||||||
Ok(hir::Params::new(non_defaults, var_args, defaults, parens))
|
Ok(hir::Params::new(non_defaults, var_params, defaults, parens))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fake_lower_block(&self, block: ast::Block) -> LowerResult<hir::Block> {
|
fn fake_lower_block(&self, block: ast::Block) -> LowerResult<hir::Block> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue