diff --git a/types/src/lib.rs b/types/src/lib.rs index b8b6bc0b..5506979d 100644 --- a/types/src/lib.rs +++ b/types/src/lib.rs @@ -3724,11 +3724,7 @@ impl TypeRef { pub fn as_mut(self, db: &Database) -> Self { match self { - TypeRef::Owned( - id @ TypeId::RigidTypeParameter(pid) - | id @ TypeId::TypeParameter(pid), - ) - | TypeRef::Any( + TypeRef::Any( id @ TypeId::RigidTypeParameter(pid) | id @ TypeId::TypeParameter(pid), ) => { @@ -5258,7 +5254,14 @@ mod tests { uni(instance(int)).as_mut(&db), TypeRef::UniMut(instance(int)) ); - assert_eq!(owned(rigid(param1)).as_mut(&db), immutable(rigid(param1))); + + assert_eq!(any(rigid(param1)).as_mut(&db), immutable(rigid(param1))); + assert_eq!( + owned(parameter(param1)).as_mut(&db), + mutable(parameter(param1)) + ); + + assert_eq!(owned(rigid(param1)).as_mut(&db), mutable(rigid(param1))); assert_eq!(owned(rigid(param2)).as_mut(&db), mutable(rigid(param2))); assert_eq!( owned(parameter(param2)).as_mut(&db),