Hi!
I've just discovered that if property wrapper has generic parameters other than wrappedValue's type and it has initialiser without arguments under some constraint, you can't use this property wrapper without parenthesis:
enum First {}
@propertyWrapper
struct MagicBox<T, Mode> {
var wrappedValue: T
init() where Mode == First {
fatalError()
}
}
// Error: Generic parameter 'Mode' could not be inferred
@MagicBox
var foo: Int
// Works fine
@MagicBox()
var foo: Int
So, as I understand, compiler has enough information to infer Mode
parameter, but it can't for some reason. Is that expected behaviour or bug? May be I'm missing something?