Files
swift-mirror/test/Constraints/sr13951.swift
Pavel Yaskevich 0e6260dd89 [Diagnostics] Special case assignment between nominal types with optional promotion
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
2020-12-11 20:49:43 -08:00

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
}