diff options
Diffstat (limited to 'src/transform.rs')
-rw-r--r-- | src/transform.rs | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/transform.rs b/src/transform.rs index 676cfd8..b13b7cf 100644 --- a/src/transform.rs +++ b/src/transform.rs @@ -141,11 +141,27 @@ pub fn dynamize_function_bounds( } } - // TODO: return error if predicate_type.bounded_ty contains associated type + // just to provide better error messages + if let Some(assoc_type) = + iter_type(&predicate_type.bounded_ty).find_map(filter_map_assoc_paths) + { + return Err(( + assoc_type.span(), + MethodParseError::UnconvertibleAssocTypeInWhereClause, + )); + } + // just to provide better error messages for bound in &mut predicate_type.bounds { - if let TypeParamBound::Trait(_bound) = bound { - // TODO: return error if bound.path contains associated type + if let TypeParamBound::Trait(bound) = bound { + if let Some(assoc_type) = + iter_path(&bound.path).find_map(filter_map_assoc_paths) + { + return Err(( + assoc_type.span(), + MethodParseError::UnconvertibleAssocTypeInWhereClause, + )); + } } } } |