diff options
Diffstat (limited to 'crates/ra_hir_ty')
-rw-r--r-- | crates/ra_hir_ty/src/display.rs | 20 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/tests/coercion.rs | 8 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/tests/regression.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/tests/simple.rs | 6 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/tests/traits.rs | 12 |
5 files changed, 28 insertions, 20 deletions
diff --git a/crates/ra_hir_ty/src/display.rs b/crates/ra_hir_ty/src/display.rs index 13ecd537a..1665e25e4 100644 --- a/crates/ra_hir_ty/src/display.rs +++ b/crates/ra_hir_ty/src/display.rs | |||
@@ -155,7 +155,11 @@ impl HirDisplay for ApplicationTy { | |||
155 | let sig = FnSig::from_fn_ptr_substs(&self.parameters); | 155 | let sig = FnSig::from_fn_ptr_substs(&self.parameters); |
156 | write!(f, "fn(")?; | 156 | write!(f, "fn(")?; |
157 | f.write_joined(sig.params(), ", ")?; | 157 | f.write_joined(sig.params(), ", ")?; |
158 | write!(f, ") -> {}", sig.ret().display(f.db))?; | 158 | write!(f, ")")?; |
159 | let ret = sig.ret(); | ||
160 | if *ret != Ty::unit() { | ||
161 | write!(f, " -> {}", ret.display(f.db))?; | ||
162 | } | ||
159 | } | 163 | } |
160 | TypeCtor::FnDef(def) => { | 164 | TypeCtor::FnDef(def) => { |
161 | let sig = f.db.callable_item_signature(def).subst(&self.parameters); | 165 | let sig = f.db.callable_item_signature(def).subst(&self.parameters); |
@@ -180,7 +184,11 @@ impl HirDisplay for ApplicationTy { | |||
180 | } | 184 | } |
181 | write!(f, "(")?; | 185 | write!(f, "(")?; |
182 | f.write_joined(sig.params(), ", ")?; | 186 | f.write_joined(sig.params(), ", ")?; |
183 | write!(f, ") -> {}", sig.ret().display(f.db))?; | 187 | write!(f, ")")?; |
188 | let ret = sig.ret(); | ||
189 | if *ret != Ty::unit() { | ||
190 | write!(f, " -> {}", ret.display(f.db))?; | ||
191 | } | ||
184 | } | 192 | } |
185 | TypeCtor::Adt(def_id) => { | 193 | TypeCtor::Adt(def_id) => { |
186 | let name = match def_id { | 194 | let name = match def_id { |
@@ -242,16 +250,16 @@ impl HirDisplay for ApplicationTy { | |||
242 | let sig = self.parameters[0] | 250 | let sig = self.parameters[0] |
243 | .callable_sig(f.db) | 251 | .callable_sig(f.db) |
244 | .expect("first closure parameter should contain signature"); | 252 | .expect("first closure parameter should contain signature"); |
245 | let return_type_hint = sig.ret().display(f.db); | ||
246 | if sig.params().is_empty() { | 253 | if sig.params().is_empty() { |
247 | write!(f, "|| -> {}", return_type_hint)?; | 254 | write!(f, "||")?; |
248 | } else if f.omit_verbose_types() { | 255 | } else if f.omit_verbose_types() { |
249 | write!(f, "|{}| -> {}", TYPE_HINT_TRUNCATION, return_type_hint)?; | 256 | write!(f, "|{}|", TYPE_HINT_TRUNCATION)?; |
250 | } else { | 257 | } else { |
251 | write!(f, "|")?; | 258 | write!(f, "|")?; |
252 | f.write_joined(sig.params(), ", ")?; | 259 | f.write_joined(sig.params(), ", ")?; |
253 | write!(f, "| -> {}", return_type_hint)?; | 260 | write!(f, "|")?; |
254 | }; | 261 | }; |
262 | write!(f, " -> {}", sig.ret().display(f.db))?; | ||
255 | } | 263 | } |
256 | } | 264 | } |
257 | Ok(()) | 265 | Ok(()) |
diff --git a/crates/ra_hir_ty/src/tests/coercion.rs b/crates/ra_hir_ty/src/tests/coercion.rs index 3e3d55c04..b2c971f02 100644 --- a/crates/ra_hir_ty/src/tests/coercion.rs +++ b/crates/ra_hir_ty/src/tests/coercion.rs | |||
@@ -407,16 +407,16 @@ fn test() { | |||
407 | [30; 31) 'x': &Foo | 407 | [30; 31) 'x': &Foo |
408 | [39; 41) '{}': () | 408 | [39; 41) '{}': () |
409 | [52; 133) '{ ...oo); }': () | 409 | [52; 133) '{ ...oo); }': () |
410 | [58; 71) 'takes_ref_foo': fn takes_ref_foo(&Foo) -> () | 410 | [58; 71) 'takes_ref_foo': fn takes_ref_foo(&Foo) |
411 | [58; 77) 'takes_...(&Foo)': () | 411 | [58; 77) 'takes_...(&Foo)': () |
412 | [72; 76) '&Foo': &Foo | 412 | [72; 76) '&Foo': &Foo |
413 | [73; 76) 'Foo': Foo | 413 | [73; 76) 'Foo': Foo |
414 | [83; 96) 'takes_ref_foo': fn takes_ref_foo(&Foo) -> () | 414 | [83; 96) 'takes_ref_foo': fn takes_ref_foo(&Foo) |
415 | [83; 103) 'takes_...&&Foo)': () | 415 | [83; 103) 'takes_...&&Foo)': () |
416 | [97; 102) '&&Foo': &&Foo | 416 | [97; 102) '&&Foo': &&Foo |
417 | [98; 102) '&Foo': &Foo | 417 | [98; 102) '&Foo': &Foo |
418 | [99; 102) 'Foo': Foo | 418 | [99; 102) 'Foo': Foo |
419 | [109; 122) 'takes_ref_foo': fn takes_ref_foo(&Foo) -> () | 419 | [109; 122) 'takes_ref_foo': fn takes_ref_foo(&Foo) |
420 | [109; 130) 'takes_...&&Foo)': () | 420 | [109; 130) 'takes_...&&Foo)': () |
421 | [123; 129) '&&&Foo': &&&Foo | 421 | [123; 129) '&&&Foo': &&&Foo |
422 | [124; 129) '&&Foo': &&Foo | 422 | [124; 129) '&&Foo': &&Foo |
@@ -484,7 +484,7 @@ fn test() { | |||
484 | [171; 178) 'loop {}': ! | 484 | [171; 178) 'loop {}': ! |
485 | [176; 178) '{}': () | 485 | [176; 178) '{}': () |
486 | [191; 236) '{ ... }); }': () | 486 | [191; 236) '{ ... }); }': () |
487 | [197; 210) 'takes_ref_str': fn takes_ref_str(&str) -> () | 487 | [197; 210) 'takes_ref_str': fn takes_ref_str(&str) |
488 | [197; 233) 'takes_...g() })': () | 488 | [197; 233) 'takes_...g() })': () |
489 | [211; 232) '&{ ret...ng() }': &String | 489 | [211; 232) '&{ ret...ng() }': &String |
490 | [212; 232) '{ retu...ng() }': String | 490 | [212; 232) '{ retu...ng() }': String |
diff --git a/crates/ra_hir_ty/src/tests/regression.rs b/crates/ra_hir_ty/src/tests/regression.rs index 2ee9b8f10..3402e0cb5 100644 --- a/crates/ra_hir_ty/src/tests/regression.rs +++ b/crates/ra_hir_ty/src/tests/regression.rs | |||
@@ -376,7 +376,7 @@ fn issue_2669() { | |||
376 | ), | 376 | ), |
377 | @r###" | 377 | @r###" |
378 | [147; 262) '{ ... }': () | 378 | [147; 262) '{ ... }': () |
379 | [161; 164) 'end': fn end<{unknown}>() -> () | 379 | [161; 164) 'end': fn end<{unknown}>() |
380 | [161; 166) 'end()': () | 380 | [161; 166) 'end()': () |
381 | [199; 252) '{ ... }': () | 381 | [199; 252) '{ ... }': () |
382 | [221; 223) '_x': ! | 382 | [221; 223) '_x': ! |
diff --git a/crates/ra_hir_ty/src/tests/simple.rs b/crates/ra_hir_ty/src/tests/simple.rs index 141f0245a..c2f1ded2f 100644 --- a/crates/ra_hir_ty/src/tests/simple.rs +++ b/crates/ra_hir_ty/src/tests/simple.rs | |||
@@ -521,7 +521,7 @@ fn test() -> &mut &f64 { | |||
521 | [88; 89) 'a': u32 | 521 | [88; 89) 'a': u32 |
522 | [92; 108) 'unknow...nction': {unknown} | 522 | [92; 108) 'unknow...nction': {unknown} |
523 | [92; 110) 'unknow...tion()': u32 | 523 | [92; 110) 'unknow...tion()': u32 |
524 | [116; 125) 'takes_u32': fn takes_u32(u32) -> () | 524 | [116; 125) 'takes_u32': fn takes_u32(u32) |
525 | [116; 128) 'takes_u32(a)': () | 525 | [116; 128) 'takes_u32(a)': () |
526 | [126; 127) 'a': u32 | 526 | [126; 127) 'a': u32 |
527 | [138; 139) 'b': i32 | 527 | [138; 139) 'b': i32 |
@@ -1749,9 +1749,9 @@ fn main() { | |||
1749 | [67; 91) 'Vtable...| {} }': Vtable | 1749 | [67; 91) 'Vtable...| {} }': Vtable |
1750 | [84; 89) '|| {}': || -> () | 1750 | [84; 89) '|| {}': || -> () |
1751 | [87; 89) '{}': () | 1751 | [87; 89) '{}': () |
1752 | [101; 102) 'm': fn() -> () | 1752 | [101; 102) 'm': fn() |
1753 | [105; 111) 'vtable': Vtable | 1753 | [105; 111) 'vtable': Vtable |
1754 | [105; 118) 'vtable.method': fn() -> () | 1754 | [105; 118) 'vtable.method': fn() |
1755 | "### | 1755 | "### |
1756 | ); | 1756 | ); |
1757 | } | 1757 | } |
diff --git a/crates/ra_hir_ty/src/tests/traits.rs b/crates/ra_hir_ty/src/tests/traits.rs index f009a708c..081aa943a 100644 --- a/crates/ra_hir_ty/src/tests/traits.rs +++ b/crates/ra_hir_ty/src/tests/traits.rs | |||
@@ -263,7 +263,7 @@ fn test() { | |||
263 | [119; 120) 'S': S<u32>(u32) -> S<u32> | 263 | [119; 120) 'S': S<u32>(u32) -> S<u32> |
264 | [119; 129) 'S(unknown)': S<u32> | 264 | [119; 129) 'S(unknown)': S<u32> |
265 | [121; 128) 'unknown': u32 | 265 | [121; 128) 'unknown': u32 |
266 | [135; 138) 'foo': fn foo<S<u32>>(S<u32>) -> () | 266 | [135; 138) 'foo': fn foo<S<u32>>(S<u32>) |
267 | [135; 141) 'foo(s)': () | 267 | [135; 141) 'foo(s)': () |
268 | [139; 140) 's': S<u32> | 268 | [139; 140) 's': S<u32> |
269 | "### | 269 | "### |
@@ -962,7 +962,7 @@ fn test(x: impl Trait<u64>, y: &impl Trait<u32>) { | |||
962 | [224; 225) 'S': S<u16>(u16) -> S<u16> | 962 | [224; 225) 'S': S<u16>(u16) -> S<u16> |
963 | [224; 228) 'S(1)': S<u16> | 963 | [224; 228) 'S(1)': S<u16> |
964 | [226; 227) '1': u16 | 964 | [226; 227) '1': u16 |
965 | [234; 237) 'bar': fn bar(S<u16>) -> () | 965 | [234; 237) 'bar': fn bar(S<u16>) |
966 | [234; 240) 'bar(z)': () | 966 | [234; 240) 'bar(z)': () |
967 | [238; 239) 'z': S<u16> | 967 | [238; 239) 'z': S<u16> |
968 | [246; 247) 'x': impl Trait<u64> | 968 | [246; 247) 'x': impl Trait<u64> |
@@ -1108,8 +1108,8 @@ fn test() { | |||
1108 | [40; 47) 'loop {}': ! | 1108 | [40; 47) 'loop {}': ! |
1109 | [45; 47) '{}': () | 1109 | [45; 47) '{}': () |
1110 | [91; 124) '{ ...foo; }': () | 1110 | [91; 124) '{ ...foo; }': () |
1111 | [101; 102) 'f': fn(S) -> () | 1111 | [101; 102) 'f': fn(S) |
1112 | [118; 121) 'foo': fn foo(S) -> () | 1112 | [118; 121) 'foo': fn foo(S) |
1113 | "### | 1113 | "### |
1114 | ); | 1114 | ); |
1115 | } | 1115 | } |
@@ -1962,7 +1962,7 @@ fn test() -> impl Trait<i32> { | |||
1962 | [229; 241) 'S(default())': S<u32> | 1962 | [229; 241) 'S(default())': S<u32> |
1963 | [231; 238) 'default': fn default<u32>() -> u32 | 1963 | [231; 238) 'default': fn default<u32>() -> u32 |
1964 | [231; 240) 'default()': u32 | 1964 | [231; 240) 'default()': u32 |
1965 | [247; 250) 'foo': fn foo(S<u32>) -> () | 1965 | [247; 250) 'foo': fn foo(S<u32>) |
1966 | [247; 254) 'foo(s1)': () | 1966 | [247; 254) 'foo(s1)': () |
1967 | [251; 253) 's1': S<u32> | 1967 | [251; 253) 's1': S<u32> |
1968 | [264; 265) 'x': i32 | 1968 | [264; 265) 'x': i32 |
@@ -2012,7 +2012,7 @@ fn main() { | |||
2012 | [147; 149) '_v': F | 2012 | [147; 149) '_v': F |
2013 | [192; 195) '{ }': () | 2013 | [192; 195) '{ }': () |
2014 | [207; 238) '{ ... }); }': () | 2014 | [207; 238) '{ ... }); }': () |
2015 | [213; 223) 'f::<(), _>': fn f<(), |&()| -> ()>(|&()| -> ()) -> () | 2015 | [213; 223) 'f::<(), _>': fn f<(), |&()| -> ()>(|&()| -> ()) |
2016 | [213; 235) 'f::<()... z; })': () | 2016 | [213; 235) 'f::<()... z; })': () |
2017 | [224; 234) '|z| { z; }': |&()| -> () | 2017 | [224; 234) '|z| { z; }': |&()| -> () |
2018 | [225; 226) 'z': &() | 2018 | [225; 226) 'z': &() |