Files
swift-mirror/test/Sema/const_in_property_wrapper.swift
Xi Ge 3377591b3c sema: always record fix for mismatched constness.
Also, this commit has added a test for using _const values in property wrapper.
2021-12-02 12:19:41 -08:00

51 lines
1.2 KiB
Swift

// RUN: %target-typecheck-verify-swift
enum Colors {
case blue
case red
}
let globalString = ""
let globalInt = 2
let globalColor = Colors.blue
func giveMeBlue() -> Colors {
return .blue
}
@propertyWrapper struct Wrapper<Value> {
let key: String
var wrappedValue: Value? { get { return nil } set { } }
init(_ key: _const String) {self.key = key }
init(_ key: _const Int) {self.key = "" }
init(_ key: _const Colors) { self.key = ""}
}
struct WrapperAdopters {
@Wrapper<Bool>(3)
var wrappedVar_correct_1
@Wrapper<Bool>("")
var wrappedVar_correct_2
@Wrapper<Bool>(.blue)
var wrappedVar_correct_3
@Wrapper<Bool>(Colors.blue)
var wrappedVar_correct_4
}
struct WrapperAdopters_incorrect {
@Wrapper<Bool>(globalInt) // expected-error{{expect a compile-time constant literal}}
var wrappedVar_incorrect_1
@Wrapper<Bool>(globalString) // expected-error{{expect a compile-time constant literal}}
var wrappedVar_incorrect_2
@Wrapper<Bool>(globalColor) // expected-error{{expect a compile-time constant literal}}
var wrappedVar_incorrect_3
@Wrapper<Bool>(giveMeBlue()) // expected-error{{expect a compile-time constant literal}}
var wrappedVar_incorrect_4
}