Commit Graph

52 Commits

Author SHA1 Message Date
Oli Scherer 805f389da5 Remove LintExpectationId from Level variants 2025-04-03 09:22:21 +00:00
Oli Scherer c51816ee59 Make LevelAndSource a struct 2025-04-03 09:17:55 +00:00
Michael Goulet c682aa162b Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
Nicholas Nethercote 84ac80f192 Reformat use declarations.
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
León Orell Valerian Liehr 06bc4fc671 Remove LintDiagnostic::msg
* instead simply set the primary message inside the lint decorator functions
* it used to be this way before [#]101986 which introduced `msg` to prevent
  good path delayed bugs (which no longer exist) from firing under certain
  circumstances when lints were suppressed / silenced
* this is no longer necessary for various reasons I presume
* it shaves off complexity and makes further changes easier to implement
2024-05-23 04:08:35 +02:00
Nicholas Nethercote 6341935a13 Remove extern crate tracing from numerous crates. 2024-04-30 16:47:49 +10:00
Nadrieril f27540697e Rename RustcMatchCheckCtxt -> RustcPatCtxt 2024-03-13 14:07:44 +01:00
Nadrieril d339bdaa07 DeconstructedPat.data is always present now 2024-03-11 04:38:57 +01:00
Nicholas Nethercote e9f0d9be0e Rename DecorateLint as LintDiagnostic.
To match `derive(LintDiagnostic)`.
2024-03-11 10:04:50 +11:00
Michael Goulet 6b2a8249c1 Remove dead args from functions 2024-02-02 22:47:26 +00:00
Nadrieril 6ef836246b Make PatternColumn part of the public API 2024-01-30 17:06:52 +01:00
Nadrieril cb0e8c508c Limit the use of PlaceCtxt 2024-01-30 17:06:30 +01:00
Nadrieril 0b2579a1b6 Make PatternColumn generic in Cx 2024-01-30 16:57:44 +01:00
Nicholas Nethercote e164cf30f8 Rename TyCtxt::emit_spanned_lint as TyCtxt::emit_node_span_lint. 2024-01-23 08:09:05 +11:00
Nadrieril 796cdc590c Remove Ty: Copy bound 2024-01-20 15:22:14 +01:00
Matthias Krüger 2587100a9b Rollup merge of #119835 - Nadrieril:simplify-empty-logic, r=compiler-errors
Exhaustiveness: simplify empty pattern logic

The logic that handles empty patterns had gotten quite convoluted. This PR simplifies it a lot. I tried to make the logic as easy as possible to follow; this only does logically equivalent changes.

The first commit is a drive-by comment clarification that was requested after another PR a while back.

r? `@compiler-errors`
2024-01-19 19:27:00 +01:00
Nadrieril 8b66f497eb Lint overlapping ranges directly from exhaustiveness 2024-01-15 19:27:06 +01:00
Nadrieril edb27a306a Make all the empty pattern decisions in usefulness 2024-01-15 16:56:18 +01:00
Nadrieril a24f4db41b Only lint ranges that really overlap 2024-01-11 14:04:11 +01:00
Nadrieril 6f6ba2571d Factor out collection of overlapping ranges 2024-01-11 13:59:41 +01:00
bors 65b323b168 Auto merge of #119837 - matthiaskrgr:rollup-l2olpad, r=matthiaskrgr
Rollup of 11 pull requests

Successful merges:

 - #115046 (Use version-sorting for all sorting)
 - #118915 (Add some comments, add `can_define_opaque_ty` check to `try_normalize_ty_recur`)
 - #119006 (Fix is_global special address handling)
 - #119637 (Pass LLVM error message back to pass wrapper.)
 - #119715 (Exhaustiveness: abort on type error)
 - #119763 (Cleanup things in and around `Diagnostic`)
 - #119788 (change function name in comments)
 - #119790 (Fix all_trait* methods to return all traits available in StableMIR)
 - #119803 (Silence some follow-up errors [1/x])
 - #119804 (Stabilize mutex_unpoison feature)
 - #119832 (Meta: Add project const traits to triagebot config)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-01-11 02:10:34 +00:00
Nadrieril 4a1889e3fd Document the new expand_and_push method 2024-01-09 16:32:17 +01:00
Nadrieril 4b2e8bc841 Abort analysis on type error 2024-01-07 22:13:08 +01:00
Nadrieril 07d5f19426 Add an error path to the algorithm 2024-01-07 22:13:08 +01:00
Nadrieril 1a3edc169b We only need the arity of the subtype list now 2024-01-07 19:20:19 +01:00
Nadrieril 4ae2840e84 Use special enum to represent algorithm-generated wildcards in the matrix 2024-01-07 19:20:19 +01:00
Nadrieril 30ca1c0a5d Remove incorrect assert
It's incorrect because `CtorSet::split` returns a non-present
constructor into `present` in one specific case: variable-length slices
of an empty type. That's because empty constructors of arity 0 break the
algorithm. This is a tricky corner case that's hard to do cleanly. The
assert wasn't adding much anyway.
2024-01-07 16:45:44 +01:00
Nadrieril 4c2386137a Factor out pushing onto PatternColumn 2024-01-07 16:45:44 +01:00
Nadrieril 50b197c6ee Reuse ctor_sub_tys when we have one around 2024-01-06 18:03:13 +01:00
bors 5bcd86d89b Auto merge of #119329 - Nadrieril:reveal-opaques-early, r=compiler-errors
Exhaustiveness: Statically enforce revealing of opaques

In https://github.com/rust-lang/rust/pull/116821 it was decided that exhaustiveness should operate on the hidden type of an opaque type when relevant. This PR makes sure we consistently reveal opaques within exhaustiveness. This makes it possible to remove `reveal_opaque_ty` from the `TypeCx` trait which was an unfortunate implementation detail.

r? `@compiler-errors`
2024-01-06 02:00:24 +00:00
Nicholas Nethercote 505c1371d0 Rename some Diagnostic setters.
`Diagnostic` has 40 methods that return `&mut Self` and could be
considered setters. Four of them have a `set_` prefix. This doesn't seem
necessary for a type that implements the builder pattern. This commit
removes the `set_` prefixes on those four methods.
2024-01-03 19:40:20 +11:00
Nadrieril c35272058d Statically enforce revealing of opaques 2024-01-01 23:10:03 +01:00
Nadrieril fc0be3c921 Keep reference to the original Pat in DeconstructedPat 2023-12-26 23:14:23 +01:00
Michael Goulet e1be642b41 Rollup merge of #119307 - compiler-errors:pat-lifetimes, r=Nadrieril
Clean up some lifetimes in `rustc_pattern_analysis`

This PR removes some redundant lifetimes. I figured out that we were shortening the lifetime of an arena-allocated `&'p DeconstructedPat<'p>` to `'a DeconstructedPat<'p>`, which forced us to carry both lifetimes when we could otherwise carry just one.

This PR also removes and elides some unnecessary lifetimes.

I also cherry-picked 0292eb9bb9b897f5c0926c6a8530877f67e7cc9b, and then simplified more lifetimes in `MatchVisitor`, which should make #119233 a very simple PR!

r? Nadrieril
2023-12-26 13:29:14 -05:00
Michael Goulet 4ae024c754 Elide more lifetimes 2023-12-26 02:12:33 +00:00
Michael Goulet eebb2abe0b Yeet some lifetimes 2023-12-26 01:59:18 +00:00
Nicholas Nethercote 99472c7049 Remove Session methods that duplicate DiagCtxt methods.
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier
access.
2023-12-24 08:05:28 +11:00
Nadrieril 5fccaee59c Clarify the situation with dummy patterns and PatData
Use an explicit `Option` instead of requiring a `Default` bound
2023-12-23 00:08:38 +01:00
Nadrieril 2a87bae48d Reveal opaque types in exhaustiveness checking 2023-12-20 14:43:00 +01:00
Nadrieril 3016c29628 s/MatchCx/TypeCx/ 2023-12-15 17:26:19 +01:00
Nadrieril 4bcf66f875 Introduce MatchCtxt 2023-12-15 16:58:38 +01:00
Nadrieril 60ea14bfaa s/PatCtxt/PlaceCtxt/ 2023-12-15 16:58:38 +01:00
Nadrieril 1e89a38423 pattern_analysis doesn't need to know what spans are 2023-12-15 16:58:38 +01:00
Nadrieril 8c5e89907c Address review comments 2023-12-15 16:58:38 +01:00
Nadrieril e10b165775 s/RustcCtxt/RustcMatchCheckCtxt/ 2023-12-15 16:58:38 +01:00
Nadrieril 42f4393824 Iron out last rustc-specific details 2023-12-15 16:58:37 +01:00
Nadrieril cb622f3994 Name rustc-specific things "rustc" 2023-12-15 16:58:37 +01:00
Nadrieril 3d7c4df326 Abstract MatchCheckCtxt into a trait 2023-12-15 16:58:36 +01:00
Nadrieril 3ad76f9325 Disentangle the arena from MatchCheckCtxt 2023-12-15 16:57:36 +01:00
Nadrieril 081c3dcf43 Remove all matching on ty.kind() outside cx 2023-12-15 16:57:36 +01:00