rust/src/test
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
..
assembly Rollup merge of #100556 - Alex-Velez:patch-1, r=scottmcm 2022-08-21 16:54:01 +02:00
auxiliary experiment: trying to encode the end-to-end test as a ui test via rust_test_helpers. This instance is almost certainly insufficient because we need to force optimization flags for both the C and Rust sides of the code. but lets find out for sure. 2022-07-06 10:53:28 -04:00
codegen Enable inline stack probes on PowerPC and SystemZ 2022-09-26 13:40:24 -07:00
codegen-units Bless cgu test. 2022-09-23 18:42:14 +02:00
debuginfo Auto merge of #99556 - davidtwco:collapse-debuginfo, r=wesleywiser 2022-09-13 01:19:05 +00:00
incremental Stabilize bench_black_box 2022-09-27 17:38:51 +02:00
mir-opt Rollup merge of #101996 - b-naber:binder-print, r=lcnr 2022-09-26 19:19:20 +02:00
pretty address review 2022-09-26 14:21:39 +02:00
run-make Auto merge of #101806 - BelovDV:issue-fix-fn-find_library, r=petrochenkov 2022-09-20 07:10:18 +00:00
run-make-fulldeps rustdoc: give .line-number / .line-numbers meaningful names 2022-09-26 11:48:03 -07:00
run-pass-valgrind Remove even more box syntax uses from src/test 2022-08-07 04:22:20 +02:00
rustdoc rustdoc: update test cases for <section> tags in traits 2022-09-30 11:58:58 -07:00
rustdoc-gui Auto merge of #102237 - GuillaumeGomez:sidebar-links-color, r=notriddle 2022-10-01 08:14:25 +00:00
rustdoc-js
rustdoc-js-std Update asrawfd.js. 2022-08-29 08:31:42 -07:00
rustdoc-json Rustdoc-Json: List impls for primitives 2022-09-26 18:06:48 +01:00
rustdoc-ui bless rustdoc-ui 2022-10-01 10:03:06 +00:00
ui Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebank 2022-10-01 10:44:25 +00:00
ui-fulldeps ui-fulldeps: adopt to the new rustc lint API 2022-10-01 10:03:07 +00:00
COMPILER_TESTS.md