rust/compiler
bors 744e397d88 Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank
Move lint level source explanation to the bottom

So, uhhhhh

r? `@estebank`

## User-facing change

"note: `#[warn(...)]` on by default" and such are moved to the bottom of the diagnostic:
```diff
-   = note: `#[warn(unsupported_calling_conventions)]` on by default
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678>
+   = note: `#[warn(unsupported_calling_conventions)]` on by default
```

Why warning is enabled is the least important thing, so it shouldn't be the first note the user reads, IMO.

## Developer-facing change

`struct_span_lint` and similar methods have a different signature.

Before: `..., impl for<'a> FnOnce(LintDiagnosticBuilder<'a, ()>)`
After: `..., impl Into<DiagnosticMessage>, impl for<'a, 'b> FnOnce(&'b mut DiagnosticBuilder<'a, ()>) -> &'b mut DiagnosticBuilder<'a, ()>`

The reason for this is that `struct_span_lint` needs to edit the diagnostic _after_ `decorate` closure is called. This also makes lint code a little bit nicer in my opinion.

Another option is to use `impl for<'a> FnOnce(LintDiagnosticBuilder<'a, ()>) -> DiagnosticBuilder<'a, ()>` altough I don't _really_ see reasons to do `let lint = lint.build(message)` everywhere.

## Subtle problem

By moving the message outside of the closure (that may not be called if the lint is disabled) `format!(...)` is executed earlier, possibly formatting `Ty` which may call a query that trims paths that crashes the compiler if there were no warnings...

I don't think it's that big of a deal, considering that we move from `format!(...)` to `fluent` (which is lazy by-default) anyway, however this required adding a workaround which is unfortunate.

## P.S.

I'm sorry, I do not how to make this PR smaller/easier to review. Changes to the lint API affect SO MUCH 😢
2022-10-01 10:44:25 +00:00
..
rustc
rustc_apfloat
rustc_arena
rustc_ast Rollup merge of #102493 - nnethercote:improve-size-assertions-some-more, r=lqd 2022-09-30 23:38:27 +02:00
rustc_ast_lowering create def ids for impl traits during ast lowering 2022-09-30 15:12:01 -03:00
rustc_ast_passes Rollup merge of #102273 - woppopo:relax_const_bound, r=fee1-dead 2022-09-26 19:19:21 +02:00
rustc_ast_pretty
rustc_attr remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
rustc_borrowck Generate synthetic impl region even in closure body in associated fn 2022-09-29 22:32:28 +00:00
rustc_builtin_macros Remove confusing drop. 2022-09-27 13:31:52 +02:00
rustc_codegen_cranelift Stabilize bench_black_box 2022-09-27 17:38:51 +02:00
rustc_codegen_gcc Rollup merge of #101075 - ellishg:rustc_codegen_gcc_diagnostics, r=davidtwco 2022-09-30 10:22:36 +02:00
rustc_codegen_llvm Adjust the s390x data layout for LLVM 16 2022-09-29 18:18:26 -07:00
rustc_codegen_ssa Rollup merge of #102426 - sunfishcode:sunfishcode/no-wasm-init-memory, r=nagisa 2022-09-29 10:15:18 -07:00
rustc_const_eval Refactor rustc lint API 2022-10-01 10:03:06 +00:00
rustc_data_structures remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
rustc_driver rustc_typeck to rustc_hir_analysis 2022-09-27 10:37:23 +02:00
rustc_error_codes Auto merge of #100719 - CohenArthur:rust-safe-intrinsic-attribute, r=wesleywiser 2022-09-28 19:07:50 +00:00
rustc_error_messages Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_errors Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_expand Rewrite and refactor format_args!() builtin macro. 2022-09-27 13:13:08 +02:00
rustc_feature attributes: Add #[rustc_safe_intrinsic] builtin 2022-09-27 15:55:42 +02:00
rustc_fs_util
rustc_graphviz
rustc_hir Shrink hir::def::Res. 2022-09-29 08:44:52 +10:00
rustc_hir_analysis Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_hir_pretty
rustc_incremental remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
rustc_index Rollup merge of #102232 - Urgau:stabilize-bench_black_box, r=TaKO8Ki 2022-09-28 13:07:17 +09:00
rustc_infer Shrink hir::def::Res. 2022-09-29 08:44:52 +10:00
rustc_interface Fix typo 2022-09-30 21:02:53 +02:00
rustc_lexer Auto merge of #102302 - nnethercote:more-lexer-improvements, r=matklad 2022-09-28 08:14:04 +00:00
rustc_lint Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_lint_defs Revert "Auto merge of #101620 - cjgillot:compute_lint_levels_by_def, r=oli-obk" 2022-09-22 19:36:11 +02:00
rustc_llvm Avoid LLVM-deprecated Optional::hasValue 2022-09-26 16:51:18 -07:00
rustc_log
rustc_macros Refactor rustc lint API 2022-10-01 10:03:06 +00:00
rustc_metadata Auto merge of #102164 - compiler-errors:rpitit-foreign, r=TaKO8Ki 2022-09-30 04:24:14 +00:00
rustc_middle Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_mir_build Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_mir_dataflow remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
rustc_mir_transform Refactor rustc lint API 2022-10-01 10:03:06 +00:00
rustc_monomorphize remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
rustc_parse Rollup merge of #102493 - nnethercote:improve-size-assertions-some-more, r=lqd 2022-09-30 23:38:27 +02:00
rustc_parse_format Fix span of byte-escaped left format args brace 2022-09-28 13:47:17 -07:00
rustc_passes Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_plugin_impl UPDATE - rename DiagnosticHandler macro to Diagnostic 2022-09-21 11:39:53 -04:00
rustc_privacy Shrink hir::def::Res. 2022-09-29 08:44:52 +10:00
rustc_query_impl Auto merge of #101785 - jyn514:query-struct-fn-ptrs, r=cjgillot 2022-09-26 00:17:59 +00:00
rustc_query_system create def ids for impl traits during ast lowering 2022-09-30 15:12:01 -03:00
rustc_resolve Rollup merge of #102483 - spastorino:create-defs-on-lowering, r=cjgillot 2022-09-30 23:38:25 +02:00
rustc_save_analysis Shrink hir::def::Res. 2022-09-29 08:44:52 +10:00
rustc_serialize remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
rustc_session Auto merge of #101619 - Xiretza:rustc_parse-session-diagnostics, r=davidtwco 2022-09-28 11:11:42 +00:00
rustc_smir
rustc_span Rollup merge of #102382 - cuviper:defid-order, r=fee1-dead 2022-09-30 19:06:05 +02:00
rustc_symbol_mangling separate definitions and HIR owners 2022-09-24 23:21:19 +09:00
rustc_target Adjust the s390x data layout for LLVM 16 2022-09-29 18:18:26 -07:00
rustc_trait_selection Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
rustc_traits remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
rustc_transmute rustc_transmute: fix big-endian discriminants 2022-09-20 13:03:43 -07:00
rustc_ty_utils rustc_typeck to rustc_hir_analysis 2022-09-27 10:37:23 +02:00
rustc_type_ir