diff options
| -rw-r--r-- | src/lib.rs | 3 | ||||
| -rw-r--r-- | src/transform.rs | 4 | ||||
| -rw-r--r-- | ui-tests/src/bin/qualified_assoc_type.stderr | 2 | 
3 files changed, 8 insertions, 1 deletions
| @@ -155,6 +155,9 @@ pub fn dynamize(_attr: TokenStream, input: TokenStream) -> TokenStream {                              n                          )                      } +                    MethodError::Transform(TransformError::QualifiedAssociatedType) => { +                        return abort!(span, "dynamize does not support qualified associated types") +                    }                      MethodError::Transform(TransformError::QualifiedSelfAssociatedType) => {                          return abort!(span, "dynamize does not support associated types of a qualified Self")                      } diff --git a/src/transform.rs b/src/transform.rs index 74ab9e6..eed48c4 100644 --- a/src/transform.rs +++ b/src/transform.rs @@ -26,6 +26,7 @@ pub enum TransformError {      UnsupportedType,      ExpectedAtLeastNTypes(usize),      AssocTypeAfterFirstNTypes(usize, Ident), +    QualifiedAssociatedType,      QualifiedSelfAssociatedType,  } @@ -119,6 +120,9 @@ impl TypeConverter<'_> {          {              if let Type::Path(self_path) = qself.ty.as_ref() {                  if self_path.path.segments[0].ident == "Self" { +                    if !self_path.path.is_ident("Self") { +                        return Err((self_path.span(), TransformError::QualifiedAssociatedType)); +                    }                      return Err((                          self_path.span(),                          TransformError::QualifiedSelfAssociatedType, diff --git a/ui-tests/src/bin/qualified_assoc_type.stderr b/ui-tests/src/bin/qualified_assoc_type.stderr index 4f69ece..0401509 100644 --- a/ui-tests/src/bin/qualified_assoc_type.stderr +++ b/ui-tests/src/bin/qualified_assoc_type.stderr @@ -1,4 +1,4 @@ -error: dynamize does not support associated types of a qualified Self +error: dynamize does not support qualified associated types   --> src/bin/qualified_assoc_type.rs:9:24    |  9 |     fn test(&self) -> <Self::A as Foo>::B; | 
