summary refs log tree commit diff
path: root/compiler/rustc_pattern_analysis/src/lints.rs
AgeCommit message (Collapse)AuthorLines
2024-09-22Reformat using the new identifier sorting from rustfmtMichael Goulet-1/+1
2024-07-29Reformat `use` declarations.Nicholas Nethercote-3/+4
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-05-23Remove `LintDiagnostic::msg`León Orell Valerian Liehr-1/+0
* 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-04-30Remove `extern crate tracing` from numerous crates.Nicholas Nethercote-3/+3
2024-03-13Rename `RustcMatchCheckCtxt` -> `RustcPatCtxt`Nadrieril-6/+6
2024-03-11`DeconstructedPat.data` is always present nowNadrieril-1/+1
2024-03-11Rename `DecorateLint` as `LintDiagnostic`.Nicholas Nethercote-1/+1
To match `derive(LintDiagnostic)`.
2024-02-02Remove dead args from functionsMichael Goulet-1/+1
2024-01-30Make `PatternColumn` part of the public APINadrieril-84/+3
2024-01-30Limit the use of `PlaceCtxt`Nadrieril-18/+16
2024-01-30Make `PatternColumn` generic in `Cx`Nadrieril-23/+20
2024-01-23Rename `TyCtxt::emit_spanned_lint` as `TyCtxt::emit_node_span_lint`.Nicholas Nethercote-1/+1
2024-01-20Remove Ty: Copy boundNadrieril-2/+2
2024-01-19Rollup merge of #119835 - Nadrieril:simplify-empty-logic, r=compiler-errorsMatthias Krüger-1/+1
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-15Lint overlapping ranges directly from exhaustivenessNadrieril-29/+3
2024-01-15Make all the empty pattern decisions in `usefulness`Nadrieril-1/+1
2024-01-11Only lint ranges that really overlapNadrieril-85/+2
2024-01-11Factor out collection of overlapping rangesNadrieril-29/+49
2024-01-11Auto merge of #119837 - matthiaskrgr:rollup-l2olpad, r=matthiaskrgrbors-15/+21
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-09Document the new `expand_and_push` methodNadrieril-3/+5
2024-01-07Abort analysis on type errorNadrieril-4/+8
2024-01-07Add an error path to the algorithmNadrieril-11/+13
2024-01-07We only need the arity of the subtype list nowNadrieril-2/+1
2024-01-07Use special enum to represent algorithm-generated wildcards in the matrixNadrieril-8/+9
2024-01-07Remove incorrect `assert`Nadrieril-6/+0
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-07Factor out pushing onto `PatternColumn`Nadrieril-12/+12
2024-01-06Reuse `ctor_sub_tys` when we have one aroundNadrieril-1/+2
2024-01-06Auto merge of #119329 - Nadrieril:reveal-opaques-early, r=compiler-errorsbors-15/+8
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-03Rename some `Diagnostic` setters.Nicholas Nethercote-1/+1
`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-01Statically enforce revealing of opaquesNadrieril-15/+8
2023-12-26Keep reference to the original `Pat` in `DeconstructedPat`Nadrieril-2/+2
2023-12-26Rollup merge of #119307 - compiler-errors:pat-lifetimes, r=NadrierilMichael Goulet-10/+10
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-26Elide more lifetimesMichael Goulet-1/+1
2023-12-26Yeet some lifetimesMichael Goulet-10/+10
2023-12-24Remove `Session` methods that duplicate `DiagCtxt` methods.Nicholas Nethercote-1/+1
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier access.
2023-12-23Clarify the situation with dummy patterns and `PatData`Nadrieril-2/+2
Use an explicit `Option` instead of requiring a `Default` bound
2023-12-20Reveal opaque types in exhaustiveness checkingNadrieril-15/+7
2023-12-15s/MatchCx/TypeCx/Nadrieril-1/+1
2023-12-15Introduce `MatchCtxt`Nadrieril-29/+27
2023-12-15s/PatCtxt/PlaceCtxt/Nadrieril-5/+5
2023-12-15`pattern_analysis` doesn't need to know what spans areNadrieril-2/+2
2023-12-15Address review commentsNadrieril-6/+3
2023-12-15s/RustcCtxt/RustcMatchCheckCtxt/Nadrieril-6/+7
2023-12-15Iron out last rustc-specific detailsNadrieril-1/+1
2023-12-15Name rustc-specific things "rustc"Nadrieril-9/+8
2023-12-15Abstract `MatchCheckCtxt` into a traitNadrieril-12/+13
2023-12-15Disentangle the arena from `MatchCheckCtxt`Nadrieril-18/+29
2023-12-15Remove all matching on `ty.kind()` outside `cx`Nadrieril-3/+2
2023-12-11Fix doc linksNadrieril-5/+4
2023-12-11Move lints to their own moduleNadrieril-0/+291