wickwirew / Runtime

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

Is it possible to get the enum case values/payloads? #108

Open blacktop opened 2 years ago

blacktop commented 2 years ago
enum MyEnum: String {
    case A = "test"
    case B
    case C
}

struct Name {
    var a: MyEnum
    var b: MyEnum
}

Name(a: .A, b: .B)
let info = try! typeInfo(of: MyEnum.self)
print(info)

TypeInfo(kind: Runtime.Kind.enum, name: "MyEnum", type: SwiftDump.MyEnum, mangledName: "MyEnum", properties: [], inheritance: [], size: 1, alignment: 1, stride: 1, cases: [Runtime.Case(name: "A", payloadType: nil), Runtime.Case(name: "B", payloadType: nil), Runtime.Case(name: "C", payloadType: nil)], numberOfEnumCases: 3, numberOfPayloadEnumCases: 0, genericTypes: [])

This is probably just a misunderstanding of mine, but I thought the payload for the A case would be "test"?

blacktop commented 2 years ago

Also is it possible to get the struct funcs via reflection in this example?

struct E<T> {
  var x : Int
  func foo() { bar() }
  func bar() {}
}