> On Jul 2, 2017, at 10:15 PM, Christopher Kornher <[email protected]> wrote: > > A full-fledged introspection system should provide this information, which I > suppose could be useful for creating proxies through code generation or > dynamic Objective-C like features, should they ever be added to the language. > Would that be sufficient for your needs? It is not clear to me what problem > you are trying to solve. > > Hopefully I won't stir up too much trouble by saying that this kind of > capability is very useful in Objective-C for mocking, for example.
I have the proposal for my use case out now at <https://gist.github.com/CTMacUser/c493f775075e946efdcfd85d38473291 <https://gist.github.com/CTMacUser/c493f775075e946efdcfd85d38473291>>. Look at: alter MyInt16: Int16, Hashable { publish Equatable var hashValue: Int { return 2000 &+ super.hashValue } } If I wanted to copy Int16 completely, I couldn’t write the full protocol list because it’s open-ended from the user’s perspective due to extensions. However, the list is closed from the compiler/linker’s perspective, so we can synthesize an all-protocol list: alter MyInt16: Int16, #protocols(Int16), ANewProtocol { publish #protocols(Int16) // Define new members here, some of which implement ANewProtocol.... } Besides this, maybe we could do some analysis using #protocols(MyType).Protocol. (Oh, completely copying Int16 is still useful because functions with them are considered separate overloads, unlike a type-alias.) I’m not sure what you mean by a full-fledged introspection system, but my current use for it requires a solution that is 100% workable at compile-time. — Daryle Walker Mac, Internet, and Video Game Junkie darylew AT mac DOT com
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
