nac3core: fixed weird type inference error

This commit is contained in:
pca006132 2021-11-27 20:27:46 +08:00
parent 0ae1fe82b4
commit 7ee82de312

View File

@ -195,7 +195,7 @@ impl TopLevelComposer {
signature: primitives.1.add_ty(TypeEnum::TFunc(RefCell::new(FunSignature { signature: primitives.1.add_ty(TypeEnum::TFunc(RefCell::new(FunSignature {
args: vec![FuncArg { name: "_".into(), ty: num_ty.0, default_value: None }], args: vec![FuncArg { name: "_".into(), ty: num_ty.0, default_value: None }],
ret: float, ret: float,
vars: var_map, vars: var_map.clone(),
}))), }))),
var_id: Default::default(), var_id: Default::default(),
instance_to_symbol: Default::default(), instance_to_symbol: Default::default(),
@ -398,7 +398,7 @@ impl TopLevelComposer {
signature: primitives.1.add_ty(TypeEnum::TFunc(RefCell::new(FunSignature { signature: primitives.1.add_ty(TypeEnum::TFunc(RefCell::new(FunSignature {
args: vec![FuncArg { name: "_".into(), ty: num_ty.0, default_value: None }], args: vec![FuncArg { name: "_".into(), ty: num_ty.0, default_value: None }],
ret: primitives.0.bool, ret: primitives.0.bool,
vars: Default::default(), vars: var_map,
}))), }))),
var_id: Default::default(), var_id: Default::default(),
instance_to_symbol: Default::default(), instance_to_symbol: Default::default(),
@ -1066,7 +1066,7 @@ impl TopLevelComposer {
and names thould not be the same as the keywords" and names thould not be the same as the keywords"
.into()); .into());
} }
let arg_with_default: Vec<(&ast::Located<ast::ArgData<()>>, Option<&ast::Expr>)> = args let arg_with_default: Vec<(&ast::Located<ast::ArgData<()>>, Option<&ast::Expr>)> = args
.args .args
.iter() .iter()
@ -1307,7 +1307,7 @@ impl TopLevelComposer {
} }
let mut result = Vec::new(); let mut result = Vec::new();
let arg_with_default: Vec<(&ast::Located<ast::ArgData<()>>, Option<&ast::Expr>)> = args let arg_with_default: Vec<(&ast::Located<ast::ArgData<()>>, Option<&ast::Expr>)> = args
.args .args
.iter() .iter()
@ -1319,7 +1319,7 @@ impl TopLevelComposer {
.map(|x| -> Option<&ast::Expr> { Some(x) }) .map(|x| -> Option<&ast::Expr> { Some(x) })
.chain(std::iter::repeat(None)) .chain(std::iter::repeat(None))
).collect_vec(); ).collect_vec();
for (x, default) in arg_with_default.into_iter().rev() { for (x, default) in arg_with_default.into_iter().rev() {
let name = x.node.arg; let name = x.node.arg;
if name != zelf { if name != zelf {