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; |