Commit Graph

25 Commits

Author SHA1 Message Date
Samuel Tardieu 657ee48bec Ignore instructions following a break from block in never_loop lint
It is not sufficient to ignore break from a block inside the loop.
Instructions after the break must be ignored, as they are unreachable.
This is also true for all instructions in outer blocks and loops
until the right block is reached.
2023-02-14 09:55:44 +01:00
Samuel Tardieu e9dffa3910 Fix a bug in never_loop when anonymous blocks are nested in named blocks
The following code

```
loop {
    'a: {
        { }
        break 'a;
    }
}
```

was detected as a never-looping loop.
2023-02-14 09:23:04 +01:00
Kartavya Vashishtha 9f3b6e9acd don't emit AlwaysBreaks if it targets a block
Introduced an ignored_ids parameter.
Takes O(n^2) time in the worst case.

Can be changed to collect block ids in first phase,
and then filter with binary search in second.
2022-11-16 11:01:07 +05:30
Kartavya Vashishtha 989986144c fix never_loop false positive
on unconditional break to internal labeled block

ref #9831
2022-11-12 20:36:30 +05:30
Philipp Krones bbcde66685 Merge remote-tracking branch 'upstream/master' into rustup 2022-09-28 14:27:32 +02:00
Yotam Ofek d63aeceaa1 [never_loop]: Fix FP with let..else statements. 2022-09-19 10:57:29 +00:00
flip1995 f8f9d01c2a Merge commit 'd7b5cbf065b88830ca519adcb73fad4c0d24b1c7' into clippyup 2022-06-16 17:39:06 +02:00
andylizi a8370d4460 Fix false positive for never_loop struct expression fields 2022-06-15 18:02:59 +08:00
flip1995 d164ab65f7 Merge commit 'da5a6fb1b65ec6581a67e942a3850f6bc15a552c' into clippyup 2020-07-26 21:07:07 +02:00
Matthias Krüger 3618b97f59 fix typos (found by codespell) 2020-07-17 01:58:41 +02:00
Michael Wright 7c98915da9 Fix never_loop false positive
Closes #4058
2019-07-01 07:22:04 +02:00
Philipp Hansch 38d4ac7cea Remove all copyright license headers
Discussion previously happened in https://github.com/rust-lang/rust/pull/43498
2019-01-08 21:46:39 +01:00
Matthias Krüger 435299be30 rustfmt tests 2018-12-09 23:26:16 +01:00
Oliver Scherer b8654eaa6c Stabilize tool lints 2018-10-11 12:16:22 +02:00
Manish Goregaokar e9c025ea70 Add license header to Rust files 2018-10-06 09:43:08 -07:00
flip1995 1b6f6051a8 Adapt ui-tests to the tool_lints 2018-08-29 11:08:29 -07:00
Karim Snj 5c1be4a4ba lint: immutable only vars in while condition 2018-02-25 18:25:31 +01:00
laurent bcdf57e220 Refactor the never-loop detection, fixes #1991. 2017-11-05 14:43:28 +00:00
Cameron Steffen a013568f70 add never_loop tests 2017-10-08 17:03:34 -05:00
Cameron Steffen d6b35f9839 add never_loop test 2017-10-05 23:46:08 -05:00
Oliver Schneider 50ffaca4c9 Reduce the hackiness of cargo-clippy 2017-10-03 12:07:24 +02:00
Seiichi Uchida 0215a1acb0 Update a test 2017-09-14 22:27:29 +09:00
Oliver Schneider 74c776585c Move all our tests back to ui tests 2017-08-01 17:54:21 +02:00
Oliver Schneider 4465bc3e3f Make most tests an example so we can run them one by one 2017-05-17 14:19:44 +02:00
Andre Bogus 505eb53d29 New never loop lint
This lint detects loops that unconditionally break or return.

Closes #257
2017-02-17 04:53:14 +01:00