Skip to content

Commit 2a36d33

Browse files
committed
Give all impls a constness
1 parent 08c391c commit 2a36d33

File tree

19 files changed

+69
-71
lines changed

19 files changed

+69
-71
lines changed

compiler/rustc_ast/src/ast.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3699,6 +3699,7 @@ pub struct TyAlias {
36993699
#[derive(Clone, Encodable, Decodable, Debug)]
37003700
pub struct Impl {
37013701
pub generics: Generics,
3702+
pub constness: Const,
37023703
pub of_trait: Option<Box<TraitImplHeader>>,
37033704
pub self_ty: Box<Ty>,
37043705
pub items: ThinVec<Box<AssocItem>>,
@@ -3708,7 +3709,6 @@ pub struct Impl {
37083709
pub struct TraitImplHeader {
37093710
pub defaultness: Defaultness,
37103711
pub safety: Safety,
3711-
pub constness: Const,
37123712
pub polarity: ImplPolarity,
37133713
pub trait_ref: TraitRef,
37143714
}
@@ -4103,9 +4103,9 @@ mod size_asserts {
41034103
static_assert_size!(GenericArg, 24);
41044104
static_assert_size!(GenericBound, 88);
41054105
static_assert_size!(Generics, 40);
4106-
static_assert_size!(Impl, 64);
4107-
static_assert_size!(Item, 136);
4108-
static_assert_size!(ItemKind, 72);
4106+
static_assert_size!(Impl, 80);
4107+
static_assert_size!(Item, 152);
4108+
static_assert_size!(ItemKind, 88);
41094109
static_assert_size!(LitKind, 24);
41104110
static_assert_size!(Local, 96);
41114111
static_assert_size!(MetaItemLit, 40);
@@ -4116,7 +4116,7 @@ mod size_asserts {
41164116
static_assert_size!(PathSegment, 24);
41174117
static_assert_size!(Stmt, 32);
41184118
static_assert_size!(StmtKind, 16);
4119-
static_assert_size!(TraitImplHeader, 80);
4119+
static_assert_size!(TraitImplHeader, 72);
41204120
static_assert_size!(Ty, 64);
41214121
static_assert_size!(TyKind, 40);
41224122
// tidy-alphabetical-end

compiler/rustc_ast/src/visit.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -934,11 +934,11 @@ macro_rules! common_visitor_and_walkers {
934934
}
935935

936936
impl_walkable!(|&$($mut)? $($lt)? self: Impl, vis: &mut V| {
937-
let Impl { generics, of_trait, self_ty, items } = self;
937+
let Impl { generics, of_trait, self_ty, items, constness: _ } = self;
938938
try_visit!(vis.visit_generics(generics));
939939
if let Some(box of_trait) = of_trait {
940-
let TraitImplHeader { defaultness, safety, constness, polarity, trait_ref } = of_trait;
941-
visit_visitable!($($mut)? vis, defaultness, safety, constness, polarity, trait_ref);
940+
let TraitImplHeader { defaultness, safety, polarity, trait_ref } = of_trait;
941+
visit_visitable!($($mut)? vis, defaultness, safety, polarity, trait_ref);
942942
}
943943
try_visit!(vis.visit_ty(self_ty));
944944
visit_visitable_with!($($mut)? vis, items, AssocCtxt::Impl { of_trait: of_trait.is_some() });

compiler/rustc_ast_lowering/src/item.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
344344
of_trait,
345345
self_ty: ty,
346346
items: impl_items,
347+
constness,
347348
}) => {
348349
// Lower the "impl header" first. This ordering is important
349350
// for in-band lifetimes! Consider `'a` here:
@@ -377,11 +378,14 @@ impl<'hir> LoweringContext<'_, 'hir> {
377378
.arena
378379
.alloc_from_iter(impl_items.iter().map(|item| self.lower_impl_item_ref(item)));
379380

381+
let constness = self.lower_constness(*constness);
382+
380383
hir::ItemKind::Impl(hir::Impl {
381384
generics,
382385
of_trait,
383386
self_ty: lowered_ty,
384387
items: new_impl_items,
388+
constness,
385389
})
386390
}
387391
ItemKind::Trait(box Trait {
@@ -954,9 +958,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
954958
&mut self,
955959
trait_impl_header: &TraitImplHeader,
956960
) -> &'hir hir::TraitImplHeader<'hir> {
957-
let TraitImplHeader { constness, safety, polarity, defaultness, ref trait_ref } =
958-
*trait_impl_header;
959-
let constness = self.lower_constness(constness);
961+
let TraitImplHeader { safety, polarity, defaultness, ref trait_ref } = *trait_impl_header;
960962
let safety = self.lower_safety(safety, hir::Safety::Safe);
961963
let polarity = match polarity {
962964
ImplPolarity::Positive => ImplPolarity::Positive,
@@ -979,7 +981,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
979981
);
980982

981983
self.arena.alloc(hir::TraitImplHeader {
982-
constness,
983984
safety,
984985
polarity,
985986
defaultness,

compiler/rustc_ast_passes/src/ast_validation.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,14 +1070,9 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
10701070
match &item.kind {
10711071
ItemKind::Impl(Impl {
10721072
generics,
1073+
constness,
10731074
of_trait:
1074-
Some(box TraitImplHeader {
1075-
safety,
1076-
polarity,
1077-
defaultness: _,
1078-
constness,
1079-
trait_ref: t,
1080-
}),
1075+
Some(box TraitImplHeader { safety, polarity, defaultness: _, trait_ref: t }),
10811076
self_ty,
10821077
items,
10831078
}) => {
@@ -1109,7 +1104,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
11091104
walk_list!(this, visit_assoc_item, items, AssocCtxt::Impl { of_trait: true });
11101105
});
11111106
}
1112-
ItemKind::Impl(Impl { generics, of_trait: None, self_ty, items }) => {
1107+
ItemKind::Impl(Impl { generics, of_trait: None, self_ty, items, constness: _ }) => {
11131108
self.visit_attrs_vis(&item.attrs, &item.vis);
11141109
self.visibility_not_permitted(
11151110
&item.vis,

compiler/rustc_ast_pretty/src/pprust/state/item.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ impl<'a> State<'a> {
305305
let (cb, ib) = self.head(visibility_qualified(&item.vis, "union"));
306306
self.print_struct(struct_def, generics, *ident, item.span, true, cb, ib);
307307
}
308-
ast::ItemKind::Impl(ast::Impl { generics, of_trait, self_ty, items }) => {
308+
ast::ItemKind::Impl(ast::Impl { generics, of_trait, self_ty, items, constness }) => {
309309
let (cb, ib) = self.head("");
310310
self.print_visibility(&item.vis);
311311

@@ -321,24 +321,20 @@ impl<'a> State<'a> {
321321
};
322322

323323
if let Some(box of_trait) = of_trait {
324-
let ast::TraitImplHeader {
325-
defaultness,
326-
safety,
327-
constness,
328-
polarity,
329-
ref trait_ref,
330-
} = *of_trait;
324+
let ast::TraitImplHeader { defaultness, safety, polarity, ref trait_ref } =
325+
*of_trait;
331326
self.print_defaultness(defaultness);
332327
self.print_safety(safety);
333328
impl_generics(self);
334-
self.print_constness(constness);
329+
self.print_constness(*constness);
335330
if let ast::ImplPolarity::Negative(_) = polarity {
336331
self.word("!");
337332
}
338333
self.print_trait_ref(trait_ref);
339334
self.space();
340335
self.word_space("for");
341336
} else {
337+
self.print_constness(*constness);
342338
impl_generics(self);
343339
}
344340

compiler/rustc_builtin_macros/src/deriving/coerce_pointee.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ pub(crate) fn expand_deriving_coerce_pointee(
137137
safety: ast::Safety::Default,
138138
polarity: ast::ImplPolarity::Positive,
139139
defaultness: ast::Defaultness::Final,
140-
constness: ast::Const::No,
141140
trait_ref,
142141
})),
142+
constness: ast::Const::No,
143143
self_ty: self_type.clone(),
144144
items: ThinVec::new(),
145145
}),
@@ -160,9 +160,9 @@ pub(crate) fn expand_deriving_coerce_pointee(
160160
safety: ast::Safety::Default,
161161
polarity: ast::ImplPolarity::Positive,
162162
defaultness: ast::Defaultness::Final,
163-
constness: ast::Const::No,
164163
trait_ref,
165164
})),
165+
constness: ast::Const::No,
166166
self_ty: self_type.clone(),
167167
items: ThinVec::new(),
168168
}),

compiler/rustc_builtin_macros/src/deriving/generic/mod.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -845,13 +845,9 @@ impl<'a> TraitDef<'a> {
845845
safety: self.safety,
846846
polarity: ast::ImplPolarity::Positive,
847847
defaultness: ast::Defaultness::Final,
848-
constness: if self.is_const {
849-
ast::Const::Yes(DUMMY_SP)
850-
} else {
851-
ast::Const::No
852-
},
853848
trait_ref,
854849
})),
850+
constness: if self.is_const { ast::Const::Yes(DUMMY_SP) } else { ast::Const::No },
855851
self_ty: self_type,
856852
items: methods.into_iter().chain(associated_types).collect(),
857853
}),

compiler/rustc_expand/src/expand.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2386,10 +2386,10 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
23862386
) -> SmallVec<[Box<ast::AssocItem>; 1]> {
23872387
match ctxt {
23882388
AssocCtxt::Trait => self.flat_map_node(AstNodeWrapper::new(node, TraitItemTag)),
2389-
AssocCtxt::Impl { of_trait: false } => {
2389+
AssocCtxt::Impl { of_trait: false, .. } => {
23902390
self.flat_map_node(AstNodeWrapper::new(node, ImplItemTag))
23912391
}
2392-
AssocCtxt::Impl { of_trait: true } => {
2392+
AssocCtxt::Impl { of_trait: true, .. } => {
23932393
self.flat_map_node(AstNodeWrapper::new(node, TraitImplItemTag))
23942394
}
23952395
}

compiler/rustc_hir/src/hir.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4372,11 +4372,11 @@ pub struct Impl<'hir> {
43724372
pub of_trait: Option<&'hir TraitImplHeader<'hir>>,
43734373
pub self_ty: &'hir Ty<'hir>,
43744374
pub items: &'hir [ImplItemId],
4375+
pub constness: Constness,
43754376
}
43764377

43774378
#[derive(Debug, Clone, Copy, HashStable_Generic)]
43784379
pub struct TraitImplHeader<'hir> {
4379-
pub constness: Constness,
43804380
pub safety: Safety,
43814381
pub polarity: ImplPolarity,
43824382
pub defaultness: Defaultness,
@@ -4948,7 +4948,7 @@ mod size_asserts {
49484948
static_assert_size!(GenericArg<'_>, 16);
49494949
static_assert_size!(GenericBound<'_>, 64);
49504950
static_assert_size!(Generics<'_>, 56);
4951-
static_assert_size!(Impl<'_>, 40);
4951+
static_assert_size!(Impl<'_>, 48);
49524952
static_assert_size!(ImplItem<'_>, 88);
49534953
static_assert_size!(ImplItemKind<'_>, 40);
49544954
static_assert_size!(Item<'_>, 88);

compiler/rustc_hir/src/intravisit.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,10 +594,9 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item<'v>) -> V::
594594
try_visit!(visitor.visit_generics(generics));
595595
try_visit!(visitor.visit_enum_def(enum_definition));
596596
}
597-
ItemKind::Impl(Impl { generics, of_trait, self_ty, items }) => {
597+
ItemKind::Impl(Impl { generics, of_trait, self_ty, items, constness: _ }) => {
598598
try_visit!(visitor.visit_generics(generics));
599599
if let Some(TraitImplHeader {
600-
constness: _,
601600
safety: _,
602601
polarity: _,
603602
defaultness: _,

0 commit comments

Comments
 (0)