Skip to content

Commit f02fd50

Browse files
committed
extract error_negative_bounds
1 parent 51bbdeb commit f02fd50

File tree

1 file changed

+35
-27
lines changed
  • src/librustc_parse/parser

1 file changed

+35
-27
lines changed

src/librustc_parse/parser/ty.rs

+35-27
Original file line numberDiff line numberDiff line change
@@ -371,33 +371,7 @@ impl<'a> Parser<'a> {
371371
}
372372

373373
if !negative_bounds.is_empty() {
374-
let negative_bounds_len = negative_bounds.len();
375-
let last_span = *negative_bounds.last().unwrap();
376-
let mut err = self.struct_span_err(
377-
negative_bounds,
378-
"negative bounds are not supported",
379-
);
380-
err.span_label(last_span, "negative bounds are not supported");
381-
if let Some(bound_list) = colon_span {
382-
let bound_list = bound_list.to(self.prev_span);
383-
let mut new_bound_list = String::new();
384-
if !bounds.is_empty() {
385-
let mut snippets = bounds.iter().map(|bound| bound.span())
386-
.map(|span| self.span_to_snippet(span));
387-
while let Some(Ok(snippet)) = snippets.next() {
388-
new_bound_list.push_str(" + ");
389-
new_bound_list.push_str(&snippet);
390-
}
391-
new_bound_list = new_bound_list.replacen(" +", ":", 1);
392-
}
393-
err.span_suggestion_hidden(
394-
bound_list,
395-
&format!("remove the bound{}", pluralize!(negative_bounds_len)),
396-
new_bound_list,
397-
Applicability::MachineApplicable,
398-
);
399-
}
400-
err.emit();
374+
self.error_negative_bounds(colon_span, &bounds, negative_bounds);
401375
}
402376

403377
Ok(bounds)
@@ -414,6 +388,40 @@ impl<'a> Parser<'a> {
414388
|| self.check(&token::OpenDelim(token::Paren))
415389
}
416390

391+
fn error_negative_bounds(
392+
&self,
393+
colon_span: Option<Span>,
394+
bounds: &[GenericBound],
395+
negative_bounds: Vec<Span>,
396+
) {
397+
let negative_bounds_len = negative_bounds.len();
398+
let last_span = *negative_bounds.last().unwrap();
399+
let mut err = self.struct_span_err(
400+
negative_bounds,
401+
"negative bounds are not supported",
402+
);
403+
err.span_label(last_span, "negative bounds are not supported");
404+
if let Some(bound_list) = colon_span {
405+
let bound_list = bound_list.to(self.prev_span);
406+
let mut new_bound_list = String::new();
407+
if !bounds.is_empty() {
408+
let mut snippets = bounds.iter().map(|bound| self.span_to_snippet(bound.span()));
409+
while let Some(Ok(snippet)) = snippets.next() {
410+
new_bound_list.push_str(" + ");
411+
new_bound_list.push_str(&snippet);
412+
}
413+
new_bound_list = new_bound_list.replacen(" +", ":", 1);
414+
}
415+
err.span_suggestion_hidden(
416+
bound_list,
417+
&format!("remove the bound{}", pluralize!(negative_bounds_len)),
418+
new_bound_list,
419+
Applicability::MachineApplicable,
420+
);
421+
}
422+
err.emit();
423+
}
424+
417425
/// Parses a bound according to the grammar:
418426
/// ```
419427
/// BOUND = TY_BOUND | LT_BOUND

0 commit comments

Comments
 (0)