|
7 | 7 | // or type checking or some other kind of complex analysis.
|
8 | 8 |
|
9 | 9 | use std::mem;
|
| 10 | +use syntax::print::pprust; |
10 | 11 | use rustc::lint;
|
11 | 12 | use rustc::session::Session;
|
12 | 13 | use rustc_data_structures::fx::FxHashMap;
|
@@ -281,7 +282,7 @@ enum GenericPosition {
|
281 | 282 |
|
282 | 283 | fn validate_generics_order<'a>(
|
283 | 284 | handler: &errors::Handler,
|
284 |
| - generics: impl Iterator<Item = (ParamKindOrd, Span, Option<Ident>)>, |
| 285 | + generics: impl Iterator<Item = (ParamKindOrd, Span, Option<String>)>, |
285 | 286 | pos: GenericPosition,
|
286 | 287 | span: Span,
|
287 | 288 | ) {
|
@@ -311,7 +312,7 @@ fn validate_generics_order<'a>(
|
311 | 312 | if !first {
|
312 | 313 | ordered_params += ", ";
|
313 | 314 | }
|
314 |
| - ordered_params += &ident.as_str(); |
| 315 | + ordered_params += &ident; |
315 | 316 | first = false;
|
316 | 317 | }
|
317 | 318 | }
|
@@ -635,11 +636,16 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
|
635 | 636 | }
|
636 | 637 |
|
637 | 638 | validate_generics_order(self.err_handler(), generics.params.iter().map(|param| {
|
638 |
| - (match param.kind { |
639 |
| - GenericParamKind::Lifetime { .. } => ParamKindOrd::Lifetime, |
640 |
| - GenericParamKind::Type { .. } => ParamKindOrd::Type, |
641 |
| - GenericParamKind::Const { .. } => ParamKindOrd::Const, |
642 |
| - }, param.ident.span, Some(param.ident)) |
| 639 | + let span = param.ident.span; |
| 640 | + let ident = Some(param.ident.to_string()); |
| 641 | + match ¶m.kind { |
| 642 | + GenericParamKind::Lifetime { .. } => (ParamKindOrd::Lifetime, span, ident), |
| 643 | + GenericParamKind::Type { .. } => (ParamKindOrd::Type, span, ident), |
| 644 | + GenericParamKind::Const { ref ty } => { |
| 645 | + let ty = pprust::ty_to_string(ty); |
| 646 | + (ParamKindOrd::Const, span, Some(format!("const {}: {}", param.ident, ty))) |
| 647 | + } |
| 648 | + } |
643 | 649 | }), GenericPosition::Param, generics.span);
|
644 | 650 |
|
645 | 651 | for predicate in &generics.where_clause.predicates {
|
|
0 commit comments