aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide')
-rw-r--r--crates/ra_ide/src/diagnostics.rs56
1 files changed, 22 insertions, 34 deletions
diff --git a/crates/ra_ide/src/diagnostics.rs b/crates/ra_ide/src/diagnostics.rs
index bf14a467f..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 std::{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 //- /std/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 std::{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 }
@@ -355,7 +352,7 @@ mod tests {
355 fn test_wrap_return_type_handles_generic_functions() { 352 fn test_wrap_return_type_handles_generic_functions() {
356 let before = r#" 353 let before = r#"
357 //- /main.rs 354 //- /main.rs
358 use std::result::Result::{self, Ok, Err}; 355 use core::result::Result::{self, Ok, Err};
359 356
360 fn div<T>(x: T) -> Result<T, i32> { 357 fn div<T>(x: T) -> Result<T, i32> {
361 if x == 0 { 358 if x == 0 {
@@ -364,13 +361,13 @@ mod tests {
364 <|>x 361 <|>x
365 } 362 }
366 363
367 //- /std/lib.rs 364 //- /core/lib.rs
368 pub mod result { 365 pub mod result {
369 pub enum Result<T, E> { Ok(T), Err(E) } 366 pub enum Result<T, E> { Ok(T), Err(E) }
370 } 367 }
371 "#; 368 "#;
372 let after = r#" 369 let after = r#"
373 use std::result::Result::{self, Ok, Err}; 370 use core::result::Result::{self, Ok, Err};
374 371
375 fn div<T>(x: T) -> Result<T, i32> { 372 fn div<T>(x: T) -> Result<T, i32> {
376 if x == 0 { 373 if x == 0 {
@@ -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 std::{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 //- /std/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 std::{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 }