Do not use 1-member tuples in external constructor/extractor trait methods
Just use the single member type directly.
This commit is contained in:
committed by
Chris Fallin
parent
0e02ec4cba
commit
e015a49270
@@ -78,22 +78,24 @@ impl<'a> Codegen<'a> {
|
|||||||
fn generate_trait_sig(&self, code: &mut String, indent: &str, sig: &ExternalSig) {
|
fn generate_trait_sig(&self, code: &mut String, indent: &str, sig: &ExternalSig) {
|
||||||
writeln!(
|
writeln!(
|
||||||
code,
|
code,
|
||||||
"{}fn {}(&mut self, {}) -> {}({},){};",
|
"{indent}fn {name}(&mut self, {params}) -> {opt_start}{open_paren}{rets}{close_paren}{opt_end};",
|
||||||
indent,
|
indent = indent,
|
||||||
sig.func_name,
|
name = sig.func_name,
|
||||||
sig.param_tys
|
params = sig.param_tys
|
||||||
.iter()
|
.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(i, &ty)| format!("arg{}: {}", i, self.type_name(ty, /* by_ref = */ true)))
|
.map(|(i, &ty)| format!("arg{}: {}", i, self.type_name(ty, /* by_ref = */ true)))
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
.join(", "),
|
.join(", "),
|
||||||
if sig.infallible { "" } else { "Option<" },
|
opt_start = if sig.infallible { "" } else { "Option<" },
|
||||||
sig.ret_tys
|
open_paren = if sig.ret_tys.len() != 1 { "(" } else { "" },
|
||||||
|
rets = sig.ret_tys
|
||||||
.iter()
|
.iter()
|
||||||
.map(|&ty| self.type_name(ty, /* by_ref = */ false))
|
.map(|&ty| self.type_name(ty, /* by_ref = */ false))
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
.join(", "),
|
.join(", "),
|
||||||
if sig.infallible { "" } else { ">" },
|
close_paren = if sig.ret_tys.len() != 1 { ")" } else { "" },
|
||||||
|
opt_end = if sig.infallible { "" } else { ">" },
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
@@ -386,8 +388,12 @@ impl<'a> Codegen<'a> {
|
|||||||
..
|
..
|
||||||
} => {
|
} => {
|
||||||
let mut input_exprs = vec![];
|
let mut input_exprs = vec![];
|
||||||
for (input_value, _) in inputs {
|
for (input_value, input_ty) in inputs {
|
||||||
let value_expr = self.value_by_val(input_value, ctx);
|
let value_expr = if self.typeenv.types[input_ty.index()].is_prim() {
|
||||||
|
self.value_by_val(input_value, ctx)
|
||||||
|
} else {
|
||||||
|
self.value_by_ref(input_value, ctx)
|
||||||
|
};
|
||||||
input_exprs.push(value_expr);
|
input_exprs.push(value_expr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,11 +561,13 @@ impl<'a> Codegen<'a> {
|
|||||||
if infallible {
|
if infallible {
|
||||||
writeln!(
|
writeln!(
|
||||||
code,
|
code,
|
||||||
"{}let ({},) = {}(ctx, {});",
|
"{indent}let {open_paren}{vars}{close_paren} = {name}(ctx, {args});",
|
||||||
indent,
|
indent = indent,
|
||||||
output_binders.join(", "),
|
open_paren = if output_binders.len() == 1 { "" } else { "(" },
|
||||||
sig.full_name,
|
vars = output_binders.join(", "),
|
||||||
input_values.join(", "),
|
close_paren = if output_binders.len() == 1 { "" } else { ")" },
|
||||||
|
name = sig.full_name,
|
||||||
|
args = input_values.join(", "),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
true
|
true
|
||||||
|
|||||||
Reference in New Issue
Block a user