-
Notifications
You must be signed in to change notification settings - Fork 13.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
in which the trivial-casts word to the wise is tucked into a help note
The top level message shouldn't be too long; the replaced-by-coercion/temporary-variable advice can live in a note. Also, don't mention type ascription when it's not actually available as a real thing. (The current state of discussion on the type ascription tracking issue #23416 makes one rather suspect it will never be a stable thing in its current form, but that's not for us to adjudicate in this commit.) While we're here, yank out the differentiating parts of the numeric/other conditional and only have one codepath emitting the diagnostic.
- Loading branch information
1 parent
a417518
commit 0b39a82
Showing
5 changed files
with
115 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
src/test/ui/lint/trivial-casts-featuring-type-ascription.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT | ||
// file at the top-level directory of this distribution and at | ||
// http://rust-lang.org/COPYRIGHT. | ||
// | ||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | ||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | ||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | ||
// option. This file may not be copied, modified, or distributed | ||
// except according to those terms. | ||
|
||
#![deny(trivial_casts, trivial_numeric_casts)] | ||
#![feature(type_ascription)] | ||
|
||
fn main() { | ||
let lugubrious = 12i32 as i32; | ||
//~^ ERROR trivial numeric cast | ||
let haunted: &u32 = &99; | ||
let _ = haunted as *const u32; | ||
//~^ ERROR trivial cast | ||
} |
28 changes: 28 additions & 0 deletions
28
src/test/ui/lint/trivial-casts-featuring-type-ascription.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
error: trivial numeric cast: `i32` as `i32` | ||
--> $DIR/trivial-casts-featuring-type-ascription.rs:15:22 | ||
| | ||
LL | let lugubrious = 12i32 as i32; | ||
| ^^^^^^^^^^^^ | ||
| | ||
note: lint level defined here | ||
--> $DIR/trivial-casts-featuring-type-ascription.rs:11:24 | ||
| | ||
LL | #![deny(trivial_casts, trivial_numeric_casts)] | ||
| ^^^^^^^^^^^^^^^^^^^^^ | ||
= help: cast can be replaced by coercion; this might require type ascription or a temporary variable | ||
|
||
error: trivial cast: `&u32` as `*const u32` | ||
--> $DIR/trivial-casts-featuring-type-ascription.rs:18:13 | ||
| | ||
LL | let _ = haunted as *const u32; | ||
| ^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
note: lint level defined here | ||
--> $DIR/trivial-casts-featuring-type-ascription.rs:11:9 | ||
| | ||
LL | #![deny(trivial_casts, trivial_numeric_casts)] | ||
| ^^^^^^^^^^^^^ | ||
= help: cast can be replaced by coercion; this might require type ascription or a temporary variable | ||
|
||
error: aborting due to 2 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT | ||
// file at the top-level directory of this distribution and at | ||
// http://rust-lang.org/COPYRIGHT. | ||
// | ||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | ||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | ||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | ||
// option. This file may not be copied, modified, or distributed | ||
// except according to those terms. | ||
|
||
#![deny(trivial_casts, trivial_numeric_casts)] | ||
|
||
fn main() { | ||
let lugubrious = 12i32 as i32; | ||
//~^ ERROR trivial numeric cast | ||
let haunted: &u32 = &99; | ||
let _ = haunted as *const u32; | ||
//~^ ERROR trivial cast | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
error: trivial numeric cast: `i32` as `i32` | ||
--> $DIR/trivial-casts.rs:14:22 | ||
| | ||
LL | let lugubrious = 12i32 as i32; | ||
| ^^^^^^^^^^^^ | ||
| | ||
note: lint level defined here | ||
--> $DIR/trivial-casts.rs:11:24 | ||
| | ||
LL | #![deny(trivial_casts, trivial_numeric_casts)] | ||
| ^^^^^^^^^^^^^^^^^^^^^ | ||
= help: cast can be replaced by coercion; this might require a temporary variable | ||
|
||
error: trivial cast: `&u32` as `*const u32` | ||
--> $DIR/trivial-casts.rs:17:13 | ||
| | ||
LL | let _ = haunted as *const u32; | ||
| ^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
note: lint level defined here | ||
--> $DIR/trivial-casts.rs:11:9 | ||
| | ||
LL | #![deny(trivial_casts, trivial_numeric_casts)] | ||
| ^^^^^^^^^^^^^ | ||
= help: cast can be replaced by coercion; this might require a temporary variable | ||
|
||
error: aborting due to 2 previous errors | ||
|