Use `tidy` to sort crate attributes for all compiler crates.
We already do this for a number of crates, e.g. `rustc_middle`,
`rustc_span`, `rustc_metadata`, `rustc_span`, `rustc_errors`.
For the ones we don't, in many cases the attributes are a mess.
- There is no consistency about order of attribute kinds (e.g.
`allow`/`deny`/`feature`).
- Within attribute kind groups (e.g. the `feature` attributes),
sometimes the order is alphabetical, and sometimes there is no
particular order.
- Sometimes the attributes of a particular kind aren't even grouped
all together, e.g. there might be a `feature`, then an `allow`, then
another `feature`.
This commit extends the existing sorting to all compiler crates,
increasing consistency. If any new attribute line is added there is now
only one place it can go -- no need for arbitrary decisions.
Exceptions:
- `rustc_log`, `rustc_next_trait_solver` and `rustc_type_ir_macros`,
because they have no crate attributes.
- `rustc_codegen_gcc`, because it's quasi-external to rustc (e.g. it's
ignored in `rustfmt.toml`).
2024-06-12 03:49:36 +00:00
|
|
|
// tidy-alphabetical-start
|
2021-01-05 18:53:07 +00:00
|
|
|
#![feature(associated_type_defaults)]
|
|
|
|
#![feature(box_patterns)]
|
|
|
|
#![feature(exact_size_is_empty)]
|
2023-01-21 22:28:54 +00:00
|
|
|
#![feature(let_chains)]
|
2023-11-23 07:19:43 +00:00
|
|
|
#![feature(try_blocks)]
|
Use `tidy` to sort crate attributes for all compiler crates.
We already do this for a number of crates, e.g. `rustc_middle`,
`rustc_span`, `rustc_metadata`, `rustc_span`, `rustc_errors`.
For the ones we don't, in many cases the attributes are a mess.
- There is no consistency about order of attribute kinds (e.g.
`allow`/`deny`/`feature`).
- Within attribute kind groups (e.g. the `feature` attributes),
sometimes the order is alphabetical, and sometimes there is no
particular order.
- Sometimes the attributes of a particular kind aren't even grouped
all together, e.g. there might be a `feature`, then an `allow`, then
another `feature`.
This commit extends the existing sorting to all compiler crates,
increasing consistency. If any new attribute line is added there is now
only one place it can go -- no need for arbitrary decisions.
Exceptions:
- `rustc_log`, `rustc_next_trait_solver` and `rustc_type_ir_macros`,
because they have no crate attributes.
- `rustc_codegen_gcc`, because it's quasi-external to rustc (e.g. it's
ignored in `rustfmt.toml`).
2024-06-12 03:49:36 +00:00
|
|
|
// tidy-alphabetical-end
|
2021-01-05 18:53:07 +00:00
|
|
|
|
2023-11-21 21:49:37 +00:00
|
|
|
use rustc_middle::ty;
|
Revised mir-dataflow.
Incorporates many fixes contributed by arielb1.
----
revise borrowck::mir::dataflow code to allow varying domain for bitvectors.
This particular code implements the `BitDenotation` trait for three
analyses:
* `MovingOutStatements`, which, like `borrowck::move_data`, maps each
bit-index to a move instruction, and a 1 means "the effect of this
move reaches this point" (and the assigned l-value, if a scoped
declaration, is still in scope).
* `MaybeInitializedLvals`, which maps each bit-index to an l-value.
A 1 means "there exists a control flow path to this point that
initializes the associated l-value."
* `MaybeUninitializedLvals`, which maps each bit-index to an l-value
A 1 means "there exists a control flow path to this point that
de-initializes the associated l-value."
----
Revised `graphviz` dataflow-rendering support in `borrowck::mir`.
One big difference is that this code is now parameterized over the
`BitDenotation`, so that it can be used to render dataflow results
independent of how the dataflow bitvectors are interpreted; see where
reference to `MoveOut` is replaced by the type parameter `D`.
----
Factor out routine to query subattributes in `#[rustc_mir(..)]`.
(Later commits build upon this for some unit testing and instrumentation.)
----
thread through a tcx so that I can query types of lvalues as part of analysis.
----
Revised `BitDenotation::Ctxt`, allowing variation beyond `MoveData`.
The main motivation is to ease threading through a `TyCtxt`.
(In hindsight it might have been better to instead attach the `TyCtxt`
to each of the different dataflow implementations, but that would
require e.g. switching away from having a `Default` impl, so I am
leaving that experiment for another time.)
2016-05-02 13:50:27 +00:00
|
|
|
|
2024-01-20 19:52:18 +00:00
|
|
|
// Please change the public `use` directives cautiously, as they might be used by external tools.
|
|
|
|
// See issue #120130.
|
2021-01-01 00:53:25 +00:00
|
|
|
pub use self::drop_flag_effects::{
|
|
|
|
drop_flag_effects_for_function_entry, drop_flag_effects_for_location,
|
2023-10-01 08:47:12 +00:00
|
|
|
move_path_children_matching, on_all_children_bits, on_lookup_result_bits,
|
2021-01-01 00:53:25 +00:00
|
|
|
};
|
2020-02-29 05:55:41 +00:00
|
|
|
pub use self::framework::{
|
2024-01-20 10:39:33 +00:00
|
|
|
fmt, graphviz, lattice, visit_results, Analysis, AnalysisDomain, Backward, Direction, Engine,
|
|
|
|
Forward, GenKill, GenKillAnalysis, JoinSemiLattice, MaybeReachable, Results, ResultsCursor,
|
|
|
|
ResultsVisitable, ResultsVisitor, SwitchIntEdgeEffects,
|
2023-11-21 23:25:52 +00:00
|
|
|
};
|
2017-07-04 10:38:48 +00:00
|
|
|
use self::move_paths::MoveData;
|
|
|
|
|
2023-01-12 20:04:42 +00:00
|
|
|
pub mod debuginfo;
|
2018-08-30 21:54:32 +00:00
|
|
|
pub mod drop_flag_effects;
|
2021-01-05 18:53:07 +00:00
|
|
|
pub mod elaborate_drops;
|
2022-08-19 09:21:14 +00:00
|
|
|
mod errors;
|
2020-03-02 17:43:18 +00:00
|
|
|
mod framework;
|
2020-05-04 19:50:36 +00:00
|
|
|
pub mod impls;
|
2017-06-26 12:57:26 +00:00
|
|
|
pub mod move_paths;
|
2023-12-03 13:09:51 +00:00
|
|
|
pub mod points;
|
2021-01-05 18:53:07 +00:00
|
|
|
pub mod rustc_peek;
|
|
|
|
pub mod storage;
|
2023-07-04 07:39:30 +00:00
|
|
|
pub mod un_derefer;
|
2022-08-25 16:43:46 +00:00
|
|
|
pub mod value_analysis;
|
2017-06-26 12:57:26 +00:00
|
|
|
|
2023-11-21 22:53:07 +00:00
|
|
|
rustc_fluent_macro::fluent_messages! { "../messages.ftl" }
|
2022-10-13 09:13:02 +00:00
|
|
|
|
2020-02-29 05:47:36 +00:00
|
|
|
pub struct MoveDataParamEnv<'tcx> {
|
2020-12-30 17:48:40 +00:00
|
|
|
pub move_data: MoveData<'tcx>,
|
|
|
|
pub param_env: ty::ParamEnv<'tcx>,
|
2020-02-29 05:47:36 +00:00
|
|
|
}
|