diff options
Diffstat (limited to 'crates/ra_ide')
-rw-r--r-- | crates/ra_ide/src/diagnostics.rs | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/crates/ra_ide/src/diagnostics.rs b/crates/ra_ide/src/diagnostics.rs index 0f1cb0bcc..f44feaf69 100644 --- a/crates/ra_ide/src/diagnostics.rs +++ b/crates/ra_ide/src/diagnostics.rs | |||
@@ -321,29 +321,26 @@ mod tests { | |||
321 | fn test_wrap_return_type() { | 321 | fn test_wrap_return_type() { |
322 | let before = r#" | 322 | let before = r#" |
323 | //- /main.rs | 323 | //- /main.rs |
324 | use core::{string::String, result::Result::{self, Ok, Err}}; | 324 | use core::result::Result::{self, Ok, Err}; |
325 | 325 | ||
326 | fn div(x: i32, y: i32) -> Result<i32, String> { | 326 | fn div(x: i32, y: i32) -> Result<i32, ()> { |
327 | if y == 0 { | 327 | if y == 0 { |
328 | return Err("div by zero".into()); | 328 | return Err(()); |
329 | } | 329 | } |
330 | x / y<|> | 330 | x / y<|> |
331 | } | 331 | } |
332 | 332 | ||
333 | //- /core/lib.rs | 333 | //- /core/lib.rs |
334 | pub mod string { | ||
335 | pub struct String { } | ||
336 | } | ||
337 | pub mod result { | 334 | pub mod result { |
338 | pub enum Result<T, E> { Ok(T), Err(E) } | 335 | pub enum Result<T, E> { Ok(T), Err(E) } |
339 | } | 336 | } |
340 | "#; | 337 | "#; |
341 | let after = r#" | 338 | let after = r#" |
342 | use core::{string::String, result::Result::{self, Ok, Err}}; | 339 | use core::result::Result::{self, Ok, Err}; |
343 | 340 | ||
344 | fn div(x: i32, y: i32) -> Result<i32, String> { | 341 | fn div(x: i32, y: i32) -> Result<i32, ()> { |
345 | if y == 0 { | 342 | if y == 0 { |
346 | return Err("div by zero".into()); | 343 | return Err(()); |
347 | } | 344 | } |
348 | Ok(x / y) | 345 | Ok(x / y) |
349 | } | 346 | } |
@@ -386,32 +383,29 @@ mod tests { | |||
386 | fn test_wrap_return_type_handles_type_aliases() { | 383 | fn test_wrap_return_type_handles_type_aliases() { |
387 | let before = r#" | 384 | let before = r#" |
388 | //- /main.rs | 385 | //- /main.rs |
389 | use core::{string::String, result::Result::{self, Ok, Err}}; | 386 | use core::result::Result::{self, Ok, Err}; |
390 | 387 | ||
391 | type MyResult<T> = Result<T, String>; | 388 | type MyResult<T> = Result<T, ()>; |
392 | 389 | ||
393 | fn div(x: i32, y: i32) -> MyResult<i32> { | 390 | fn div(x: i32, y: i32) -> MyResult<i32> { |
394 | if y == 0 { | 391 | if y == 0 { |
395 | return Err("div by zero".into()); | 392 | return Err(()); |
396 | } | 393 | } |
397 | x <|>/ y | 394 | x <|>/ y |
398 | } | 395 | } |
399 | 396 | ||
400 | //- /core/lib.rs | 397 | //- /core/lib.rs |
401 | pub mod string { | ||
402 | pub struct String { } | ||
403 | } | ||
404 | pub mod result { | 398 | pub mod result { |
405 | pub enum Result<T, E> { Ok(T), Err(E) } | 399 | pub enum Result<T, E> { Ok(T), Err(E) } |
406 | } | 400 | } |
407 | "#; | 401 | "#; |
408 | let after = r#" | 402 | let after = r#" |
409 | use core::{string::String, result::Result::{self, Ok, Err}}; | 403 | use core::result::Result::{self, Ok, Err}; |
410 | 404 | ||
411 | type MyResult<T> = Result<T, String>; | 405 | type MyResult<T> = Result<T, ()>; |
412 | fn div(x: i32, y: i32) -> MyResult<i32> { | 406 | fn div(x: i32, y: i32) -> MyResult<i32> { |
413 | if y == 0 { | 407 | if y == 0 { |
414 | return Err("div by zero".into()); | 408 | return Err(()); |
415 | } | 409 | } |
416 | Ok(x / y) | 410 | Ok(x / y) |
417 | } | 411 | } |
@@ -423,16 +417,13 @@ mod tests { | |||
423 | fn test_wrap_return_type_not_applicable_when_expr_type_does_not_match_ok_type() { | 417 | fn test_wrap_return_type_not_applicable_when_expr_type_does_not_match_ok_type() { |
424 | let content = r#" | 418 | let content = r#" |
425 | //- /main.rs | 419 | //- /main.rs |
426 | use std::{string::String, result::Result::{self, Ok, Err}}; | 420 | use core::result::Result::{self, Ok, Err}; |
427 | 421 | ||
428 | fn foo() -> Result<String, i32> { | 422 | fn foo() -> Result<(), i32> { |
429 | 0<|> | 423 | 0<|> |
430 | } | 424 | } |
431 | 425 | ||
432 | //- /std/lib.rs | 426 | //- /core/lib.rs |
433 | pub mod string { | ||
434 | pub struct String { } | ||
435 | } | ||
436 | pub mod result { | 427 | pub mod result { |
437 | pub enum Result<T, E> { Ok(T), Err(E) } | 428 | pub enum Result<T, E> { Ok(T), Err(E) } |
438 | } | 429 | } |
@@ -444,7 +435,7 @@ mod tests { | |||
444 | fn test_wrap_return_type_not_applicable_when_return_type_is_not_result() { | 435 | fn test_wrap_return_type_not_applicable_when_return_type_is_not_result() { |
445 | let content = r#" | 436 | let content = r#" |
446 | //- /main.rs | 437 | //- /main.rs |
447 | use std::{string::String, result::Result::{self, Ok, Err}}; | 438 | use core::result::Result::{self, Ok, Err}; |
448 | 439 | ||
449 | enum SomeOtherEnum { | 440 | enum SomeOtherEnum { |
450 | Ok(i32), | 441 | Ok(i32), |
@@ -455,10 +446,7 @@ mod tests { | |||
455 | 0<|> | 446 | 0<|> |
456 | } | 447 | } |
457 | 448 | ||
458 | //- /std/lib.rs | 449 | //- /core/lib.rs |
459 | pub mod string { | ||
460 | pub struct String { } | ||
461 | } | ||
462 | pub mod result { | 450 | pub mod result { |
463 | pub enum Result<T, E> { Ok(T), Err(E) } | 451 | pub enum Result<T, E> { Ok(T), Err(E) } |
464 | } | 452 | } |