[swift-users] Swift 3 segmentation error 11
Ben Cohen
ben_cohen at apple.com
Sat Mar 11 18:23:21 CST 2017
Hi – I think you’re hitting a bug that was fixed recently. There was a missing default for this particular combination’s slice type, which then interacted quite unpleasantly with a compiler bug to cause a crash. Can you try it with the latest Xcode beta?
In the mean-time, adding the following to your declaration of your DynamicList ought to do as a workaround:
typealias SubSequence = MutableRangeReplaceableBidirectionalSlice<DynamicList>
> On Mar 10, 2017, at 3:32 PM, Don Giovanni via swift-users <swift-users at swift.org> wrote:
>
> The following code generates a segmentation error:
>
>
> extension Int
> {
> static prefix func++(i:Int)->Int{
>
> return i+1;
> }
>
> static prefix func--(i:Int)->Int{
> return i-1;
> }
> }
>
>
> infix operator <-;
>
> class DynamicList<T>: RangeReplaceableCollection, MutableCollection, BidirectionalCollection
> {
>
> var length:Int;
> var arr:Array<T>?;
> var startIndex:Int{
> return 0;
> }
> var endIndex:Int{
>
> return length;
> }
>
> subscript(i:Int)->T{
> get{
> return arr![i];
> }
> set{
> arr![i] = newValue;
> }
> }
>
> func index(after i: Int) -> Int{
> return ++i;
> }
>
> func index(before i: Int) -> Int{
> return --i;
> }
>
> required init(){
> length = 0;
>
>
>
> }
>
>
>
> static func <- (left: inout DynamicList<T>, right: DynamicList<T>){
>
> }
>
>
> /* func replaceSubrange<C>(_ subrange: Range<Self.Index>, with newElements: C) where C : Collection,
> C.Iterator.Element == Iterator.Element */
>
>
>
> func replaceSubrange<C>(_ subrange: Range<DynamicList.Index>, with c: C)
> where C : Collection, C.Iterator.Element == DynamicList.Iterator.Element{
>
>
>
>
>
>
>
>
> }
>
>
> }
>
> My intent here is to have the generic class `DynamicList<T>`
>
> adopt three protocols:
>
> `class DynamicList<T>: RangeReplaceableCollection, MutableCollection, BidirectionalCollection`
>
> as indicated in the code above but it generates segmentation error.
>
> However, when I replace `MutableCollection` with `Collection`, code above complies.
>
> If I remove `BidirectionalCollection`, the code above compiles with no segmentation error.
>
> Is it not possible to adopt all 3:
>
> - RangeReplaceableCollection
> - MutableCollection
> - BidirectionalCollection
>
> at the same time? Thanks.
>
>
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170311/02f8e8d0/attachment.html>
More information about the swift-users
mailing list