On May 4, 2016, at 5:02 PM, Ryan Lovelett wrote:

Drop the extension and move the initializer to the MyHeap struct and it
compiles for me on Swift 3.0. To me that indicates the answer to your
first question: I would think you do not have a syntax error. That is:

struct MyHeapElement <T:Comparable> {
 var index: Int
 var key: T
}

struct MyHeap <T:Comparable> {
 var elements = [MyHeapElement<T>]()

 init(withElements elements: [MyHeapElement<T>]) {
   self.elements = elements
 }
}

Regardless of whether it is or not you should file the bug at
bugs.swift.org. As you say the compiler should never crash.

That way I lose the memberwise initializer and the default initializer.
This is yet another crashing bug related to the position of an extension.

In December I reported this bug which looks similar:

bug 23998571

If the struct definition and the extension are placed in two different files of a framework project the compiler crashes.

struct Description
        {
        var property:Int32 = 0
        }

extension Description
        {
        init( startPtr: UnsafePointer<Int32> )
                {
                        property = startPtr[0]
                        }
        }

Still open, still crashing.

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

Reply via email to