mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Auto merge of #101592 - compiler-errors:rollup-d2fya7z, r=compiler-errors
Rollup of 7 pull requests Successful merges: - #101423 (Fix hermit warnings) - #101499 (Introduce lowering_arena to avoid creating AST nodes on the fly) - #101530 (llvm-wrapper: adapt for LLVM API changes) - #101554 (rustdoc: remove unused CSS `#implementations-list > h3 > span.in-band`) - #101580 (rustdoc: remove unused CSS `div.impl-items > div`) - #101584 (rustdoc: remove no-op CSS `#settings-menu { padding: 0 }`) - #101587 (Make `Debug` impl for `Term` useful) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
c6861df836
@ -1,6 +1,6 @@
|
||||
use super::errors::{InvalidAbi, MisplacedRelaxTraitBound};
|
||||
use super::ResolverAstLoweringExt;
|
||||
use super::{AstOwner, ImplTraitContext, ImplTraitPosition};
|
||||
use super::{Arena, AstOwner, ImplTraitContext, ImplTraitPosition};
|
||||
use super::{FnDeclKind, LoweringContext, ParamMode};
|
||||
|
||||
use rustc_ast::ptr::P;
|
||||
@ -25,6 +25,7 @@ use std::iter;
|
||||
pub(super) struct ItemLowerer<'a, 'hir> {
|
||||
pub(super) tcx: TyCtxt<'hir>,
|
||||
pub(super) resolver: &'a mut ResolverAstLowering,
|
||||
pub(super) ast_arena: &'a Arena<'static>,
|
||||
pub(super) ast_index: &'a IndexVec<LocalDefId, AstOwner<'a>>,
|
||||
pub(super) owners: &'a mut IndexVec<LocalDefId, hir::MaybeOwner<&'hir hir::OwnerInfo<'hir>>>,
|
||||
}
|
||||
@ -60,6 +61,7 @@ impl<'a, 'hir> ItemLowerer<'a, 'hir> {
|
||||
tcx: self.tcx,
|
||||
resolver: self.resolver,
|
||||
arena: self.tcx.hir_arena,
|
||||
ast_arena: self.ast_arena,
|
||||
|
||||
// HirId handling.
|
||||
bodies: Vec::new(),
|
||||
|
@ -44,6 +44,7 @@ extern crate tracing;
|
||||
|
||||
use crate::errors::{AssocTyParentheses, AssocTyParenthesesSub, MisplacedImplTrait};
|
||||
|
||||
use rustc_arena::declare_arena;
|
||||
use rustc_ast::ptr::P;
|
||||
use rustc_ast::visit;
|
||||
use rustc_ast::{self as ast, *};
|
||||
@ -95,6 +96,13 @@ struct LoweringContext<'a, 'hir> {
|
||||
/// Used to allocate HIR nodes.
|
||||
arena: &'hir hir::Arena<'hir>,
|
||||
|
||||
/// Used to allocate temporary AST nodes for use during lowering.
|
||||
/// This allows us to create "fake" AST -- these nodes can sometimes
|
||||
/// be allocated on the stack, but other times we need them to live longer
|
||||
/// than the current stack frame, so they can be collected into vectors
|
||||
/// and things like that.
|
||||
ast_arena: &'a Arena<'static>,
|
||||
|
||||
/// Bodies inside the owner being lowered.
|
||||
bodies: Vec<(hir::ItemLocalId, &'hir hir::Body<'hir>)>,
|
||||
/// Attributes inside the owner being lowered.
|
||||
@ -140,6 +148,15 @@ struct LoweringContext<'a, 'hir> {
|
||||
generics_def_id_map: Vec<FxHashMap<LocalDefId, LocalDefId>>,
|
||||
}
|
||||
|
||||
declare_arena!([
|
||||
[] tys: rustc_ast::Ty,
|
||||
[] aba: rustc_ast::AngleBracketedArgs,
|
||||
[] ptr: rustc_ast::PolyTraitRef,
|
||||
// This _marker field is needed because `declare_arena` creates `Arena<'tcx>` and we need to
|
||||
// use `'tcx`. If we don't have this we get a compile error.
|
||||
[] _marker: std::marker::PhantomData<&'tcx ()>,
|
||||
]);
|
||||
|
||||
trait ResolverAstLoweringExt {
|
||||
fn legacy_const_generic_args(&self, expr: &Expr) -> Option<Vec<usize>>;
|
||||
fn get_partial_res(&self, id: NodeId) -> Option<PartialRes>;
|
||||
@ -401,10 +418,13 @@ pub fn lower_to_hir<'hir>(tcx: TyCtxt<'hir>, (): ()) -> hir::Crate<'hir> {
|
||||
tcx.definitions_untracked().def_index_count(),
|
||||
);
|
||||
|
||||
let ast_arena = Arena::default();
|
||||
|
||||
for def_id in ast_index.indices() {
|
||||
item::ItemLowerer {
|
||||
tcx,
|
||||
resolver: &mut resolver,
|
||||
ast_arena: &ast_arena,
|
||||
ast_index: &ast_index,
|
||||
owners: &mut owners,
|
||||
}
|
||||
@ -974,12 +994,8 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||
}
|
||||
GenericArgs::Parenthesized(ref data) => {
|
||||
self.emit_bad_parenthesized_trait_in_assoc_ty(data);
|
||||
self.lower_angle_bracketed_parameter_data(
|
||||
&data.as_angle_bracketed_args(),
|
||||
ParamMode::Explicit,
|
||||
itctx,
|
||||
)
|
||||
.0
|
||||
let aba = self.ast_arena.aba.alloc(data.as_angle_bracketed_args());
|
||||
self.lower_angle_bracketed_parameter_data(aba, ParamMode::Explicit, itctx).0
|
||||
}
|
||||
};
|
||||
gen_args_ctor.into_generic_args(self)
|
||||
@ -1048,15 +1064,13 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||
|
||||
self.with_dyn_type_scope(false, |this| {
|
||||
let node_id = this.next_node_id();
|
||||
let ty = this.lower_ty(
|
||||
&Ty {
|
||||
id: node_id,
|
||||
kind: TyKind::ImplTrait(impl_trait_node_id, bounds.clone()),
|
||||
span: this.lower_span(constraint.span),
|
||||
tokens: None,
|
||||
},
|
||||
itctx,
|
||||
);
|
||||
let ty = this.ast_arena.tys.alloc(Ty {
|
||||
id: node_id,
|
||||
kind: TyKind::ImplTrait(impl_trait_node_id, bounds.clone()),
|
||||
span: this.lower_span(constraint.span),
|
||||
tokens: None,
|
||||
});
|
||||
let ty = this.lower_ty(ty, itctx);
|
||||
|
||||
hir::TypeBindingKind::Equality { term: ty.into() }
|
||||
})
|
||||
@ -1192,12 +1206,13 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||
&& let Res::Def(DefKind::Trait | DefKind::TraitAlias, _) = partial_res.base_res()
|
||||
{
|
||||
let (bounds, lifetime_bound) = self.with_dyn_type_scope(true, |this| {
|
||||
let poly_trait_ref = this.ast_arena.ptr.alloc(PolyTraitRef {
|
||||
bound_generic_params: vec![],
|
||||
trait_ref: TraitRef { path: path.clone(), ref_id: t.id },
|
||||
span: t.span
|
||||
});
|
||||
let bound = this.lower_poly_trait_ref(
|
||||
&PolyTraitRef {
|
||||
bound_generic_params: vec![],
|
||||
trait_ref: TraitRef { path: path.clone(), ref_id: t.id },
|
||||
span: t.span
|
||||
},
|
||||
poly_trait_ref,
|
||||
itctx,
|
||||
);
|
||||
let bounds = this.arena.alloc_from_iter([bound]);
|
||||
|
@ -936,12 +936,14 @@ LLVMRustOptimizeWithNewPassManager(
|
||||
/*CompileKernel=*/false);
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[Options](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
#if LLVM_VERSION_GE(14, 0)
|
||||
#if LLVM_VERSION_GE(14, 0) && LLVM_VERSION_LT(16, 0)
|
||||
MPM.addPass(ModuleMemorySanitizerPass(Options));
|
||||
#else
|
||||
MPM.addPass(MemorySanitizerPass(Options));
|
||||
#endif
|
||||
#if LLVM_VERSION_LT(16, 0)
|
||||
MPM.addPass(createModuleToFunctionPassAdaptor(MemorySanitizerPass(Options)));
|
||||
#endif
|
||||
}
|
||||
);
|
||||
}
|
||||
@ -972,7 +974,11 @@ LLVMRustOptimizeWithNewPassManager(
|
||||
/*UseAfterScope=*/true,
|
||||
AsanDetectStackUseAfterReturnMode::Runtime,
|
||||
};
|
||||
#if LLVM_VERSION_LT(16, 0)
|
||||
MPM.addPass(ModuleAddressSanitizerPass(opts));
|
||||
#else
|
||||
MPM.addPass(AddressSanitizerPass(opts));
|
||||
#endif
|
||||
#else
|
||||
MPM.addPass(ModuleAddressSanitizerPass(
|
||||
/*CompileKernel=*/false, SanitizerOptions->SanitizeAddressRecover));
|
||||
|
@ -915,12 +915,25 @@ pub struct CoercePredicate<'tcx> {
|
||||
}
|
||||
pub type PolyCoercePredicate<'tcx> = ty::Binder<'tcx, CoercePredicate<'tcx>>;
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub struct Term<'tcx> {
|
||||
ptr: NonZeroUsize,
|
||||
marker: PhantomData<(Ty<'tcx>, Const<'tcx>)>,
|
||||
}
|
||||
|
||||
impl Debug for Term<'_> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let data = if let Some(ty) = self.ty() {
|
||||
format!("Term::Ty({:?})", ty)
|
||||
} else if let Some(ct) = self.ct() {
|
||||
format!("Term::Ct({:?})", ct)
|
||||
} else {
|
||||
unreachable!()
|
||||
};
|
||||
f.write_str(&data)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> From<Ty<'tcx>> for Term<'tcx> {
|
||||
fn from(ty: Ty<'tcx>) -> Self {
|
||||
TermKind::Ty(ty).pack()
|
||||
|
@ -2,7 +2,6 @@ use crate::cell::UnsafeCell;
|
||||
use crate::collections::VecDeque;
|
||||
use crate::hint;
|
||||
use crate::ops::{Deref, DerefMut, Drop};
|
||||
use crate::ptr;
|
||||
use crate::sync::atomic::{AtomicUsize, Ordering};
|
||||
use crate::sys::hermit::abi;
|
||||
|
||||
|
@ -487,6 +487,4 @@ pub mod netc {
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct sockaddr {}
|
||||
|
||||
pub type socklen_t = usize;
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
use crate::cell::UnsafeCell;
|
||||
use crate::sys::locks::{MovableCondvar, Mutex};
|
||||
use crate::sys_common::lazy_box::{LazyBox, LazyInit};
|
||||
|
||||
pub struct RwLock {
|
||||
lock: Mutex,
|
||||
|
@ -197,10 +197,6 @@ h4.code-header {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
div.impl-items > div {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.sidebar,
|
||||
.mobile-topbar,
|
||||
@ -212,7 +208,6 @@ a.source,
|
||||
span.since,
|
||||
#source-sidebar, #sidebar-toggle,
|
||||
details.rustdoc-toggle > summary::before,
|
||||
div.impl-items > div:not(.docblock):not(.item-info),
|
||||
.content ul.crate a.crate,
|
||||
a.srclink,
|
||||
#help-button > button,
|
||||
@ -1449,9 +1444,7 @@ pre.rust {
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
}
|
||||
#settings-menu {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#settings-menu > a, #help-button > button {
|
||||
padding: 5px;
|
||||
height: 100%;
|
||||
@ -1528,10 +1521,6 @@ kbd {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
#implementations-list > h3 > span.in-band {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#main-content > ul {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user