Xcode Version 9.0 (9A235)

Hmmm. I'm now getting a segmentation fault : 11 on a constructor when trying to 
implement type erasure :

protocol DataProvider
{
  associatedtype ItemType
  
  subscript(index: Int) -> ItemType { get }
}

class _AnyDataProviderBoxBase<itemType>: DataProvider
{
  subscript(index: Int) -> itemType
  {
    fatalError()
  }
}

class _AnyDataProviderBox<providerType: DataProvider>: 
_AnyDataProviderBoxBase<providerType.ItemType>
{
  private let _subscript: (_ index: Int) -> providerType.ItemType
  
  init(_ base: providerType) // segmentation fault : 11
  {
    _subscript = base.subscript
  }
  
  override subscript(index: Int) -> providerType.ItemType
  {
    return _subscript(index)
  }
}

final class AnyDataProvider<providerType : DataProvider>: DataProvider
{
  private let box: _AnyDataProviderBox<providerType>
  
  init(_ base: providerType)
  {
    self.box = _AnyDataProviderBox(base)
  }
  
  subscript(index: Int) -> providerType.ItemType
  {
    return box[index]
  }
}

Joanna

--
Joanna Carter
Carter Consulting

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to