Omit default parameters for reference types

This commit is contained in:
Kirill Bulatov 2020-01-22 16:44:05 +02:00
parent a5407ddc05
commit 4029e44102
3 changed files with 20 additions and 3 deletions

View file

@ -9,7 +9,7 @@ pub struct HirFormatter<'a, 'b, DB> {
fmt: &'a mut fmt::Formatter<'b>, fmt: &'a mut fmt::Formatter<'b>,
buf: String, buf: String,
curr_size: usize, curr_size: usize,
max_size: Option<usize>, pub(crate) max_size: Option<usize>,
omit_verbose_types: bool, omit_verbose_types: bool,
} }

View file

@ -855,7 +855,12 @@ impl HirDisplay for ApplicationTy {
} }
TypeCtor::Ref(m) => { TypeCtor::Ref(m) => {
let t = self.parameters.as_single(); let t = self.parameters.as_single();
write!(f, "&{}{}", m.as_keyword_for_ref(), t.display(f.db))?; let ty_display = if f.omit_verbose_types() {
t.display_truncated(f.db, f.max_size)
} else {
t.display(f.db)
};
write!(f, "&{}{}", m.as_keyword_for_ref(), ty_display)?;
} }
TypeCtor::Never => write!(f, "!")?, TypeCtor::Never => write!(f, "!")?,
TypeCtor::Tuple { .. } => { TypeCtor::Tuple { .. } => {

View file

@ -245,6 +245,7 @@ struct Test<K, T = u8> {
fn main() { fn main() {
let zz = Test { t: 23, k: 33 }; let zz = Test { t: 23, k: 33 };
let zz_ref = &zz;
}"#, }"#,
); );
@ -255,6 +256,11 @@ fn main() {
kind: TypeHint, kind: TypeHint,
label: "Test<i32>", label: "Test<i32>",
}, },
InlayHint {
range: [105; 111),
kind: TypeHint,
label: "&Test<i32>",
},
] ]
"### "###
); );
@ -374,6 +380,7 @@ fn main() {
let multiply = |a, b, c, d| a * b * c * d; let multiply = |a, b, c, d| a * b * c * d;
let _: i32 = multiply(1, 2, 3, 4); let _: i32 = multiply(1, 2, 3, 4);
let multiply_ref = &multiply;
let return_42 = || 42; let return_42 = || 42;
}"#, }"#,
@ -417,7 +424,12 @@ fn main() {
label: "i32", label: "i32",
}, },
InlayHint { InlayHint {
range: [201; 210), range: [200; 212),
kind: TypeHint,
label: "&|…| -> i32",
},
InlayHint {
range: [235; 244),
kind: TypeHint, kind: TypeHint,
label: "|| -> i32", label: "|| -> i32",
}, },