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!