rust/compiler/rustc_lint/src
Matthias Krüger 305508f969
Rollup merge of #131856 - lcnr:typing-mode, r=compiler-errors
TypingMode: merge intercrate, reveal, and defining_opaque_types

This adds `TypingMode` and uses it in most places. We do not yet remove `Reveal` from `param_env`s. This and other future work as tracked in #132279 and via `FIXME`s.

Fetching the `TypingMode` of the `InferCtxt` asserts that the `TypingMode` agrees with `ParamEnv::reveal` to make sure we don't introduce any subtle bugs here. This will be unnecessary once `ParamEnv::reveal` no longer exists.

As the `TypingMode` is now a part of the query input, I've merged the coherence and non-coherence caches for the new solver. I've also enabled the local `infcx` cache during coherence by clearing the cache when forking it with a different `TypingMode`.

#### `TypingMode::from_param_env`

I am using this even in cases where I know that the `param_env` will always be `Reveal::UserFacing`. This is to make it easier to correctly refactor this code in the future, any time we use `Reveal::UserFacing` in a body while not defining its opaque types is incorrect and should use a `TypingMode` which only reveals opaques defined by that body instead, cc #124598

r? ``@compiler-errors``
2024-10-30 06:40:34 +01:00
..
context Reserve guarded string literals (RFC 3593) 2024-10-08 18:21:16 -06:00
nonstandard_style mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
types compiler: Depend on rustc_abi in rustc_lint 2024-10-27 23:59:31 -07:00
async_closures.rs docs: Enable required feature for 'closure_returning_async_block' lint 2024-09-14 10:43:26 +02:00
async_fn_in_trait.rs nightly feature tracking: get rid of the per-feature bool fields 2024-10-23 09:14:41 +01:00
builtin.rs TypingMode 🤔 2024-10-29 17:01:24 +01:00
context.rs TypingMode 🤔 2024-10-29 17:01:24 +01:00
dangling.rs New lint: dangling_pointers_from_temporaries 2024-10-28 14:16:05 +03:00
deref_into_dyn_supertrait.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
drop_forget_useless.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
early.rs Clean up some comments on lint implementation 2024-10-27 04:30:51 -07:00
enum_intrinsics_non_enums.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
errors.rs Add warn(unreachable_pub) to rustc_lint. 2024-08-27 15:24:11 +10:00
expect.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
for_loops_over_fallibles.rs TypingMode 🤔 2024-10-29 17:01:24 +01:00
foreign_modules.rs compiler: Depend on rustc_abi in rustc_lint 2024-10-27 23:59:31 -07:00
hidden_unicode_codepoints.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
if_let_rescope.rs stabilize if_let_rescope 2024-10-24 04:33:14 +08:00
impl_trait_overcaptures.rs TypingMode 🤔 2024-10-29 17:01:24 +01:00
internal.rs Auto merge of #132190 - matthiaskrgr:rollup-rsocfiz, r=matthiaskrgr 2024-10-26 19:00:57 +00:00
invalid_from_utf8.rs Remove extern crate rustc_session from rustc_lint. 2024-04-29 13:57:41 +10:00
late.rs Clean up some comments on lint implementation 2024-10-27 04:30:51 -07:00
let_underscore.rs Fix the misleading diagnostic for let_underscore_drop on type without Drop implementation 2024-09-26 10:18:18 +08:00
levels.rs Auto merge of #125116 - blyxyas:ignore-allowed-lints-final, r=cjgillot 2024-10-26 16:37:43 +00:00
lib.rs Auto merge of #128985 - GrigorenkoPV:instantly-dangling-pointer, r=Urgau 2024-10-29 00:24:07 +00:00
lints.rs New lint: dangling_pointers_from_temporaries 2024-10-28 14:16:05 +03:00
macro_expr_fragment_specifier_2024_migration.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
map_unit_fn.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
multiple_supertrait_upcastable.rs Compiler: Rename "object safe" to "dyn compatible" 2024-09-25 13:26:48 +02:00
non_ascii_idents.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
non_fmt_panic.rs TypingMode 🤔 2024-10-29 17:01:24 +01:00
non_local_def.rs Also use outermost const-anon for impl items in non_local_defs lint 2024-10-13 18:14:29 +02:00
nonstandard_style.rs Remove associated type based effects logic 2024-10-24 09:46:36 +00:00
noop_method_call.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
opaque_hidden_inferred_bound.rs TypingMode 🤔 2024-10-29 17:01:24 +01:00
pass_by_value.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
passes.rs Auto merge of #125116 - blyxyas:ignore-allowed-lints-final, r=cjgillot 2024-10-26 16:37:43 +00:00
precedence.rs Temporarily switch ambiguous_negative_literals lint to allow 2024-07-31 19:36:47 +02:00
ptr_nulls.rs Reformat use declarations. 2024-07-29 08:26:52 +10:00
redundant_semicolon.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
reference_casting.rs Use bool in favor of Option<()> for diagnostics 2024-08-21 01:31:11 -04:00
shadowed_into_iter.rs Move COGNITIVE_COMPLEXITY to use macro again 2024-10-21 19:27:34 +02:00
static_mut_refs.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
tail_expr_drop_order.rs stabilize shorter-tail-lifetimes 2024-10-24 01:56:08 +08:00
tests.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
traits.rs Represent TraitBoundModifiers as distinct parts in HIR 2024-10-22 19:48:44 +00:00
types.rs Auto merge of #125116 - blyxyas:ignore-allowed-lints-final, r=cjgillot 2024-10-26 16:37:43 +00:00
unit_bindings.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
unqualified_local_imports.rs add unqualified_local_imports lint 2024-09-23 11:57:28 +02:00
unused.rs Auto merge of #125116 - blyxyas:ignore-allowed-lints-final, r=cjgillot 2024-10-26 16:37:43 +00:00