diff --git a/Cargo.lock b/Cargo.lock index 5acc9b6d0f4..4aa54feafbd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -751,9 +751,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_arena" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c050d4265f6e524fa318fb80a7cb328a696fb242ee5f7a16fd811f6e486774" +checksum = "259cca0e975ecb05fd289ace45280c30ff792efc04e856a7f18b7fc86a3cb610" dependencies = [ "rustc-ap-rustc_data_structures", "smallvec", @@ -761,9 +761,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_ast" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739160ba3e81f157f838f7121f647a2183b218f422e16ca1b3f7c2e02c1487fb" +checksum = "bb9be435d50c88e94bbad6ea468c8680b52c5043bb298ab8058d05251717f8f8" dependencies = [ "bitflags", "rustc-ap-rustc_data_structures", @@ -778,9 +778,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_ast_passes" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919e3dbdef36cae901744675cc96a5cd2700a4086b91ca4254e5e49988231726" +checksum = "75246dd1a95a57f7767e53bde3971baa2d948078e180564709f5ea46cf863ddd" dependencies = [ "itertools 0.9.0", "rustc-ap-rustc_ast", @@ -797,9 +797,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_ast_pretty" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529e08e8d3defcdd372f5c1e2b83291720e93925090a863c85e6d377c1e4d730" +checksum = "79bede0b44bed453fd0034b7ba492840391f6486bf3e17a1af12922f0b98d4cc" dependencies = [ "rustc-ap-rustc_ast", "rustc-ap-rustc_span", @@ -808,9 +808,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_attr" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234b02185a27eedbff98dbfe6a3258fb6294efe4613c1c8613788a030324d7ad" +checksum = "84a92a4a34b996694ca2dab70361c60d2d48c07adce57e8155b7ec75e069e3ea" dependencies = [ "rustc-ap-rustc_ast", "rustc-ap-rustc_ast_pretty", @@ -826,9 +826,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_data_structures" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d784a5f78393493f3bb85f9598cb4259b86097e0ca97bb2abfd7caaf91dcb4" +checksum = "9cbfa7f82517a1b2efe7106c864c3f930b1da8aff07a27fd317af2f36522fd2e" dependencies = [ "arrayvec", "bitflags", @@ -857,9 +857,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_errors" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "802694bfa5e71310c6e3a1e9aa0f2b2a7fe5e4802899a91d8546cd205a124b98" +checksum = "58a272a5101843bcb40900cc9ccf80ecfec62830bb1f4a242986da4a34c0da89" dependencies = [ "annotate-snippets", "atty", @@ -877,9 +877,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_expand" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c14d813a3c895d715edda4c64f8819fbcae2d5bd1be948c7cc8244f5d4073" +checksum = "3bc7988f3facf2402fe057405ef0f7fbacc7e7a483da25e35a35ac09491fbbfb" dependencies = [ "rustc-ap-rustc_ast", "rustc-ap-rustc_ast_passes", @@ -901,9 +901,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_feature" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e3a4b848e0dd6a5549c3379d547947a22fc160e83605c303d4e4f5f62709d8a" +checksum = "5e931cd1580ae60c5737d3fa57633034935e885414e794d83b3e52a81021985c" dependencies = [ "rustc-ap-rustc_data_structures", "rustc-ap-rustc_span", @@ -911,21 +911,21 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_fs_util" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6026674a2afffc5602f39ef30e3d3014377c0c4be70001934a0a25b71a19e826" +checksum = "8fe9422e10d5b441d2a78202667bc85d7cf713a087b9ae6cdea0dfc825d79f07" [[package]] name = "rustc-ap-rustc_graphviz" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7ccfe86463304dbc073babd0290a0bfa3a375c2a1f7d93ba51a6129ede5864" +checksum = "ffffffdef9fd51db69c1d4c045ced8aaab999be5627f2d3a0ce020d74c1f1e50" [[package]] name = "rustc-ap-rustc_index" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe42f0017edecc6521c33a05f791e89fe218ad591f7ce5a7bc9d961a1d50129a" +checksum = "7f6f53afc4f7111c82295cb7ea3878f520bbac6a2c5a12e125b4ca9156498cff" dependencies = [ "arrayvec", "rustc-ap-rustc_macros", @@ -934,18 +934,18 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_lexer" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a32efffdb17504a11ced7bba5538ae2452ea1eef9ad48f3b63c336477352da8c" +checksum = "8056b05346dff7e39164d0434c6ec443a14ab5fbf6221bd1a56e5abbeae5f60c" dependencies = [ "unicode-xid", ] [[package]] name = "rustc-ap-rustc_lint_defs" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d983646feff12bb72cef5172ca78a8a8c034a8e0f220d6913dcaea7d65f0f63" +checksum = "364c3fb7b3cbdfe3fbb21d4078ff2cb3c58df63cda27995f8b064d21ee6dede5" dependencies = [ "rustc-ap-rustc_ast", "rustc-ap-rustc_data_structures", @@ -958,9 +958,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_macros" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c08a1ab3aef2cd8574a9f305fb2266596a505041537fcc35b036681003b0d1" +checksum = "4607d6879cae3bae4d0369ca4b3a7510fd6295ac32eec088ac975208ba96ca45" dependencies = [ "proc-macro2", "quote", @@ -970,9 +970,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_parse" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533043a957c22f57ac6b707faa3514db143cfa459e00ad41139a1b9c099ed2fd" +checksum = "78d22889bff7ca2346037c9df7ea55c66ffb714f5b50fb62b41975f8ac7a2d70" dependencies = [ "bitflags", "rustc-ap-rustc_ast", @@ -990,9 +990,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_serialize" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c2e430449dbed703192cff1ec44ec731c1be53c8fbaae335a01f7dbb630dc2" +checksum = "d33c710120953c0214f47a6caf42064d7e241003b4af36c98a6d6156e70335f1" dependencies = [ "indexmap", "smallvec", @@ -1000,9 +1000,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_session" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e22ecc4aee1c5afcf0733f90965dd0af873e9fa4a09106e623565bb0e8803a1" +checksum = "6d35919041429a90713c8f704fa5209ba159cb554ce74d95722cbc18ac4b4c6f" dependencies = [ "bitflags", "getopts", @@ -1022,9 +1022,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_span" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1540067b114af3697b316dd83942e19d6e1295df35abde6ab569c60ec95d55a9" +checksum = "73b12170c69603c0bf4b50e5c25fd348aae13b8c6465aa0ef4389c9eaa568e51" dependencies = [ "cfg-if 0.1.10", "md-5", @@ -1042,9 +1042,9 @@ dependencies = [ [[package]] name = "rustc-ap-rustc_target" -version = "711.0.0" +version = "712.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a58b6d668ea0da42dc5f93a2b38ccfd884fcb278ed880e3523b7077c5dadf7c" +checksum = "0a8329d92e7dc24b974f759e6c6e97e2bbc47b18d0573343028f8135ca367200" dependencies = [ "bitflags", "rustc-ap-rustc_data_structures", diff --git a/Cargo.toml b/Cargo.toml index b21b22f3c9f..047803994ff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -107,32 +107,32 @@ lazy_static = "1.0.0" [dependencies.rustc_ast] package = "rustc-ap-rustc_ast" -version = "711.0.0" +version = "712.0.0" [dependencies.rustc_ast_pretty] package = "rustc-ap-rustc_ast_pretty" -version = "711.0.0" +version = "712.0.0" [dependencies.rustc_data_structures] package = "rustc-ap-rustc_data_structures" -version = "711.0.0" +version = "712.0.0" [dependencies.rustc_errors] package = "rustc-ap-rustc_errors" -version = "711.0.0" +version = "712.0.0" [dependencies.rustc_expand] package = "rustc-ap-rustc_expand" -version = "711.0.0" +version = "712.0.0" [dependencies.rustc_parse] package = "rustc-ap-rustc_parse" -version = "711.0.0" +version = "712.0.0" [dependencies.rustc_session] package = "rustc-ap-rustc_session" -version = "711.0.0" +version = "712.0.0" [dependencies.rustc_span] package = "rustc-ap-rustc_span" -version = "711.0.0" +version = "712.0.0" diff --git a/rust-toolchain b/rust-toolchain index 30b68df597c..0cb2de6a3fb 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2021-03-16 +nightly-2021-03-26 diff --git a/src/formatting/expr.rs b/src/formatting/expr.rs index 0cbd9ac3587..b1cff4de39f 100644 --- a/src/formatting/expr.rs +++ b/src/formatting/expr.rs @@ -105,15 +105,10 @@ pub(crate) fn format_expr( }) } ast::ExprKind::Unary(op, ref subexpr) => rewrite_unary_op(context, op, subexpr, shape), - ast::ExprKind::Struct(ref path, ref fields, ref struct_rest) => rewrite_struct_lit( - context, - path, - fields, - struct_rest, - &expr.attrs, - expr.span, - shape, - ), + ast::ExprKind::Struct(ref struct_expr) => { + let ast::StructExpr { fields, path, rest } = &**struct_expr; + rewrite_struct_lit(context, path, fields, rest, &expr.attrs, expr.span, shape) + } ast::ExprKind::Tup(ref items) => { rewrite_tuple(context, items.iter(), expr.span, shape, items.len() == 1) } @@ -1542,14 +1537,14 @@ fn rewrite_index( } } -fn struct_lit_can_be_aligned(fields: &[ast::Field], has_base: bool) -> bool { +fn struct_lit_can_be_aligned(fields: &[ast::ExprField], has_base: bool) -> bool { !has_base && fields.iter().all(|field| !field.is_shorthand) } fn rewrite_struct_lit<'a>( context: &RewriteContext<'_>, path: &ast::Path, - fields: &'a [ast::Field], + fields: &'a [ast::ExprField], struct_rest: &ast::StructRest, attrs: &[ast::Attribute], span: Span, @@ -1558,7 +1553,7 @@ fn rewrite_struct_lit<'a>( debug!("rewrite_struct_lit: shape {:?}", shape); enum StructLitField<'a> { - Regular(&'a ast::Field), + Regular(&'a ast::ExprField), Base(&'a ast::Expr), Rest(&'a Span), } @@ -1715,7 +1710,7 @@ pub(crate) fn struct_lit_field_separator(config: &Config) -> &str { pub(crate) fn rewrite_field( context: &RewriteContext<'_>, - field: &ast::Field, + field: &ast::ExprField, shape: Shape, prefix_max_width: usize, ) -> Option { diff --git a/src/formatting/items.rs b/src/formatting/items.rs index 854660c636c..d2e5e70fce7 100644 --- a/src/formatting/items.rs +++ b/src/formatting/items.rs @@ -213,7 +213,7 @@ impl<'a> Item<'a> { #[derive(Debug)] enum BodyElement<'a> { // Stmt(&'a ast::Stmt), - // Field(&'a ast::Field), + // Field(&'a ast::ExprField), // Variant(&'a ast::Variant), // Item(&'a ast::Item), ForeignItem(&'a ast::ForeignItem), @@ -1377,7 +1377,7 @@ fn format_unit_struct( pub(crate) fn format_struct_struct( context: &RewriteContext<'_>, struct_parts: &StructParts<'_>, - fields: &[ast::StructField], + fields: &[ast::FieldDef], offset: Indent, one_line_width: Option, ) -> Option { @@ -1521,7 +1521,7 @@ fn format_empty_struct_or_tuple( fn format_tuple_struct( context: &RewriteContext<'_>, struct_parts: &StructParts<'_>, - fields: &[ast::StructField], + fields: &[ast::FieldDef], offset: Indent, ) -> Option { let mut result = String::with_capacity(1024); @@ -1741,7 +1741,7 @@ fn type_annotation_spacing(config: &Config) -> (&str, &str) { pub(crate) fn rewrite_struct_field_prefix( context: &RewriteContext<'_>, - field: &ast::StructField, + field: &ast::FieldDef, ) -> String { let vis = format_visibility(context, &field.vis); let type_annotation_spacing = type_annotation_spacing(context.config); @@ -1756,7 +1756,7 @@ pub(crate) fn rewrite_struct_field_prefix( } } -impl Rewrite for ast::StructField { +impl Rewrite for ast::FieldDef { fn rewrite(&self, context: &RewriteContext<'_>, shape: Shape) -> Option { rewrite_struct_field(context, self, shape, 0) } @@ -1764,7 +1764,7 @@ impl Rewrite for ast::StructField { pub(crate) fn rewrite_struct_field( context: &RewriteContext<'_>, - field: &ast::StructField, + field: &ast::FieldDef, shape: Shape, lhs_max_width: usize, ) -> Option { diff --git a/src/formatting/overflow.rs b/src/formatting/overflow.rs index 60f6d624ea2..f6bbd189d5b 100644 --- a/src/formatting/overflow.rs +++ b/src/formatting/overflow.rs @@ -76,7 +76,7 @@ pub(crate) enum OverflowableItem<'a> { MacroArg(&'a MacroArg), NestedMetaItem(&'a ast::NestedMetaItem), SegmentParam(&'a SegmentParam<'a>), - StructField(&'a ast::StructField), + FieldDef(&'a ast::FieldDef), TuplePatField(&'a TuplePatField<'a>), Ty(&'a ast::Ty), } @@ -98,7 +98,7 @@ impl<'a> OverflowableItem<'a> { match self { OverflowableItem::Expr(ast::Expr { attrs, .. }) | OverflowableItem::GenericParam(ast::GenericParam { attrs, .. }) => !attrs.is_empty(), - OverflowableItem::StructField(ast::StructField { attrs, .. }) => !attrs.is_empty(), + OverflowableItem::FieldDef(ast::FieldDef { attrs, .. }) => !attrs.is_empty(), OverflowableItem::MacroArg(MacroArg::Expr(expr)) => !expr.attrs.is_empty(), OverflowableItem::MacroArg(MacroArg::Item(item)) => !item.attrs.is_empty(), _ => false, @@ -115,7 +115,7 @@ impl<'a> OverflowableItem<'a> { OverflowableItem::MacroArg(macro_arg) => f(*macro_arg), OverflowableItem::NestedMetaItem(nmi) => f(*nmi), OverflowableItem::SegmentParam(sp) => f(*sp), - OverflowableItem::StructField(sf) => f(*sf), + OverflowableItem::FieldDef(sf) => f(*sf), OverflowableItem::TuplePatField(pat) => f(*pat), OverflowableItem::Ty(ty) => f(*ty), } @@ -238,7 +238,7 @@ macro_rules! impl_into_overflowable_item_for_rustfmt_types { } } -impl_into_overflowable_item_for_ast_node!(Expr, GenericParam, NestedMetaItem, StructField, Ty); +impl_into_overflowable_item_for_ast_node!(Expr, GenericParam, NestedMetaItem, FieldDef, Ty); impl_into_overflowable_item_for_rustfmt_types!([MacroArg], [SegmentParam, TuplePatField]); pub(crate) fn into_overflowable_list<'a, T>( diff --git a/src/formatting/patterns.rs b/src/formatting/patterns.rs index 13bb17f7e56..0064469bd0b 100644 --- a/src/formatting/patterns.rs +++ b/src/formatting/patterns.rs @@ -1,4 +1,4 @@ -use rustc_ast::ast::{self, BindingMode, FieldPat, Pat, PatKind, RangeEnd, RangeSyntax}; +use rustc_ast::ast::{self, BindingMode, Pat, PatField, PatKind, RangeEnd, RangeSyntax}; use rustc_ast::ptr; use rustc_span::{BytePos, Span}; @@ -261,7 +261,7 @@ impl Rewrite for Pat { fn rewrite_struct_pat( path: &ast::Path, - fields: &[ast::FieldPat], + fields: &[ast::PatField], ellipsis: bool, span: Span, context: &RewriteContext<'_>, @@ -336,7 +336,7 @@ fn rewrite_struct_pat( Some(format!("{} {{{}}}", path_str, fields_str)) } -impl Rewrite for FieldPat { +impl Rewrite for PatField { fn rewrite(&self, context: &RewriteContext<'_>, shape: Shape) -> Option { let hi_pos = if let Some(last) = self.attrs.last() { last.span.hi() diff --git a/src/formatting/spanned.rs b/src/formatting/spanned.rs index 9911fb887da..b3cdb27a51e 100644 --- a/src/formatting/spanned.rs +++ b/src/formatting/spanned.rs @@ -56,7 +56,7 @@ macro_rules! implement_spanned { // Implement `Spanned` for structs with `attrs` field. implement_spanned!(ast::AssocItem); implement_spanned!(ast::Expr); -implement_spanned!(ast::Field); +implement_spanned!(ast::ExprField); implement_spanned!(ast::ForeignItem); implement_spanned!(ast::Item); implement_spanned!(ast::Local); @@ -146,7 +146,7 @@ impl Spanned for ast::GenericParam { } } -impl Spanned for ast::StructField { +impl Spanned for ast::FieldDef { fn span(&self) -> Span { span_with_attrs_lo_hi!(self, self.span.lo(), self.ty.span.hi()) } diff --git a/src/formatting/vertical.rs b/src/formatting/vertical.rs index 540e5858fa3..e606b9ba089 100644 --- a/src/formatting/vertical.rs +++ b/src/formatting/vertical.rs @@ -33,7 +33,7 @@ pub(crate) trait AlignedItem { ) -> Option; } -impl AlignedItem for ast::StructField { +impl AlignedItem for ast::FieldDef { fn skip(&self) -> bool { contains_skip(&self.attrs) } @@ -71,7 +71,7 @@ impl AlignedItem for ast::StructField { } } -impl AlignedItem for ast::Field { +impl AlignedItem for ast::ExprField { fn skip(&self) -> bool { contains_skip(&self.attrs) }