rust/src/test/ui/span
Alex Crichton 0374e6aab7 rustc: Rearchitect lints to be emitted more eagerly
In preparation for incremental compilation this commit refactors the lint
handling infrastructure in the compiler to be more "eager" and overall more
incremental-friendly. Many passes of the compiler can emit lints at various
points but before this commit all lints were buffered in a table to be emitted
at the very end of compilation. This commit changes these lints to be emitted
immediately during compilation using pre-calculated lint level-related data
structures.

Linting today is split into two phases, one set of "early" lints run on the
`syntax::ast` and a "late" set of lints run on the HIR. This commit moves the
"early" lints to running as late as possible in compilation, just before HIR
lowering. This notably means that we're catching resolve-related lints just
before HIR lowering. The early linting remains a pass very similar to how it was
before, maintaining context of the current lint level as it walks the tree.

Post-HIR, however, linting is structured as a method on the `TyCtxt` which
transitively executes a query to calculate lint levels. Each request to lint on
a `TyCtxt` will query the entire crate's 'lint level data structure' and then go
from there about whether the lint should be emitted or not.

The query depends on the entire HIR crate but should be very quick to calculate
(just a quick walk of the HIR) and the red-green system should notice that the
lint level data structure rarely changes, and should hopefully preserve
incrementality.

Overall this resulted in a pretty big change to the test suite now that lints
are emitted much earlier in compilation (on-demand vs only at the end). This in
turn necessitated the addition of many `#![allow(warnings)]` directives
throughout the compile-fail test suite and a number of updates to the UI test
suite.
2017-08-09 09:13:51 -07:00
..
borrowck-borrow-overloaded-auto-deref-mut.rs add hint to fix error for immutable ref in arg 2016-11-29 00:32:34 +03:00
borrowck-borrow-overloaded-auto-deref-mut.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
borrowck-borrow-overloaded-deref-mut.rs add hint to fix error for immutable ref in arg 2016-11-29 00:32:34 +03:00
borrowck-borrow-overloaded-deref-mut.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
borrowck-call-is-borrow-issue-12224.rs Point at variable moved by closure 2017-04-25 22:03:05 -07:00
borrowck-call-is-borrow-issue-12224.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
borrowck-call-method-from-mut-aliasable.rs add hint to fix error for immutable ref in arg 2016-11-29 00:32:34 +03:00
borrowck-call-method-from-mut-aliasable.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
borrowck-fn-in-const-b.rs add hint to fix error for immutable ref in arg 2016-11-29 00:32:34 +03:00
borrowck-fn-in-const-b.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
borrowck-let-suggestion-suffixes.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
borrowck-let-suggestion-suffixes.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
borrowck-object-mutability.rs add hint to fix error for immutable ref in arg 2016-11-29 00:32:34 +03:00
borrowck-object-mutability.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
borrowck-ref-into-rvalue.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
borrowck-ref-into-rvalue.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
coerce-suggestions.rs Use callsite's span for macro calls on suggestion 2017-05-31 23:48:19 -07:00
coerce-suggestions.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
destructor-restrictions.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
destructor-restrictions.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
dropck_arr_cycle_checked.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
dropck_arr_cycle_checked.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
dropck_direct_cycle_with_drop.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
dropck_direct_cycle_with_drop.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
dropck_misc_variants.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
dropck_misc_variants.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
dropck_vec_cycle_checked.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
dropck_vec_cycle_checked.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
dropck-object-cycle.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
dropck-object-cycle.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0046.rs Include type of missing trait methods in error 2016-11-05 13:26:22 -07:00
E0046.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0057.rs Better underline for E0057,E0060,E0061 2016-10-06 22:02:46 +02:00
E0057.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0072.rs Add a way to get shorter spans until char for pointing at defs 2017-04-12 01:10:48 -07:00
E0072.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0204.rs simplify Copy implementation error reporting 2017-01-04 00:03:34 +02:00
E0204.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0493.rs Moved test on E0493 from compile-fail to ui. 2016-09-02 19:55:14 +02:00
E0493.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0535.rs fix span for errors E0537, E0535 & E0536 2016-09-10 10:21:13 +03:00
E0535.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0536.rs fix span for errors E0537, E0535 & E0536 2016-09-10 10:21:13 +03:00
E0536.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
E0537.rs fix span for errors E0537, E0535 & E0536 2016-09-10 10:21:13 +03:00
E0537.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
impl-wrong-item-for-trait.rs remove associated_consts feature gate 2017-07-06 11:52:25 -07:00
impl-wrong-item-for-trait.stderr remove associated_consts feature gate 2017-07-06 11:52:25 -07:00
import-ty-params.rs Give span to angle bracketed generic arguments 2017-07-27 22:59:35 +03:00
import-ty-params.stderr Give span to angle bracketed generic arguments 2017-07-27 22:59:35 +03:00
issue28498-reject-ex1.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue28498-reject-ex1.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue28498-reject-lifetime-param.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue28498-reject-lifetime-param.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue28498-reject-passed-to-fn.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue28498-reject-passed-to-fn.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue28498-reject-trait-bound.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue28498-reject-trait-bound.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-7575.rs Remove more anonymous trait method parameters 2017-07-08 01:56:27 +03:00
issue-7575.stderr Remove more anonymous trait method parameters 2017-07-08 01:56:27 +03:00
issue-11925.rs Move 'doesn't live long enough' errors to labels 2016-08-17 15:24:42 -07:00
issue-11925.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-15480.rs Improve "Doesn't live long enough" error 2016-11-09 00:28:50 +03:00
issue-15480.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-23338-locals-die-before-temps-of-body.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-23338-locals-die-before-temps-of-body.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-23729.rs Include type of missing trait methods in error 2016-11-05 13:26:22 -07:00
issue-23729.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-23827.rs rustc: rework stability to be on-demand for type-directed lookup. 2016-11-28 04:18:11 +02:00
issue-23827.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-24356.rs Include type of missing trait methods in error 2016-11-05 13:26:22 -07:00
issue-24356.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-24690.rs rustc: Rearchitect lints to be emitted more eagerly 2017-08-09 09:13:51 -07:00
issue-24690.stderr rustc: Rearchitect lints to be emitted more eagerly 2017-08-09 09:13:51 -07:00
issue-24805-dropck-child-has-items-via-parent.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-24805-dropck-child-has-items-via-parent.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-24805-dropck-trait-has-items.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-24805-dropck-trait-has-items.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-24895-copy-clone-dropck.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-24895-copy-clone-dropck.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-25199.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-25199.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-26656.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-26656.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-27522.rs Add test for correct span for type 2017-01-04 09:56:22 -08:00
issue-27522.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-29106.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-29106.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-29595.rs remove associated_consts feature gate 2017-07-06 11:52:25 -07:00
issue-29595.stderr remove associated_consts feature gate 2017-07-06 11:52:25 -07:00
issue-33884.rs Add test for issue 33884 2017-04-20 17:06:39 -07:00
issue-33884.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-34264.rs Introduce TyErr independent from TyInfer 2017-04-02 09:45:57 -07:00
issue-34264.stderr report the total number of errors on compilation failure 2017-07-02 16:16:44 +03:00
issue-35987.rs Point to type argument span when used as trait 2016-11-08 14:17:18 -08:00
issue-35987.stderr Only underline suggestion if it is not the only code being shown 2017-07-06 14:36:49 -07:00
issue-36530.rs fix top level attr spans 2016-09-16 21:44:15 +03:00
issue-36530.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-36537.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
issue-36537.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-37767.rs E0034: provide disambiguated syntax for candidates 2017-01-12 14:54:05 -08:00
issue-37767.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-39018.rs Add clearer error message using &str + &str 2017-01-28 17:26:27 -05:00
issue-39018.stderr Change some helps to suggestions 2017-07-17 10:03:37 +02:00
issue-39698.rs Clean up "pattern doesn't bind x" messages 2017-03-06 00:20:26 -03:00
issue-39698.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
issue-40157.rs Fix incorrect span label formatting 2017-03-10 08:14:31 -08:00
issue-40157.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
lint-unused-unsafe.rs Point to enclosing block/fn on nested unsafe 2017-03-10 07:53:08 -08:00
lint-unused-unsafe.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
loan-extend.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
loan-extend.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
macro-span-replacement.rs rustc: Rearchitect lints to be emitted more eagerly 2017-08-09 09:13:51 -07:00
macro-span-replacement.stderr rustc: Rearchitect lints to be emitted more eagerly 2017-08-09 09:13:51 -07:00
macro-ty-params.rs Give span to angle bracketed generic arguments 2017-07-27 22:59:35 +03:00
macro-ty-params.stderr Avoid duplicated errors for generic arguments in macro paths 2017-07-27 23:01:17 +03:00
move-closure.rs Use UI test to test spans, instead of forced line break 2016-08-16 20:46:50 +09:00
move-closure.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
multiline-span-E0072.rs Add a way to get shorter spans until char for pointing at defs 2017-04-12 01:10:48 -07:00
multiline-span-E0072.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
multiline-span-simple.rs review comments 2016-11-23 23:44:17 -08:00
multiline-span-simple.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
multispan-import-lint.rs rustc: Rearchitect lints to be emitted more eagerly 2017-08-09 09:13:51 -07:00
multispan-import-lint.stderr rustc: Rearchitect lints to be emitted more eagerly 2017-08-09 09:13:51 -07:00
mut-arg-hint.rs add hint to fix error for immutable ref in arg 2016-11-29 00:32:34 +03:00
mut-arg-hint.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
mut-ptr-cant-outlive-ref.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
mut-ptr-cant-outlive-ref.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
non-existing-module-import.rs Point at path segment on module not found 2017-07-25 21:25:43 -07:00
non-existing-module-import.stderr Point at path segment on module not found 2017-07-25 21:25:43 -07:00
pub-struct-field.rs Stabilize pub(restricted) 2017-03-15 22:39:04 -07:00
pub-struct-field.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
range-2.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
range-2.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
recursive-type-field.rs Point at fields that make the type recursive 2017-05-04 19:11:58 -07:00
recursive-type-field.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
regionck-unboxed-closure-lifetimes.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
regionck-unboxed-closure-lifetimes.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
regions-close-over-borrowed-ref-in-obj.rs Improve "Doesn't live long enough" error 2016-11-09 00:28:50 +03:00
regions-close-over-borrowed-ref-in-obj.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
regions-close-over-type-parameter-2.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
regions-close-over-type-parameter-2.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
regions-escape-loop-via-variable.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
regions-escape-loop-via-variable.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
regions-escape-loop-via-vec.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
regions-escape-loop-via-vec.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
regions-infer-borrow-scope-within-loop.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
regions-infer-borrow-scope-within-loop.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
send-is-not-static-ensures-scoping.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
send-is-not-static-ensures-scoping.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
send-is-not-static-std-sync-2.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
send-is-not-static-std-sync-2.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
send-is-not-static-std-sync.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
send-is-not-static-std-sync.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
slice-borrow.rs Improve "Doesn't live long enough" error 2016-11-09 00:28:50 +03:00
slice-borrow.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
suggestion-non-ascii.rs Fix suggestion span error with a line containing non-ASCIIs 2017-02-25 22:11:54 +09:00
suggestion-non-ascii.stderr Change some helps to suggestions 2017-07-17 10:03:37 +02:00
type-binding.rs Use UI test to test spans, instead of forced line break 2016-08-16 20:46:50 +09:00
type-binding.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
typo-suggestion.rs Update E0425, E0446, E0449 2016-09-26 16:05:46 -07:00
typo-suggestion.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
vec_refs_data_with_early_death.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
vec_refs_data_with_early_death.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
vec-must-not-hide-type-from-dropck.rs improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
vec-must-not-hide-type-from-dropck.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00
visibility-ty-params.rs Give span to angle bracketed generic arguments 2017-07-27 22:59:35 +03:00
visibility-ty-params.stderr Give span to angle bracketed generic arguments 2017-07-27 22:59:35 +03:00
wf-method-late-bound-regions.rs Improve "Doesn't live long enough" error 2016-11-01 19:39:28 +03:00
wf-method-late-bound-regions.stderr Revert "Change error count messages" 2017-07-02 13:49:30 +03:00