Skip to content

Commit a36dc36

Browse files
Merge pull request #5268 from calebcartwright/subtree-sync-2022-03-16
subtree sync
2 parents 1bb85bd + 432b8de commit a36dc36

12 files changed

+100
-71
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ rustfmt-format-diff = []
3333
generic-simd = ["bytecount/generic-simd"]
3434

3535
[dependencies]
36-
itertools = "0.9"
36+
itertools = "0.10.1"
3737
toml = "0.5"
3838
serde = { version = "1.0", features = ["derive"] }
3939
serde_json = "1.0"

rust-toolchain

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[toolchain]
2-
channel = "nightly-2022-01-23"
2+
channel = "nightly-2022-03-17"
33
components = ["rustc-dev"]

src/expr.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,7 +1533,7 @@ fn rewrite_struct_lit<'a>(
15331533
enum StructLitField<'a> {
15341534
Regular(&'a ast::ExprField),
15351535
Base(&'a ast::Expr),
1536-
Rest(&'a Span),
1536+
Rest(Span),
15371537
}
15381538

15391539
// 2 = " {".len()
@@ -1568,7 +1568,7 @@ fn rewrite_struct_lit<'a>(
15681568
let field_iter = fields.iter().map(StructLitField::Regular).chain(
15691569
match struct_rest {
15701570
ast::StructRest::Base(expr) => Some(StructLitField::Base(&**expr)),
1571-
ast::StructRest::Rest(span) => Some(StructLitField::Rest(span)),
1571+
ast::StructRest::Rest(span) => Some(StructLitField::Rest(*span)),
15721572
ast::StructRest::None => None,
15731573
}
15741574
.into_iter(),

src/items.rs

Lines changed: 74 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,8 @@ pub(crate) fn format_impl(
694694
let where_span_end = context.snippet_provider.opt_span_before(missing_span, "{");
695695
let where_clause_str = rewrite_where_clause(
696696
context,
697-
&generics.where_clause,
697+
&generics.where_clause.predicates,
698+
generics.where_clause.span,
698699
context.config.brace_style(),
699700
Shape::legacy(where_budget, offset.block_only()),
700701
false,
@@ -1059,7 +1060,8 @@ pub(crate) fn format_trait(
10591060
let option = WhereClauseOption::snuggled(&generics_str);
10601061
let where_clause_str = rewrite_where_clause(
10611062
context,
1062-
&generics.where_clause,
1063+
&generics.where_clause.predicates,
1064+
generics.where_clause.span,
10631065
context.config.brace_style(),
10641066
Shape::legacy(where_budget, offset.block_only()),
10651067
where_on_new_line,
@@ -1178,7 +1180,8 @@ impl<'a> Rewrite for TraitAliasBounds<'a> {
11781180

11791181
let where_str = rewrite_where_clause(
11801182
context,
1181-
&self.generics.where_clause,
1183+
&self.generics.where_clause.predicates,
1184+
self.generics.where_clause.span,
11821185
context.config.brace_style(),
11831186
shape,
11841187
false,
@@ -1441,7 +1444,8 @@ fn format_tuple_struct(
14411444
let option = WhereClauseOption::new(true, WhereClauseSpace::Newline);
14421445
rewrite_where_clause(
14431446
context,
1444-
&generics.where_clause,
1447+
&generics.where_clause.predicates,
1448+
generics.where_clause.span,
14451449
context.config.brace_style(),
14461450
Shape::legacy(where_budget, offset.block_only()),
14471451
false,
@@ -1507,6 +1511,8 @@ struct TyAliasRewriteInfo<'c, 'g>(
15071511
&'c RewriteContext<'c>,
15081512
Indent,
15091513
&'g ast::Generics,
1514+
(ast::TyAliasWhereClause, ast::TyAliasWhereClause),
1515+
usize,
15101516
symbol::Ident,
15111517
Span,
15121518
);
@@ -1525,14 +1531,24 @@ pub(crate) fn rewrite_type_alias<'a, 'b>(
15251531
ref generics,
15261532
ref bounds,
15271533
ref ty,
1534+
where_clauses,
1535+
where_predicates_split,
15281536
} = *ty_alias_kind;
15291537
let ty_opt = ty.as_ref();
15301538
let (ident, vis) = match visitor_kind {
15311539
Item(i) => (i.ident, &i.vis),
15321540
AssocTraitItem(i) | AssocImplItem(i) => (i.ident, &i.vis),
15331541
ForeignItem(i) => (i.ident, &i.vis),
15341542
};
1535-
let rw_info = &TyAliasRewriteInfo(context, indent, generics, ident, span);
1543+
let rw_info = &TyAliasRewriteInfo(
1544+
context,
1545+
indent,
1546+
generics,
1547+
where_clauses,
1548+
where_predicates_split,
1549+
ident,
1550+
span,
1551+
);
15361552
let op_ty = opaque_ty(ty);
15371553
// Type Aliases are formatted slightly differently depending on the context
15381554
// in which they appear, whether they are opaque, and whether they are associated.
@@ -1568,7 +1584,22 @@ fn rewrite_ty<R: Rewrite>(
15681584
vis: &ast::Visibility,
15691585
) -> Option<String> {
15701586
let mut result = String::with_capacity(128);
1571-
let TyAliasRewriteInfo(context, indent, generics, ident, span) = *rw_info;
1587+
let TyAliasRewriteInfo(
1588+
context,
1589+
indent,
1590+
generics,
1591+
where_clauses,
1592+
where_predicates_split,
1593+
ident,
1594+
span,
1595+
) = *rw_info;
1596+
let (before_where_predicates, after_where_predicates) = generics
1597+
.where_clause
1598+
.predicates
1599+
.split_at(where_predicates_split);
1600+
if !after_where_predicates.is_empty() {
1601+
return None;
1602+
}
15721603
result.push_str(&format!("{}type ", format_visibility(context, vis)));
15731604
let ident_str = rewrite_ident(context, ident);
15741605

@@ -1599,7 +1630,8 @@ fn rewrite_ty<R: Rewrite>(
15991630
}
16001631
let where_clause_str = rewrite_where_clause(
16011632
context,
1602-
&generics.where_clause,
1633+
before_where_predicates,
1634+
where_clauses.0.1,
16031635
context.config.brace_style(),
16041636
Shape::legacy(where_budget, indent),
16051637
false,
@@ -1613,7 +1645,7 @@ fn rewrite_ty<R: Rewrite>(
16131645
if let Some(ty) = rhs {
16141646
// If there's a where clause, add a newline before the assignment. Otherwise just add a
16151647
// space.
1616-
let has_where = !generics.where_clause.predicates.is_empty();
1648+
let has_where = !before_where_predicates.is_empty();
16171649
if has_where {
16181650
result.push_str(&indent.to_string_with_newline(context.config));
16191651
} else {
@@ -1623,7 +1655,7 @@ fn rewrite_ty<R: Rewrite>(
16231655
let comment_span = context
16241656
.snippet_provider
16251657
.opt_span_before(span, "=")
1626-
.map(|op_lo| mk_sp(generics.where_clause.span.hi(), op_lo));
1658+
.map(|op_lo| mk_sp(where_clauses.0.1.hi(), op_lo));
16271659

16281660
let lhs = match comment_span {
16291661
Some(comment_span)
@@ -2186,7 +2218,7 @@ fn rewrite_fn_base(
21862218
let generics_str = rewrite_generics(
21872219
context,
21882220
rewrite_ident(context, ident),
2189-
fn_sig.generics,
2221+
&fn_sig.generics,
21902222
shape,
21912223
)?;
21922224
result.push_str(&generics_str);
@@ -2426,7 +2458,8 @@ fn rewrite_fn_base(
24262458
}
24272459
let where_clause_str = rewrite_where_clause(
24282460
context,
2429-
where_clause,
2461+
&where_clause.predicates,
2462+
where_clause.span,
24302463
context.config.brace_style(),
24312464
Shape::indented(indent, context.config),
24322465
true,
@@ -2702,7 +2735,8 @@ fn generics_shape_from_config(config: &Config, shape: Shape, offset: usize) -> O
27022735

27032736
fn rewrite_where_clause_rfc_style(
27042737
context: &RewriteContext<'_>,
2705-
where_clause: &ast::WhereClause,
2738+
predicates: &[ast::WherePredicate],
2739+
where_span: Span,
27062740
shape: Shape,
27072741
terminator: &str,
27082742
span_end: Option<BytePos>,
@@ -2711,7 +2745,8 @@ fn rewrite_where_clause_rfc_style(
27112745
) -> Option<String> {
27122746
let (where_keyword, allow_single_line) = rewrite_where_keyword(
27132747
context,
2714-
where_clause,
2748+
predicates,
2749+
where_span,
27152750
shape,
27162751
span_end_before_where,
27172752
where_clause_option,
@@ -2724,12 +2759,12 @@ fn rewrite_where_clause_rfc_style(
27242759
.block_left(context.config.tab_spaces())?
27252760
.sub_width(1)?;
27262761
let force_single_line = context.config.where_single_line()
2727-
&& where_clause.predicates.len() == 1
2762+
&& predicates.len() == 1
27282763
&& !where_clause_option.veto_single_line;
27292764

27302765
let preds_str = rewrite_bounds_on_where_clause(
27312766
context,
2732-
where_clause,
2767+
predicates,
27332768
clause_shape,
27342769
terminator,
27352770
span_end,
@@ -2753,7 +2788,8 @@ fn rewrite_where_clause_rfc_style(
27532788
/// Rewrite `where` and comment around it.
27542789
fn rewrite_where_keyword(
27552790
context: &RewriteContext<'_>,
2756-
where_clause: &ast::WhereClause,
2791+
predicates: &[ast::WherePredicate],
2792+
where_span: Span,
27572793
shape: Shape,
27582794
span_end_before_where: BytePos,
27592795
where_clause_option: WhereClauseOption,
@@ -2773,7 +2809,7 @@ fn rewrite_where_keyword(
27732809
};
27742810

27752811
let (span_before, span_after) =
2776-
missing_span_before_after_where(span_end_before_where, where_clause);
2812+
missing_span_before_after_where(span_end_before_where, predicates, where_span);
27772813
let (comment_before, comment_after) =
27782814
rewrite_comments_before_after_where(context, span_before, span_after, shape)?;
27792815

@@ -2799,22 +2835,22 @@ fn rewrite_where_keyword(
27992835
/// Rewrite bounds on a where clause.
28002836
fn rewrite_bounds_on_where_clause(
28012837
context: &RewriteContext<'_>,
2802-
where_clause: &ast::WhereClause,
2838+
predicates: &[ast::WherePredicate],
28032839
shape: Shape,
28042840
terminator: &str,
28052841
span_end: Option<BytePos>,
28062842
where_clause_option: WhereClauseOption,
28072843
force_single_line: bool,
28082844
) -> Option<String> {
2809-
let span_start = where_clause.predicates[0].span().lo();
2845+
let span_start = predicates[0].span().lo();
28102846
// If we don't have the start of the next span, then use the end of the
28112847
// predicates, but that means we miss comments.
2812-
let len = where_clause.predicates.len();
2813-
let end_of_preds = where_clause.predicates[len - 1].span().hi();
2848+
let len = predicates.len();
2849+
let end_of_preds = predicates[len - 1].span().hi();
28142850
let span_end = span_end.unwrap_or(end_of_preds);
28152851
let items = itemize_list(
28162852
context.snippet_provider,
2817-
where_clause.predicates.iter(),
2853+
predicates.iter(),
28182854
terminator,
28192855
",",
28202856
|pred| pred.span().lo(),
@@ -2847,7 +2883,8 @@ fn rewrite_bounds_on_where_clause(
28472883

28482884
fn rewrite_where_clause(
28492885
context: &RewriteContext<'_>,
2850-
where_clause: &ast::WhereClause,
2886+
predicates: &[ast::WherePredicate],
2887+
where_span: Span,
28512888
brace_style: BraceStyle,
28522889
shape: Shape,
28532890
on_new_line: bool,
@@ -2856,14 +2893,15 @@ fn rewrite_where_clause(
28562893
span_end_before_where: BytePos,
28572894
where_clause_option: WhereClauseOption,
28582895
) -> Option<String> {
2859-
if where_clause.predicates.is_empty() {
2896+
if predicates.is_empty() {
28602897
return Some(String::new());
28612898
}
28622899

28632900
if context.config.indent_style() == IndentStyle::Block {
28642901
return rewrite_where_clause_rfc_style(
28652902
context,
2866-
where_clause,
2903+
predicates,
2904+
where_span,
28672905
shape,
28682906
terminator,
28692907
span_end,
@@ -2883,15 +2921,15 @@ fn rewrite_where_clause(
28832921
// be out by a char or two.
28842922

28852923
let budget = context.config.max_width() - offset.width();
2886-
let span_start = where_clause.predicates[0].span().lo();
2924+
let span_start = predicates[0].span().lo();
28872925
// If we don't have the start of the next span, then use the end of the
28882926
// predicates, but that means we miss comments.
2889-
let len = where_clause.predicates.len();
2890-
let end_of_preds = where_clause.predicates[len - 1].span().hi();
2927+
let len = predicates.len();
2928+
let end_of_preds = predicates[len - 1].span().hi();
28912929
let span_end = span_end.unwrap_or(end_of_preds);
28922930
let items = itemize_list(
28932931
context.snippet_provider,
2894-
where_clause.predicates.iter(),
2932+
predicates.iter(),
28952933
terminator,
28962934
",",
28972935
|pred| pred.span().lo(),
@@ -2946,12 +2984,13 @@ fn rewrite_where_clause(
29462984

29472985
fn missing_span_before_after_where(
29482986
before_item_span_end: BytePos,
2949-
where_clause: &ast::WhereClause,
2987+
predicates: &[ast::WherePredicate],
2988+
where_span: Span,
29502989
) -> (Span, Span) {
2951-
let missing_span_before = mk_sp(before_item_span_end, where_clause.span.lo());
2990+
let missing_span_before = mk_sp(before_item_span_end, where_span.lo());
29522991
// 5 = `where`
2953-
let pos_after_where = where_clause.span.lo() + BytePos(5);
2954-
let missing_span_after = mk_sp(pos_after_where, where_clause.predicates[0].span().lo());
2992+
let pos_after_where = where_span.lo() + BytePos(5);
2993+
let missing_span_after = mk_sp(pos_after_where, predicates[0].span().lo());
29552994
(missing_span_before, missing_span_after)
29562995
}
29572996

@@ -3040,7 +3079,8 @@ fn format_generics(
30403079
}
30413080
let where_clause_str = rewrite_where_clause(
30423081
context,
3043-
&generics.where_clause,
3082+
&generics.where_clause.predicates,
3083+
generics.where_clause.span,
30443084
brace_style,
30453085
Shape::legacy(budget, offset.block_only()),
30463086
true,

src/modules.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
131131
mut self,
132132
krate: &'ast ast::Crate,
133133
) -> Result<FileModMap<'ast>, ModuleResolutionError> {
134-
let root_filename = self.parse_sess.span_to_filename(krate.span);
134+
let root_filename = self.parse_sess.span_to_filename(krate.spans.inner_span);
135135
self.directory.path = match root_filename {
136136
FileName::Real(ref p) => p.parent().unwrap_or(Path::new("")).to_path_buf(),
137137
_ => PathBuf::new(),
@@ -142,7 +142,7 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
142142
self.visit_mod_from_ast(&krate.items)?;
143143
}
144144

145-
let snippet_provider = self.parse_sess.snippet_provider(krate.span);
145+
let snippet_provider = self.parse_sess.snippet_provider(krate.spans.inner_span);
146146

147147
self.file_map.insert(
148148
root_filename,
@@ -446,7 +446,7 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
446446
}
447447
}
448448
Err(mod_err) if !mods_outside_ast.is_empty() => {
449-
if let ModError::ParserError(mut e) = mod_err {
449+
if let ModError::ParserError(e) = mod_err {
450450
e.cancel();
451451
}
452452
Ok(Some(SubModKind::MultiExternal(mods_outside_ast)))

src/parse/macros/cfg_if.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ fn parse_cfg_if_inner<'a>(
5757
let item = match parser.parse_item(ForceCollect::No) {
5858
Ok(Some(item_ptr)) => item_ptr.into_inner(),
5959
Ok(None) => continue,
60-
Err(mut err) => {
60+
Err(err) => {
6161
err.cancel();
6262
parser.sess.span_diagnostic.reset_err_count();
6363
return Err(

src/parse/macros/lazy_static.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub(crate) fn parse_lazy_static(
2323
val
2424
}
2525
}
26-
Err(mut err) => {
26+
Err(err) => {
2727
err.cancel();
2828
parser.sess.span_diagnostic.reset_err_count();
2929
return None;

0 commit comments

Comments
 (0)