Swift fails to compile class with recursive type reference

Originator:jlieske
Number:rdar://17226390 Date Originated:08-Jun-2014 06:50 PM
Status:Closed Resolved:Fixed in OS X SDK 10.10 Beta 3
Product:OS X SDK Product Version:Xcode6 beta: Version 6.0 (6A215l)
Classification:Crash Reproducible:Always
 
The Swift language supports generic classes with type parameters for properties.  Such classes should support recursive relationships, such as the classic linked list.  

For example, this seems to be a reasonable class declaration:

class Cons<T> {
    let head: T
    let tail: Cons<T>?
    init(_ head: T, _ tail: Cons<T>? = nil) {
        self.head = head
        self.tail = tail
    }
}

However, it fails to compile in Swift source code files.  The compiler reports the error:

CompileSwift normal x86_64 com.apple.xcode.tools.swift.compiler
    cd /Users/jay/Coding/Swift/TrySwift
    /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -target x86_64-apple-macosx10.9 -module-name TryListClass -O0 -sdk /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -g -module-cache-path /Users/jay/Coding/Swift/TrySwift/Build/ModuleCache -I /Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Products/Debug -F /Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Products/Debug -c -j8 /Users/jay/Coding/Swift/TrySwift/TryListClass/main.swift -output-file-map /Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/Objects-normal/x86_64/TryListClass-OutputFileMap.json -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/Objects-normal/x86_64/TryListClass.swiftmodule -Xcc -iquote -Xcc /Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/TryListClass-generated-files.hmap -Xcc -I/Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/TryListClass-own-target-headers.hmap -Xcc -I/Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/TryListClass-all-target-headers.hmap -Xcc -iquote -Xcc /Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/TryListClass-project-headers.hmap -Xcc -I/Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Products/Debug/include -Xcc -I/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Xcc -I/Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/DerivedSources/x86_64 -Xcc -I/Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -DDEBUG=1 -emit-objc-header -emit-objc-header-path /Users/jay/Coding/Swift/TrySwift/Build/TrySwift/Build/Intermediates/TrySwift.build/Debug/TryListClass.build/Objects-normal/x86_64/TryListClass-Swift.h

0  swift                    0x000000010de9c608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1  swift                    0x000000010de9caf4 SignalHan

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!