Skip to content

Commit 4be90d0

Browse files
committed
Auto merge of rust-lang#11249 - GuillaumeGomez:ui-tests-annotations, r=Centri3,llogiq
Add error annotations in UI tests As discussed on [zulip](https://rust-lang.zulipchat.com/#narrow/stream/257328-clippy/topic/Improve.20UI.20error.20checks), this PR adds missing error annotations in UI tests. I used this script to generate them: <details> ```python import os def handle_err(line, stderr, elems, kind, i): msg = line.split("{}: ".format(kind), 1)[1] i += 1 try: line_nb = int(stderr[i].split(":")[1]) except Exception: return i in_macro = False note_found = False help_found = False elem = {"kind": kind, "msg": msg, "line": line_nb, "notes": [], "helps": []} while i < len(stderr): if len(stderr[i]) == 0: break elif stderr[i].startswith("note:"): note_found = True # error checker doesn't like multi-note apparently. elif stderr[i].startswith(" = note:"): if not note_found and not help_found and "this error originates in the macro" not in stderr[i]: elem["notes"].append(stderr[i].split(" = note:", 1)[1].strip()) note_found = True # error checker doesn't like multi-note apparently. elif stderr[i].startswith(" = help:") or stderr[i].startswith("help:"): help_found = True # elif stderr[i].startswith("help:"): # if not help_found: # elem["helps"].append(stderr[i].split("help:", 1)[1].strip()) # help_found = True # error checker doesn't like multi-help apparently. elif "in this macro invocation" in stderr[i]: in_macro = True i += 1 if not in_macro: elems.append(elem) return i def show_kind(kind): if kind == "error": return "ERROR" elif kind == "warning": return "WARNING" elif kind == "note": return "NOTE" return "HELP" def generate_code_err(indent, elem, up): content = "{}//~{} {}: {}".format(indent, up, show_kind(elem["kind"]), elem["msg"]) if up == "^": up = "|" for note in elem["notes"]: content += "\n{}//~{} {}: {}".format(indent, up, show_kind("note"), note) for help_msg in elem["helps"]: content += "\n{}//~{} {}: {}".format(indent, up, show_kind("help"), help_msg) return content, up def update_content(p, content): TO_IGNORE = [ "needless_bool/simple.rs", # rust-lang/rust-clippy#11248 "crashes/ice-7868.rs", # Has errors but in another file. "trivially_copy_pass_by_ref.rs", # the `N` in the stderr needs to be replaced by the number "tests/ui/large_types_passed_by_value.rs", # the `N` in the stderr needs to be replaced by the number ] for to_ignore in TO_IGNORE: if p.endswith(to_ignore): return try: with open(p.replace(".rs", ".stderr"), "r", encoding="utf8") as f: stderr = f.read().split('\n') except Exception: return print("Updating `{}`".format(p)) i = 0 elems = [] while i < len(stderr): line = stderr[i] if line.startswith("error: ") and not line.startswith("error: aborting due to"): i = handle_err(line, stderr, elems, "error", i) elif line.startswith("warning: ") and not line.endswith("warning emitted") and line.endswith("warnings emitted"): i = handle_err(line, stderr, elems, "warning", i) i += 1 elems.sort(key=lambda e: e["line"], reverse=True) i = 0 while i < len(elems): elem = elems[i] indent = "" c = 0 line = content[elem["line"] - 1] while c < len(line) and line[c] == ' ': indent += " " c += 1 new_content, up = generate_code_err(indent, elem, "^") i += 1 while i < len(elems) and elems[i]["line"] == elem["line"]: elem = elems[i] ret = generate_code_err(indent, elem, up) new_content += "\n" + ret[0] up = ret[1] i += 1 content.insert(elem["line"], new_content) with open(p, "w", encoding="utf8") as f: f.write("\n".join(content)) def check_if_contains_ui_test(p): if not p.endswith(".rs"): return with open(p, "r", encoding="utf8") as f: x = f.read() if "//~" not in x and "`@run-rustfix"` not in x and "`@aux-build"` not in x: update_content(p, x.split("\n")) for path, subdirs, files in os.walk("tests/ui"): for name in files: check_if_contains_ui_test(os.path.join(path, name)) ``` </details> Then ran `cargo uibless`. changelog: none
2 parents fc1152a + f467012 commit 4be90d0

File tree

733 files changed

+7564
-3326
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

733 files changed

+7564
-3326
lines changed

tests/ui/absurd-extreme-comparisons.rs

+19
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,46 @@ fn main() {
1212
const Z: u32 = 0;
1313
let u: u32 = 42;
1414
u <= 0;
15+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
1516
u <= Z;
17+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
1618
u < Z;
19+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
1720
Z >= u;
21+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
1822
Z > u;
23+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
1924
u > u32::MAX;
25+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2026
u >= u32::MAX;
27+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2128
u32::MAX < u;
29+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2230
u32::MAX <= u;
31+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2332
1-1 > u;
33+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2434
u >= !0;
35+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2536
u <= 12 - 2*6;
37+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2638
let i: i8 = 0;
2739
i < -127 - 1;
40+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2841
i8::MAX >= i;
42+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
2943
3-7 < i32::MIN;
44+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
3045
let b = false;
3146
b >= true;
47+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
3248
false > b;
49+
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
3350
u > 0; // ok
3451
// this is handled by clippy::unit_cmp
3552
() < {};
53+
//~^ ERROR: <-comparison of unit values detected. This will always be false
54+
//~| NOTE: `#[deny(clippy::unit_cmp)]` on by default
3655
}
3756

3857
use std::cmp::{Ordering, PartialEq, PartialOrd};

tests/ui/absurd-extreme-comparisons.stderr

+17-17
Original file line numberDiff line numberDiff line change
@@ -8,135 +8,135 @@ LL | u <= 0;
88
= note: `-D clippy::absurd-extreme-comparisons` implied by `-D warnings`
99

1010
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
11-
--> $DIR/absurd-extreme-comparisons.rs:15:5
11+
--> $DIR/absurd-extreme-comparisons.rs:16:5
1212
|
1313
LL | u <= Z;
1414
| ^^^^^^
1515
|
1616
= help: because `Z` is the minimum value for this type, the case where the two sides are not equal never occurs, consider using `u == Z` instead
1717

1818
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
19-
--> $DIR/absurd-extreme-comparisons.rs:16:5
19+
--> $DIR/absurd-extreme-comparisons.rs:18:5
2020
|
2121
LL | u < Z;
2222
| ^^^^^
2323
|
2424
= help: because `Z` is the minimum value for this type, this comparison is always false
2525

2626
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
27-
--> $DIR/absurd-extreme-comparisons.rs:17:5
27+
--> $DIR/absurd-extreme-comparisons.rs:20:5
2828
|
2929
LL | Z >= u;
3030
| ^^^^^^
3131
|
3232
= help: because `Z` is the minimum value for this type, the case where the two sides are not equal never occurs, consider using `Z == u` instead
3333

3434
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
35-
--> $DIR/absurd-extreme-comparisons.rs:18:5
35+
--> $DIR/absurd-extreme-comparisons.rs:22:5
3636
|
3737
LL | Z > u;
3838
| ^^^^^
3939
|
4040
= help: because `Z` is the minimum value for this type, this comparison is always false
4141

4242
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
43-
--> $DIR/absurd-extreme-comparisons.rs:19:5
43+
--> $DIR/absurd-extreme-comparisons.rs:24:5
4444
|
4545
LL | u > u32::MAX;
4646
| ^^^^^^^^^^^^
4747
|
4848
= help: because `u32::MAX` is the maximum value for this type, this comparison is always false
4949

5050
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
51-
--> $DIR/absurd-extreme-comparisons.rs:20:5
51+
--> $DIR/absurd-extreme-comparisons.rs:26:5
5252
|
5353
LL | u >= u32::MAX;
5454
| ^^^^^^^^^^^^^
5555
|
5656
= help: because `u32::MAX` is the maximum value for this type, the case where the two sides are not equal never occurs, consider using `u == u32::MAX` instead
5757

5858
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
59-
--> $DIR/absurd-extreme-comparisons.rs:21:5
59+
--> $DIR/absurd-extreme-comparisons.rs:28:5
6060
|
6161
LL | u32::MAX < u;
6262
| ^^^^^^^^^^^^
6363
|
6464
= help: because `u32::MAX` is the maximum value for this type, this comparison is always false
6565

6666
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
67-
--> $DIR/absurd-extreme-comparisons.rs:22:5
67+
--> $DIR/absurd-extreme-comparisons.rs:30:5
6868
|
6969
LL | u32::MAX <= u;
7070
| ^^^^^^^^^^^^^
7171
|
7272
= help: because `u32::MAX` is the maximum value for this type, the case where the two sides are not equal never occurs, consider using `u32::MAX == u` instead
7373

7474
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
75-
--> $DIR/absurd-extreme-comparisons.rs:23:5
75+
--> $DIR/absurd-extreme-comparisons.rs:32:5
7676
|
7777
LL | 1-1 > u;
7878
| ^^^^^^^
7979
|
8080
= help: because `1-1` is the minimum value for this type, this comparison is always false
8181

8282
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
83-
--> $DIR/absurd-extreme-comparisons.rs:24:5
83+
--> $DIR/absurd-extreme-comparisons.rs:34:5
8484
|
8585
LL | u >= !0;
8686
| ^^^^^^^
8787
|
8888
= help: because `!0` is the maximum value for this type, the case where the two sides are not equal never occurs, consider using `u == !0` instead
8989

9090
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
91-
--> $DIR/absurd-extreme-comparisons.rs:25:5
91+
--> $DIR/absurd-extreme-comparisons.rs:36:5
9292
|
9393
LL | u <= 12 - 2*6;
9494
| ^^^^^^^^^^^^^
9595
|
9696
= help: because `12 - 2*6` is the minimum value for this type, the case where the two sides are not equal never occurs, consider using `u == 12 - 2*6` instead
9797

9898
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
99-
--> $DIR/absurd-extreme-comparisons.rs:27:5
99+
--> $DIR/absurd-extreme-comparisons.rs:39:5
100100
|
101101
LL | i < -127 - 1;
102102
| ^^^^^^^^^^^^
103103
|
104104
= help: because `-127 - 1` is the minimum value for this type, this comparison is always false
105105

106106
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
107-
--> $DIR/absurd-extreme-comparisons.rs:28:5
107+
--> $DIR/absurd-extreme-comparisons.rs:41:5
108108
|
109109
LL | i8::MAX >= i;
110110
| ^^^^^^^^^^^^
111111
|
112112
= help: because `i8::MAX` is the maximum value for this type, this comparison is always true
113113

114114
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
115-
--> $DIR/absurd-extreme-comparisons.rs:29:5
115+
--> $DIR/absurd-extreme-comparisons.rs:43:5
116116
|
117117
LL | 3-7 < i32::MIN;
118118
| ^^^^^^^^^^^^^^
119119
|
120120
= help: because `i32::MIN` is the minimum value for this type, this comparison is always false
121121

122122
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
123-
--> $DIR/absurd-extreme-comparisons.rs:31:5
123+
--> $DIR/absurd-extreme-comparisons.rs:46:5
124124
|
125125
LL | b >= true;
126126
| ^^^^^^^^^
127127
|
128128
= help: because `true` is the maximum value for this type, the case where the two sides are not equal never occurs, consider using `b == true` instead
129129

130130
error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false
131-
--> $DIR/absurd-extreme-comparisons.rs:32:5
131+
--> $DIR/absurd-extreme-comparisons.rs:48:5
132132
|
133133
LL | false > b;
134134
| ^^^^^^^^^
135135
|
136136
= help: because `false` is the minimum value for this type, this comparison is always false
137137

138138
error: <-comparison of unit values detected. This will always be false
139-
--> $DIR/absurd-extreme-comparisons.rs:35:5
139+
--> $DIR/absurd-extreme-comparisons.rs:52:5
140140
|
141141
LL | () < {};
142142
| ^^^^^^^

tests/ui/approx_const.rs

+23
Original file line numberDiff line numberDiff line change
@@ -2,63 +2,86 @@
22
#[allow(clippy::similar_names)]
33
fn main() {
44
let my_e = 2.7182;
5+
//~^ ERROR: approximate value of `f{32, 64}::consts::E` found
56
let almost_e = 2.718;
7+
//~^ ERROR: approximate value of `f{32, 64}::consts::E` found
68
let no_e = 2.71;
79

810
let my_1_frac_pi = 0.3183;
11+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_1_PI` found
912
let no_1_frac_pi = 0.31;
1013

1114
let my_frac_1_sqrt_2 = 0.70710678;
15+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found
1216
let almost_frac_1_sqrt_2 = 0.70711;
17+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found
1318
let my_frac_1_sqrt_2 = 0.707;
1419

1520
let my_frac_2_pi = 0.63661977;
21+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_2_PI` found
1622
let no_frac_2_pi = 0.636;
1723

1824
let my_frac_2_sq_pi = 1.128379;
25+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_2_SQRT_PI` found
1926
let no_frac_2_sq_pi = 1.128;
2027

2128
let my_frac_pi_2 = 1.57079632679;
29+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_PI_2` found
2230
let no_frac_pi_2 = 1.5705;
2331

2432
let my_frac_pi_3 = 1.04719755119;
33+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_PI_3` found
2534
let no_frac_pi_3 = 1.047;
2635

2736
let my_frac_pi_4 = 0.785398163397;
37+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_PI_4` found
2838
let no_frac_pi_4 = 0.785;
2939

3040
let my_frac_pi_6 = 0.523598775598;
41+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_PI_6` found
3142
let no_frac_pi_6 = 0.523;
3243

3344
let my_frac_pi_8 = 0.3926990816987;
45+
//~^ ERROR: approximate value of `f{32, 64}::consts::FRAC_PI_8` found
3446
let no_frac_pi_8 = 0.392;
3547

3648
let my_ln_10 = 2.302585092994046;
49+
//~^ ERROR: approximate value of `f{32, 64}::consts::LN_10` found
3750
let no_ln_10 = 2.303;
3851

3952
let my_ln_2 = 0.6931471805599453;
53+
//~^ ERROR: approximate value of `f{32, 64}::consts::LN_2` found
4054
let no_ln_2 = 0.693;
4155

4256
let my_log10_e = 0.4342944819032518;
57+
//~^ ERROR: approximate value of `f{32, 64}::consts::LOG10_E` found
4358
let no_log10_e = 0.434;
4459

4560
let my_log2_e = 1.4426950408889634;
61+
//~^ ERROR: approximate value of `f{32, 64}::consts::LOG2_E` found
4662
let no_log2_e = 1.442;
4763

4864
let log2_10 = 3.321928094887362;
65+
//~^ ERROR: approximate value of `f{32, 64}::consts::LOG2_10` found
4966
let no_log2_10 = 3.321;
5067

5168
let log10_2 = 0.301029995663981;
69+
//~^ ERROR: approximate value of `f{32, 64}::consts::LOG10_2` found
5270
let no_log10_2 = 0.301;
5371

5472
let my_pi = 3.1415;
73+
//~^ ERROR: approximate value of `f{32, 64}::consts::PI` found
5574
let almost_pi = 3.14;
75+
//~^ ERROR: approximate value of `f{32, 64}::consts::PI` found
5676
let no_pi = 3.15;
5777

5878
let my_sq2 = 1.4142;
79+
//~^ ERROR: approximate value of `f{32, 64}::consts::SQRT_2` found
5980
let no_sq2 = 1.414;
6081

6182
let my_tau = 6.2832;
83+
//~^ ERROR: approximate value of `f{32, 64}::consts::TAU` found
6284
let almost_tau = 6.28;
85+
//~^ ERROR: approximate value of `f{32, 64}::consts::TAU` found
6386
let no_tau = 6.3;
6487
}

0 commit comments

Comments
 (0)