Auto merge of #90203 - matthiaskrgr:rollup-v215wew, r=matthiaskrgr
Rollup of 5 pull requests Successful merges: - #85833 (Scrape code examples from examples/ directory for Rustdoc) - #88041 (Make all proc-macro back-compat lints deny-by-default) - #89829 (Consider types appearing in const expressions to be invariant) - #90168 (Reset qualifs when a storage of a local ends) - #90198 (Add caveat about changing parallelism and function call overhead) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
91b931926f
57 changed files with 1281 additions and 149 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
use rustc_index::bit_set::BitSet;
|
||||
use rustc_middle::mir::visit::Visitor;
|
||||
use rustc_middle::mir::{self, BasicBlock, Local, Location};
|
||||
use rustc_middle::mir::{self, BasicBlock, Local, Location, Statement, StatementKind};
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
|
@ -120,6 +120,15 @@ where
|
|||
self.super_assign(place, rvalue, location);
|
||||
}
|
||||
|
||||
fn visit_statement(&mut self, statement: &Statement<'tcx>, location: Location) {
|
||||
match statement.kind {
|
||||
StatementKind::StorageDead(local) => {
|
||||
self.qualifs_per_local.remove(local);
|
||||
}
|
||||
_ => self.super_statement(statement, location),
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_terminator(&mut self, terminator: &mir::Terminator<'tcx>, location: Location) {
|
||||
// The effect of assignment to the return place in `TerminatorKind::Call` is not applied
|
||||
// here; that occurs in `apply_call_return_effect`.
|
||||
|
|
|
@ -1957,7 +1957,7 @@ declare_lint! {
|
|||
/// [issue #50504]: https://github.com/rust-lang/rust/issues/50504
|
||||
/// [future-incompatible]: ../index.md#future-incompatible-lints
|
||||
pub PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
|
||||
Warn,
|
||||
Deny,
|
||||
"detects proc macro derives using inaccessible names from parent modules",
|
||||
@future_incompatible = FutureIncompatibleInfo {
|
||||
reference: "issue #83583 <https://github.com/rust-lang/rust/issues/83583>",
|
||||
|
@ -3253,7 +3253,7 @@ declare_lint! {
|
|||
/// [issue #83125]: https://github.com/rust-lang/rust/issues/83125
|
||||
/// [future-incompatible]: ../index.md#future-incompatible-lints
|
||||
pub PROC_MACRO_BACK_COMPAT,
|
||||
Warn,
|
||||
Deny,
|
||||
"detects usage of old versions of certain proc-macro crates",
|
||||
@future_incompatible = FutureIncompatibleInfo {
|
||||
reference: "issue #83125 <https://github.com/rust-lang/rust/issues/83125>",
|
||||
|
|
|
@ -223,8 +223,8 @@ impl<'a, 'tcx> ConstraintContext<'a, 'tcx> {
|
|||
self.add_constraints_from_region(current, lt, variance_i)
|
||||
}
|
||||
GenericArgKind::Type(ty) => self.add_constraints_from_ty(current, ty, variance_i),
|
||||
GenericArgKind::Const(_) => {
|
||||
// Consts impose no constraints.
|
||||
GenericArgKind::Const(val) => {
|
||||
self.add_constraints_from_const(current, val, variance_i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -263,7 +263,8 @@ impl<'a, 'tcx> ConstraintContext<'a, 'tcx> {
|
|||
self.add_constraints_from_mt(current, &ty::TypeAndMut { ty, mutbl }, variance);
|
||||
}
|
||||
|
||||
ty::Array(typ, _) => {
|
||||
ty::Array(typ, len) => {
|
||||
self.add_constraints_from_const(current, len, variance);
|
||||
self.add_constraints_from_ty(current, typ, variance);
|
||||
}
|
||||
|
||||
|
@ -385,13 +386,32 @@ impl<'a, 'tcx> ConstraintContext<'a, 'tcx> {
|
|||
self.add_constraints_from_region(current, lt, variance_i)
|
||||
}
|
||||
GenericArgKind::Type(ty) => self.add_constraints_from_ty(current, ty, variance_i),
|
||||
GenericArgKind::Const(_) => {
|
||||
// Consts impose no constraints.
|
||||
GenericArgKind::Const(val) => {
|
||||
self.add_constraints_from_const(current, val, variance)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Adds constraints appropriate for a const expression `val`
|
||||
/// in a context with ambient variance `variance`
|
||||
fn add_constraints_from_const(
|
||||
&mut self,
|
||||
current: &CurrentItem,
|
||||
val: &ty::Const<'tcx>,
|
||||
variance: VarianceTermPtr<'a>,
|
||||
) {
|
||||
debug!("add_constraints_from_const(val={:?}, variance={:?})", val, variance);
|
||||
|
||||
match &val.val {
|
||||
ty::ConstKind::Unevaluated(uv) => {
|
||||
let substs = uv.substs(self.tcx());
|
||||
self.add_constraints_from_invariant_substs(current, substs, variance);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
/// Adds constraints appropriate for a function with signature
|
||||
/// `sig` appearing in a context with ambient variance `variance`
|
||||
fn add_constraints_from_sig(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue