wickwirew / Runtime

A Swift Runtime library for viewing type info, and the dynamic getting and setting of properties.
MIT License
1.07k stars 94 forks source link

Is it possible to support @propertyWrapper? #97

Open bigearsenal opened 2 years ago

bigearsenal commented 2 years ago

Hi there! Thanks for an awesome library! Lately I faced the problem with @propertyWrapper. I have tried to create a @propertyWrapper:

@propertyWrapper public struct Blob {
    public init(length: Int) {
        self.length = length
        self.wrappedValue = []
    }

    let length: Int

    public var wrappedValue: [UInt8]
}

Then I used it in my struct just like this one:

struct MyStruct {
  @Blob(length: 10) var blob: [UInt8]
  ...
}

And then I tried to createInstance , i got length = 0, I could not create instance with default length (=10). How to reflect the propertyWrapper and get the default length (= 10)? Thanks

wickwirew commented 2 years ago

So unfortunately this isn't possible. createInstance doesn't work by calling an initializer. It just allocates the memory manually and sets each field to a default value, which for an Int is 0