diff options
author | Martin Fischer <martin@push-f.com> | 2021-11-25 13:44:20 +0100 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2021-11-25 13:44:20 +0100 |
commit | 74a29b912aaa14dbeb7e5c51ae11c61e733ef645 (patch) | |
tree | ccc34ea43f810abf0e8bb2c0ea05b3e9dc7ab8a1 /src | |
parent | ccb8e0cd6a94f71262e85e99fcd421578d2fb393 (diff) |
better error for qualified associated types
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 3 | ||||
-rw-r--r-- | src/transform.rs | 4 |
2 files changed, 7 insertions, 0 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, |