Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f01082b
generalise impls on box
nia-e Aug 28, 2026
61b5532
fix: fix no resolution for self import in namespaced crates
JayanAXHF Aug 4, 2026
25a888f
fix: fix test to actually have a trailing self
JayanAXHF Sep 5, 2026
2f5678e
fix 0-length array formatting
Walnut356 Sep 7, 2026
ca69880
Add msvc revisions to some debuginfo tests
Walnut356 Sep 7, 2026
0e8a7c9
fix: add tests for super and crate
JayanAXHF Sep 8, 2026
2738c80
Add regression test for missing Fn-family generic arguments
chenyukang Sep 9, 2026
4cca91c
Avoid suggesting gated generic arguments for Fn-family traits
chenyukang Sep 9, 2026
e7f01f6
fix: make OpenModule branch match ExternPrelude
JayanAXHF Sep 9, 2026
4669d7b
Don't explicitly specify `OnDuplicate::Error` as it is the default
JonathanBrouwer Sep 9, 2026
b2416a5
yeet VisitorExt
mejrs Sep 9, 2026
1a533b6
mir: validate Move call arguments are locals or box derefs
rabindra789 Aug 6, 2026
d4811d0
normalize CoerceShared field types before relating
amirHdev Sep 9, 2026
abd1f7e
Rollup merge of #162412 - Walnut356:msvc_revision, r=jieyouxu
jhpratt Sep 9, 2026
c217fd3
Rollup merge of #160651 - rabindra789:fix/mir-verifier-move-call-args…
jhpratt Sep 9, 2026
5df5032
Rollup merge of #161946 - nia-e:more-box-impls, r=clarfonthey
jhpratt Sep 9, 2026
3c91a88
Rollup merge of #162192 - amirHdev:fix-coerce-shared-field-tys, r=aap…
jhpratt Sep 9, 2026
d55ae5d
Rollup merge of #160518 - JayanAXHF:fix/fix-ice-160512, r=petrochenkov
jhpratt Sep 9, 2026
c237ab7
Rollup merge of #162509 - chenyukang:yukang-fix-136407-fn-trait-gener…
jhpratt Sep 9, 2026
fda8db6
Rollup merge of #162521 - JonathanBrouwer:remove-default, r=khyperia
jhpratt Sep 9, 2026
6eb6316
Rollup merge of #162526 - mejrs:yeet-VisitorExt, r=mu001999
jhpratt Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,6 @@ pub(crate) struct RustcNoWritableParser;

impl NoArgsAttributeParser for RustcNoWritableParser {
const PATH: &[Symbol] = &[sym::rustc_no_writable];
const ON_DUPLICATE: OnDuplicate = OnDuplicate::Error;
const ALLOWED_TARGETS: AllowedTargets<'_> = AllowedTargets::AllowList(&[
Allow(Target::Fn),
Allow(Target::Closure),
Expand Down
1 change: 0 additions & 1 deletion compiler/rustc_attr_parsing/src/attributes/semantics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ impl NoArgsAttributeParser for MayDangleParser {
pub(crate) struct ComptimeParser;
impl NoArgsAttributeParser for ComptimeParser {
const PATH: &[Symbol] = &[sym::rustc_comptime];
const ON_DUPLICATE: OnDuplicate = OnDuplicate::Error;
const ALLOWED_TARGETS: AllowedTargets<'_> = AllowedTargets::AllowList(&[
Allow(Target::Method(MethodKind::Inherent)),
Allow(Target::Fn),
Expand Down
1 change: 0 additions & 1 deletion compiler/rustc_attr_parsing/src/attributes/transparency.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ pub(crate) struct RustcMacroTransparencyParser;

impl SingleAttributeParser for RustcMacroTransparencyParser {
const PATH: &[Symbol] = &[sym::rustc_macro_transparency];
const ON_DUPLICATE: OnDuplicate = OnDuplicate::Error;
const STABILITY: AttributeStability = unstable!(rustc_attrs);
const ALLOWED_TARGETS: AllowedTargets<'_> =
AllowedTargets::AllowList(&[Allow(Target::MacroDef)]);
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_borrowck/src/diagnostics/region_errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use rustc_hir::QPath::Resolved;
use rustc_hir::WherePredicateKind::BoundPredicate;
use rustc_hir::def::Res::Def;
use rustc_hir::def_id::DefId;
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_hir::{PolyTraitRef, TyKind, WhereBoundPredicate};
use rustc_infer::infer::{NllRegionVariableOrigin, SubregionOrigin};
use rustc_middle::bug;
Expand Down
7 changes: 5 additions & 2 deletions compiler/rustc_borrowck/src/type_check/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2628,8 +2628,11 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
let Some(src_field) = src_fields.iter().find(|f| f.name == dst_field.name) else {
continue;
};
let dst_ty = dst_field.ty(tcx, dst_args).skip_norm_wip();
let src_ty = src_field.ty(tcx, src_args).skip_norm_wip();
// These field types can still contain projections from the source or target type
// and normalize them before handing them to `NllTypeRelating`
let dst_ty = self.normalize(dst_field.ty(tcx, dst_args), location.to_locations());
let src_ty = self.normalize(src_field.ty(tcx, src_args), location.to_locations());

if let (
ty::Ref(src_region, _, Mutability::Mut),
ty::Ref(dst_region, _, Mutability::Not),
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir/src/hir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ use tracing::debug;

use crate::def::{CtorKind, DefKind, MacroKinds, PerNS, Res};
use crate::def_id::{DefId, LocalDefIdMap};
use crate::intravisit::{FnKind, VisitorExt};
use crate::intravisit::FnKind;
use crate::lints::DelayedLints;

#[derive(Debug, Copy, Clone, PartialEq, Eq, StableHash)]
Expand Down
18 changes: 7 additions & 11 deletions compiler/rustc_hir/src/intravisit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -518,27 +518,23 @@ pub trait Visitor<'v>: Sized {
) -> Self::Result {
walk_test_binder_bound_type_constraint(self, bound_type)
}
}

pub trait VisitorExt<'v>: Visitor<'v> {
/// Extension trait method to visit types in unambiguous positions, this is not
/// directly on the [`Visitor`] trait as this method should never be overridden.
///
/// Named `visit_ty_unambig` instead of `visit_unambig_ty` to aid in discovery
/// by IDes when `v.visit_ty` is written.
fn visit_ty_unambig(&mut self, t: &'v Ty<'v>) -> Self::Result {
///
/// This method cannot be overridden.
final fn visit_ty_unambig(&mut self, t: &'v Ty<'v>) -> Self::Result {
walk_unambig_ty(self, t)
}
/// Extension trait method to visit consts in unambiguous positions, this is not
/// directly on the [`Visitor`] trait as this method should never be overridden.
///

/// Named `visit_const_arg_unambig` instead of `visit_unambig_const_arg` to aid in
/// discovery by IDes when `v.visit_const_arg` is written.
fn visit_const_arg_unambig(&mut self, c: &'v ConstArg<'v>) -> Self::Result {
///
/// This method cannot be overridden.
final fn visit_const_arg_unambig(&mut self, c: &'v ConstArg<'v>) -> Self::Result {
walk_unambig_const_arg(self, c)
}
}
impl<'v, V: Visitor<'v>> VisitorExt<'v> for V {}

pub fn walk_param<'v, V: Visitor<'v>>(visitor: &mut V, param: &'v Param<'v>) -> V::Result {
let Param { hir_id, pat, ty_span: _, span: _ } = param;
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_hir/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#![feature(default_field_values)]
#![feature(derive_const)]
#![feature(exhaustive_patterns)]
#![feature(final_associated_functions)]
#![recursion_limit = "256"]
// tidy-alphabetical-end

Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir_analysis/src/check/compare_impl_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use rustc_data_structures::fx::{FxIndexMap, FxIndexSet};
use rustc_errors::codes::*;
use rustc_errors::{Applicability, ErrorGuaranteed, MultiSpan, pluralize, struct_span_code_err};
use rustc_hir::def::{DefKind, Res};
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_hir::{self as hir, AmbigArg, GenericParamKind, ImplItemKind, intravisit};
use rustc_infer::infer::{self, BoundRegionConversionTime, InferCtxt, TyCtxtInferExt};
use rustc_infer::traits::{TraitErrors, util};
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir_analysis/src/collect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ use rustc_errors::{
};
use rustc_hir::def::DefKind;
use rustc_hir::def_id::{DefId, LocalDefId};
use rustc_hir::intravisit::{InferKind, Visitor, VisitorExt};
use rustc_hir::intravisit::{InferKind, Visitor};
use rustc_hir::{self as hir, GenericParamKind, HirId, Node, PreciseCapturingArgKind, find_attr};
use rustc_infer::infer::{InferCtxt, SolverRegionConstraint, TyCtxtInferExt};
use rustc_infer::traits::{DynCompatibilityViolation, ObligationCause};
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir_analysis/src/collect/generics_of.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use std::ops::ControlFlow;
use rustc_errors::{Diag, DiagCtxtHandle, Diagnostic, Level};
use rustc_hir::def::DefKind;
use rustc_hir::def_id::LocalDefId;
use rustc_hir::intravisit::{self, Visitor, VisitorExt};
use rustc_hir::intravisit::{self, Visitor};
use rustc_hir::{self as hir, AmbigArg, GenericParamKind, HirId, Node};
use rustc_lint_defs::builtin::INVALID_TYPE_PARAM_DEFAULT;
use rustc_middle::span_bug;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use rustc_errors::ErrorGuaranteed;
use rustc_hir::def::{DefKind, Res};
use rustc_hir::def_id::LocalDefIdMap;
use rustc_hir::definitions::{DefPathData, PerParentDisambiguatorsMap};
use rustc_hir::intravisit::{self, InferKind, Visitor, VisitorExt};
use rustc_hir::intravisit::{self, InferKind, Visitor};
use rustc_hir::{
self as hir, AmbigArg, GenericArg, GenericParam, GenericParamKind, HirId, LifetimeKind, Node,
};
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir_analysis/src/collect/type_of.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use core::ops::ControlFlow;

use rustc_errors::{Applicability, StashKey, Suggestions};
use rustc_hir::def_id::{DefId, LocalDefId};
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_hir::{self as hir, AmbigArg, HirId};
use rustc_middle::ty::print::{with_forced_trimmed_paths, with_types_for_suggestion};
use rustc_middle::ty::util::IntTypeExt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,14 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
return;
}

// Do not suggest angle-bracketed arguments that require the unstable feature.
if !self.tcx.features().unboxed_closures()
&& self.tcx.is_trait(self.def_id)
&& self.tcx.trait_def(self.def_id).paren_sugar
{
return;
}

match self.gen_args_info {
MissingLifetimes { .. } => {
self.suggest_adding_lifetime_args(err);
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir_analysis/src/hir_wf_check.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use rustc_hir::def::DefKind;
use rustc_hir::intravisit::{self, Visitor, VisitorExt};
use rustc_hir::intravisit::{self, Visitor};
use rustc_hir::{self as hir, AmbigArg, ForeignItem, ForeignItemKind};
use rustc_infer::infer::TyCtxtInferExt;
use rustc_infer::traits::{ObligationCause, ObligationCauseCode, WellFormedLoc};
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use rustc_errors::{
use rustc_hir::attrs::lang_items::LangItem;
use rustc_hir::def::{CtorOf, DefKind, Res};
use rustc_hir::def_id::DefId;
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_hir::{self as hir, AmbigArg, ExprKind, GenericArg, HirId, Node, QPath, intravisit};
use rustc_hir_analysis::hir_ty_lowering::errors::GenericsArgsErrExtend;
use rustc_hir_analysis::hir_ty_lowering::generics::{
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_lint/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use rustc_errors::{
};
use rustc_hir as hir;
use rustc_hir::def_id::DefId;
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_macros::{Diagnostic, Subdiagnostic};
use rustc_middle::ty::inhabitedness::InhabitedPredicate;
use rustc_middle::ty::{Clause, PolyExistentialTraitRef, Ty, TyCtxt};
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_lint/src/non_local_def.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use rustc_errors::{MultiSpan, msg};
use rustc_hir::def::{DefKind, Res};
use rustc_hir::intravisit::{self, Visitor, VisitorExt};
use rustc_hir::intravisit::{self, Visitor};
use rustc_hir::{Body, HirId, Item, ItemKind, Node, Path, TyKind, find_attr};
use rustc_lint_defs::{declare_lint, impl_lint_pass};
use rustc_middle::ty::TyCtxt;
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_lint/src/types/improper_ctypes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use rustc_abi::VariantIdx;
use rustc_data_structures::fx::FxHashSet;
use rustc_errors::{DiagMessage, msg};
use rustc_hir::def::CtorKind;
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_hir::{self as hir, AmbigArg};
use rustc_lint_defs::{declare_lint, declare_lint_pass};
use rustc_middle::bug;
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_middle/src/ty/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use rustc_hir::attrs::lang_items::LangItem;
use rustc_hir::def::DefKind;
use rustc_hir::def_id::{CrateNum, DefId, LOCAL_CRATE, LocalDefId};
use rustc_hir::definitions::{DefPathData, Definitions, PerParentDisambiguatorState};
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_hir::{self as hir, CRATE_HIR_ID, HirId, Node, TraitCandidate, find_attr};
use rustc_index::IndexVec;
use rustc_lint_defs::Lint;
Expand Down
20 changes: 20 additions & 0 deletions compiler/rustc_mir_transform/src/validate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,26 @@ impl<'a, 'tcx> Visitor<'tcx> for CfgChecker<'a, 'tcx> {
),
);
}

// Call arguments are moved by reference, so they must be plain locals
// or the contents of a box; other moved places violate MIR invariants.
if self.tcx.sess.opts.unstable_opts.validate_mir
&& self.body.phase < MirPhase::Runtime(RuntimePhase::Initial)
{
let is_plain_local = place.projection.is_empty();
let is_box_deref =
matches!(place.projection.as_ref(), [ProjectionElem::Deref])
&& self.body.local_decls[place.local].ty.is_box();
if !is_plain_local && !is_box_deref {
self.fail(
location,
format!(
"encountered `Move` of a non-local, non-box place in `Call` terminator: {:?}",
terminator.kind,
),
);
}
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_passes/src/stability.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use rustc_feature::{EnabledLangFeature, EnabledLibFeature, UNSTABLE_LANG_FEATURE
use rustc_hir::attrs::{AttributeKind, DeprecatedSince};
use rustc_hir::def::{DefKind, Res};
use rustc_hir::def_id::{CRATE_DEF_ID, LOCAL_CRATE, LocalDefId, LocalModId};
use rustc_hir::intravisit::{self, Visitor, VisitorExt};
use rustc_hir::intravisit::{self, Visitor};
use rustc_hir::{
self as hir, AmbigArg, ConstStability, Constness, DefaultBodyStability, FieldDef, HirId, Item,
ItemKind, Path, Stability, StabilityLevel, StableSince, TraitRef, Ty, TyKind, UnstableReason,
Expand Down
23 changes: 18 additions & 5 deletions compiler/rustc_resolve/src/ident.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1031,11 +1031,24 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
)
}
ModuleOrUniformRoot::OpenModule(sym) => {
let open_ns_name = format!("{}::{}", sym.as_str(), ident.name);
let ns_ident = IdentKey::with_root_ctxt(Symbol::intern(&open_ns_name));
match self.extern_prelude_get_flag(ns_ident, ident.span, finalize.is_some()) {
Some(decl) => Ok(decl),
None => Err(Determinacy::Determined),
if ns != TypeNS {
Err(Determined)
} else {
if ident.name == kw::SelfLower {
let res = Res::OpenMod(sym);
return Ok(self.arenas.new_pub_def_decl(
res,
ident.span,
LocalExpnId::ROOT,
));
}

let open_ns_name = format!("{}::{}", sym.as_str(), ident.name);
let ns_ident = IdentKey::with_root_ctxt(Symbol::intern(&open_ns_name));
match self.extern_prelude_get_flag(ns_ident, ident.span, finalize.is_some()) {
Some(decl) => Ok(decl),
None => Err(Determined),
}
}
}
ModuleOrUniformRoot::ModuleAndExternPrelude(module) => self.resolve_ident_in_scope_set(
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_trait_selection/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use rustc_errors::{
};
use rustc_hir::def::DefKind;
use rustc_hir::def_id::{DefId, LocalDefId};
use rustc_hir::intravisit::{Visitor, VisitorExt, walk_ty};
use rustc_hir::intravisit::{Visitor, walk_ty};
use rustc_hir::{self as hir, AmbigArg, FnRetTy, GenericParamKind, Node};
use rustc_macros::{Diagnostic, Subdiagnostic};
use rustc_middle::ty::print::{PrintTraitRefExt as _, TraitRefPrintOnlyTraitPath};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use core::ops::ControlFlow;

use rustc_hir::def_id::{DefId, LocalDefId};
use rustc_hir::intravisit::{self, Visitor, VisitorExt};
use rustc_hir::intravisit::{self, Visitor};
use rustc_hir::{self as hir, AmbigArg};
use rustc_middle::hir::nested_filter;
use rustc_middle::middle::resolve_bound_vars as rbv;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
use rustc_data_structures::fx::FxIndexSet;
use rustc_errors::{ErrorGuaranteed, MultiSpan};
use rustc_hir as hir;
use rustc_hir::intravisit::VisitorExt;
use rustc_hir::intravisit::Visitor;
use rustc_middle::bug;
use rustc_middle::ty::TypeVisitor;
use tracing::debug;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use rustc_data_structures::fx::FxIndexSet;
use rustc_errors::{Applicability, Diag, ErrorGuaranteed};
use rustc_hir::def_id::DefId;
use rustc_hir::intravisit::{Visitor, VisitorExt, walk_ty};
use rustc_hir::intravisit::{Visitor, walk_ty};
use rustc_hir::{
self as hir, AmbigArg, GenericBound, GenericParam, GenericParamKind, Item, ItemKind, Lifetime,
LifetimeKind, LifetimeParamKind, MissingLifetimeKind, Node, TyKind,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use rustc_errors::{
use rustc_hir::attrs::lang_items::{self, LangItem};
use rustc_hir::def::{CtorKind, CtorOf, DefKind, Res};
use rustc_hir::def_id::DefId;
use rustc_hir::intravisit::{Visitor, VisitorExt};
use rustc_hir::intravisit::Visitor;
use rustc_hir::{
self as hir, AmbigArg, CoroutineDesugaring, CoroutineKind, CoroutineSource, Expr, HirId, Node,
expr_needs_parens,
Expand Down
2 changes: 1 addition & 1 deletion library/alloc/src/boxed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2527,7 +2527,7 @@ impl<F: ?Sized + Future + Unpin, A: Allocator> Future for Box<F, A> {
}

#[stable(feature = "box_error", since = "1.8.0")]
impl<E: Error> Error for Box<E> {
impl<E: Error, A: Allocator> Error for Box<E, A> {
#[allow(deprecated)]
fn cause(&self) -> Option<&dyn Error> {
Error::cause(&**self)
Expand Down
8 changes: 4 additions & 4 deletions library/alloc/src/io/impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ impl<B: BufRead + ?Sized> BufRead for &mut B {
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<R: Read + ?Sized> Read for Box<R> {
impl<R: Read + ?Sized, A: Allocator> Read for Box<R, A> {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
(**self).read(buf)
Expand Down Expand Up @@ -148,7 +148,7 @@ impl<T> SizeHint for Box<T> {
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<W: Write + ?Sized> Write for Box<W> {
impl<W: Write + ?Sized, A: Allocator> Write for Box<W, A> {
#[inline]
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
(**self).write(buf)
Expand Down Expand Up @@ -185,7 +185,7 @@ impl<W: Write + ?Sized> Write for Box<W> {
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl<S: Seek + ?Sized> Seek for Box<S> {
impl<S: Seek + ?Sized, A: Allocator> Seek for Box<S, A> {
#[inline]
fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> {
(**self).seek(pos)
Expand All @@ -212,7 +212,7 @@ impl<S: Seek + ?Sized> Seek for Box<S> {
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl<B: BufRead + ?Sized> BufRead for Box<B> {
impl<B: BufRead + ?Sized, A: Allocator> BufRead for Box<B, A> {
#[inline]
fn fill_buf(&mut self) -> io::Result<&[u8]> {
(**self).fill_buf()
Expand Down
3 changes: 2 additions & 1 deletion library/std/src/os/fd/owned.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use moto_rt::libc;

use super::raw::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
use crate::alloc::Allocator;
#[cfg(not(target_os = "trusty"))]
use crate::fs;
use crate::marker::PhantomData;
Expand Down Expand Up @@ -474,7 +475,7 @@ impl<T: AsFd + ?Sized> AsFd for crate::rc::UniqueRc<T> {
}

#[stable(feature = "asfd_ptrs", since = "1.64.0")]
impl<T: AsFd + ?Sized> AsFd for Box<T> {
impl<T: AsFd + ?Sized, A: Allocator> AsFd for Box<T, A> {
#[inline]
fn as_fd(&self) -> BorrowedFd<'_> {
(**self).as_fd()
Expand Down
3 changes: 2 additions & 1 deletion library/std/src/os/fd/raw.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use moto_rt::libc;

#[cfg(target_os = "motor")]
use super::owned::OwnedFd;
use crate::alloc::Allocator;
#[cfg(not(target_os = "trusty"))]
use crate::fs;
use crate::io;
Expand Down Expand Up @@ -282,7 +283,7 @@ impl<T: AsRawFd + ?Sized> AsRawFd for crate::rc::UniqueRc<T> {
}

#[stable(feature = "asrawfd_ptrs", since = "1.63.0")]
impl<T: AsRawFd> AsRawFd for Box<T> {
impl<T: AsRawFd, A: Allocator> AsRawFd for Box<T, A> {
#[inline]
fn as_raw_fd(&self) -> RawFd {
(**self).as_raw_fd()
Expand Down
Loading
Loading