@@ -787,7 +787,6 @@ public struct _ViewList_ID: Hashable {
787787 package let count : Int
788788
789789 package init ( _ views: [ Views ] , isDataDependent: Bool ) {
790- // FIXME
791790 var offset = 0
792791 var result : [ ( views: Views , endOffset: Int ) ] = [ ]
793792 for view in views {
@@ -802,11 +801,27 @@ public struct _ViewList_ID: Hashable {
802801 override package var endIndex : Int { count }
803802
804803 override package subscript( index: Int ) -> ViewList . ID {
805- preconditionFailure ( " TODO " )
804+ // FIXME: targetIndex
805+ let targetIndex = 0
806+
807+ return views [ targetIndex] . views [ index]
806808 }
807809
808- override package func isEqual( to other: _ViewList_ID . Views ) -> Bool {
809- preconditionFailure ( " TODO " )
810+ override package func isEqual( to other: ViewList . ID . Views ) -> Bool {
811+ guard let other = other as? JoinedViews ,
812+ count == other. count
813+ else {
814+ return false
815+ }
816+ guard !views. isEmpty else {
817+ return true
818+ }
819+ for index in views. indices {
820+ guard views [ index] . views. isEqual ( to: other. views [ index] . views) else {
821+ return false
822+ }
823+ }
824+ return true
810825 }
811826 }
812827}
@@ -815,7 +830,7 @@ public struct _ViewList_ID: Hashable {
815830@available ( * , unavailable)
816831extension _ViewList_ID : Sendable { }
817832
818- // MARK: - ViewList.ID.View
833+ // MARK: - ViewList.ID.Views
819834
820835@_spi ( ForOpenSwiftUIOnly)
821836open class _ViewList_ID_Views : RandomAccessCollection , Equatable {
@@ -834,7 +849,11 @@ open class _ViewList_ID_Views: RandomAccessCollection, Equatable {
834849 }
835850
836851 package func withDataDependency( ) -> ViewList . ID . Views {
837- ViewList . ID. _Views ( self , isDataDependent: true )
852+ if isDataDependent {
853+ self
854+ } else {
855+ ViewList . ID. _Views ( self , isDataDependent: true )
856+ }
838857 }
839858
840859 public static func == ( lhs: _ViewList_ID_Views , rhs: _ViewList_ID_Views ) -> Bool {
0 commit comments