mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Skip fixing situation where source and destination of assignment are both nominal types with different optionality until restriction is attempted. Otherwise fix could be too greedy and diagnose valid code if all of the types are known in advance. Resolves: SR-13951 Resolves: rdar://problem/72166791
38 lines
608 B
Swift
38 lines
608 B
Swift
// RUN: %target-typecheck-verify-swift
|
|
|
|
protocol TheProtocol {}
|
|
struct TheType1: TheProtocol {}
|
|
|
|
enum TheEnum: RawRepresentable {
|
|
typealias RawValue = TheProtocol
|
|
|
|
case case1
|
|
case case2
|
|
|
|
init?(rawValue: TheProtocol) {
|
|
self = .case1
|
|
}
|
|
|
|
var rawValue: TheProtocol {
|
|
return TheType1()
|
|
}
|
|
}
|
|
|
|
func aTransformer(input: Int) -> TheEnum {
|
|
if input % 2 == 0 {
|
|
return .case1
|
|
} else {
|
|
return .case2
|
|
}
|
|
}
|
|
|
|
func theProblem(input: Int?) {
|
|
var enumValue: TheEnum?
|
|
|
|
if let input = input {
|
|
enumValue = aTransformer(input: input) // Ok
|
|
}
|
|
|
|
_ = enumValue // To silence the warning
|
|
}
|