nikitahils
(Nikita Tolkachev)
1
func test() {
class TestClass: Equatable {
var i: Int
init(i: Int) {
self.i = i
}
static func ==(lhs: TestClass, rhs: TestClass) -> Bool {
return lhs.i == rhs.i
}
}
}
Can't understand, why does this code produce compile-time error? What am i doing wrong?
Nevin
2
@nikitahils, to format your code snippet, surround it with triple backticks (```) on the lines above and below.
I also observe the error you describe, using Swift 5.0.1 in an Xcode 10.3 playground as well as in the REPL.
Furthermore, I observe the following:
• Placing the declaration at the top level (outside a func) lets it compile.
• Removing the protocol conformance “: Equatable” lets it compile.
• Changing class to struct lets it compile.
This appears to be a bug, and I would recommend you file it at bugs.swift.org
AlexanderM
(Alexander Momchilov)
3
Wow, I didn't know you could nest types within functions!
You can also let them leak out, which is interesting:
func f() -> Any {
struct S { let i: Int }
return S(i: 5)
}
f() // => S(i: 5)