@@ -16,7 +16,7 @@ use crate::ty::{self, AdtKind, Ty, TyCtxt};
16
16
use rustc_hir as hir;
17
17
use rustc_hir:: def_id:: DefId ;
18
18
use rustc_span:: symbol:: Symbol ;
19
- use rustc_span:: { Span , DUMMY_SP } ;
19
+ use rustc_span:: { Span , SpanId , DUMMY_SP , DUMMY_SPID } ;
20
20
use smallvec:: SmallVec ;
21
21
22
22
use std:: borrow:: Cow ;
@@ -568,25 +568,25 @@ pub struct VtableTraitAliasData<'tcx, N> {
568
568
#[ derive( Clone , Debug , PartialEq , Eq , Hash , HashStable ) ]
569
569
pub enum ObjectSafetyViolation {
570
570
/// `Self: Sized` declared on the trait.
571
- SizedSelf ( SmallVec < [ Span ; 1 ] > ) ,
571
+ SizedSelf ( SmallVec < [ SpanId ; 1 ] > ) ,
572
572
573
573
/// Supertrait reference references `Self` an in illegal location
574
574
/// (e.g., `trait Foo : Bar<Self>`).
575
- SupertraitSelf ( SmallVec < [ Span ; 1 ] > ) ,
575
+ SupertraitSelf ( SmallVec < [ SpanId ; 1 ] > ) ,
576
576
577
577
/// Method has something illegal.
578
- Method ( Symbol , MethodViolationCode , Span ) ,
578
+ Method ( Symbol , MethodViolationCode , SpanId ) ,
579
579
580
580
/// Associated const.
581
- AssocConst ( Symbol , Span ) ,
581
+ AssocConst ( Symbol , SpanId ) ,
582
582
}
583
583
584
584
impl ObjectSafetyViolation {
585
585
pub fn error_msg ( & self ) -> Cow < ' static , str > {
586
586
match * self {
587
587
ObjectSafetyViolation :: SizedSelf ( _) => "it requires `Self: Sized`" . into ( ) ,
588
588
ObjectSafetyViolation :: SupertraitSelf ( ref spans) => {
589
- if spans. iter ( ) . any ( |sp| * sp != DUMMY_SP ) {
589
+ if spans. iter ( ) . any ( |sp| * sp != DUMMY_SPID ) {
590
590
"it uses `Self` as a type parameter in this" . into ( )
591
591
} else {
592
592
"it cannot use `Self` as a type parameter in a supertrait or `where`-clause"
@@ -599,7 +599,7 @@ impl ObjectSafetyViolation {
599
599
ObjectSafetyViolation :: Method (
600
600
name,
601
601
MethodViolationCode :: ReferencesSelfInput ( _) ,
602
- DUMMY_SP ,
602
+ DUMMY_SPID ,
603
603
) => format ! ( "method `{}` references the `Self` type in its parameters" , name) . into ( ) ,
604
604
ObjectSafetyViolation :: Method ( name, MethodViolationCode :: ReferencesSelfInput ( _) , _) => {
605
605
format ! ( "method `{}` references the `Self` type in this parameter" , name) . into ( )
@@ -620,14 +620,14 @@ impl ObjectSafetyViolation {
620
620
ObjectSafetyViolation :: Method ( name, MethodViolationCode :: UndispatchableReceiver , _) => {
621
621
format ! ( "method `{}`'s `self` parameter cannot be dispatched on" , name) . into ( )
622
622
}
623
- ObjectSafetyViolation :: AssocConst ( name, DUMMY_SP ) => {
623
+ ObjectSafetyViolation :: AssocConst ( name, DUMMY_SPID ) => {
624
624
format ! ( "it contains associated `const` `{}`" , name) . into ( )
625
625
}
626
626
ObjectSafetyViolation :: AssocConst ( ..) => "it contains this associated `const`" . into ( ) ,
627
627
}
628
628
}
629
629
630
- pub fn solution ( & self ) -> Option < ( String , Option < ( String , Span ) > ) > {
630
+ pub fn solution ( & self ) -> Option < ( String , Option < ( String , SpanId ) > ) > {
631
631
Some ( match * self {
632
632
ObjectSafetyViolation :: SizedSelf ( _) | ObjectSafetyViolation :: SupertraitSelf ( _) => {
633
633
return None ;
@@ -655,15 +655,15 @@ impl ObjectSafetyViolation {
655
655
} )
656
656
}
657
657
658
- pub fn spans ( & self ) -> SmallVec < [ Span ; 1 ] > {
659
- // When `span` comes from a separate crate, it'll be `DUMMY_SP `. Treat it as `None` so
658
+ pub fn spans ( & self ) -> SmallVec < [ SpanId ; 1 ] > {
659
+ // When `span` comes from a separate crate, it'll be `DUMMY_SPID `. Treat it as `None` so
660
660
// diagnostics use a `note` instead of a `span_label`.
661
661
match self {
662
662
ObjectSafetyViolation :: SupertraitSelf ( spans)
663
663
| ObjectSafetyViolation :: SizedSelf ( spans) => spans. clone ( ) ,
664
664
ObjectSafetyViolation :: AssocConst ( _, span)
665
665
| ObjectSafetyViolation :: Method ( _, _, span)
666
- if * span != DUMMY_SP =>
666
+ if * span != DUMMY_SPID =>
667
667
{
668
668
smallvec ! [ * span]
669
669
}
@@ -676,7 +676,7 @@ impl ObjectSafetyViolation {
676
676
#[ derive( Copy , Clone , Debug , PartialEq , Eq , Hash , HashStable ) ]
677
677
pub enum MethodViolationCode {
678
678
/// e.g., `fn foo()`
679
- StaticMethod ( Option < ( & ' static str , Span ) > ) ,
679
+ StaticMethod ( Option < ( & ' static str , SpanId ) > ) ,
680
680
681
681
/// e.g., `fn foo(&self, x: Self)`
682
682
ReferencesSelfInput ( usize ) ,
0 commit comments