@@ -861,54 +861,58 @@ impl<'a> Summary<'a> {
861861 | Type :: Float64
862862 | Type :: String => ( ) ,
863863 Type :: Id ( id) => {
864- if !visited. contains ( & id) {
865- visited. insert ( id) ;
866-
867- let ty = & self . resolve . types [ id] ;
868- match & ty. kind {
869- TypeDefKind :: Record ( record) => {
870- for field in & record. fields {
871- self . sort ( field. ty , sorted, visited) ;
872- }
873- sorted. insert ( id) ;
874- }
875- TypeDefKind :: Variant ( variant) => {
876- for case in & variant. cases {
877- if let Some ( ty) = case. ty {
878- self . sort ( ty, sorted, visited) ;
879- }
880- }
881- sorted. insert ( id) ;
882- }
883- TypeDefKind :: Enum ( _) | TypeDefKind :: Flags ( _) | TypeDefKind :: Handle ( _) => {
884- sorted. insert ( id) ;
885- }
886- TypeDefKind :: Option ( some) => {
887- self . sort ( * some, sorted, visited) ;
888- sorted. insert ( id) ;
864+ let ty = & self . resolve . types [ id] ;
865+ match & ty. kind {
866+ TypeDefKind :: Record ( record) => {
867+ for field in & record. fields {
868+ self . sort ( field. ty , sorted, visited) ;
889869 }
890- TypeDefKind :: Result ( result ) => {
891- if let Some ( ty ) = result . ok {
892- self . sort ( ty , sorted , visited ) ;
893- }
894- if let Some ( ty) = result . err {
870+ sorted . insert ( id ) ;
871+ }
872+ TypeDefKind :: Variant ( variant ) => {
873+ for case in & variant . cases {
874+ if let Some ( ty) = case . ty {
895875 self . sort ( ty, sorted, visited) ;
896876 }
897- sorted. insert ( id) ;
898877 }
899- TypeDefKind :: Tuple ( tuple) => {
900- for ty in & tuple. types {
901- self . sort ( * ty, sorted, visited) ;
902- }
903- sorted. insert ( id) ;
878+ sorted. insert ( id) ;
879+ }
880+ TypeDefKind :: Enum ( _) | TypeDefKind :: Flags ( _) => {
881+ sorted. insert ( id) ;
882+ }
883+ TypeDefKind :: Handle ( Handle :: Borrow ( resource) | Handle :: Own ( resource) ) => {
884+ self . sort ( Type :: Id ( * resource) , sorted, visited) ;
885+ sorted. insert ( id) ;
886+ }
887+ TypeDefKind :: Option ( some) => {
888+ self . sort ( * some, sorted, visited) ;
889+ sorted. insert ( id) ;
890+ }
891+ TypeDefKind :: Result ( result) => {
892+ if let Some ( ty) = result. ok {
893+ self . sort ( ty, sorted, visited) ;
904894 }
905- TypeDefKind :: List ( ty) => {
906- self . sort ( * ty, sorted, visited) ;
895+ if let Some ( ty) = result . err {
896+ self . sort ( ty, sorted, visited) ;
907897 }
908- TypeDefKind :: Type ( ty) => {
898+ sorted. insert ( id) ;
899+ }
900+ TypeDefKind :: Tuple ( tuple) => {
901+ for ty in & tuple. types {
909902 self . sort ( * ty, sorted, visited) ;
910903 }
911- TypeDefKind :: Resource => {
904+ sorted. insert ( id) ;
905+ }
906+ TypeDefKind :: List ( ty) => {
907+ self . sort ( * ty, sorted, visited) ;
908+ }
909+ TypeDefKind :: Type ( ty) => {
910+ self . sort ( * ty, sorted, visited) ;
911+ }
912+ TypeDefKind :: Resource => {
913+ if !visited. contains ( & id) {
914+ visited. insert ( id) ;
915+
912916 let sort = |function : & MyFunction , sorted : & mut _ , visited : & mut _ | {
913917 for ( _, ty) in function. params {
914918 self . sort ( * ty, & mut * sorted, & mut * visited) ;
@@ -951,8 +955,8 @@ impl<'a> Summary<'a> {
951955
952956 sorted. insert ( id) ;
953957 }
954- kind => todo ! ( "{kind:?}" ) ,
955958 }
959+ kind => todo ! ( "{kind:?}" ) ,
956960 }
957961 }
958962 }
0 commit comments