How to create a enum-like struct macro?

i was actually (pleasantly) surprised to find that extension macros are able to look up type-checked conformances, so the required conformance can live anywhere.

...
    "wa",
    "wo",
    "xh",
    "yi",
    "yo",
    "za",
    "zh",
    "zu")
@frozen public
struct Macrolanguage:Equatable, Hashable, Sendable
{
    public
    var rawValue:UInt16

    @inlinable public
    init(rawValue:UInt16)
    {
        self.rawValue = rawValue
    }
}
extension Macrolanguage:RawRepresentableByIntegerEncoding
{
}

if only the attribute itself could also live on an extension block…

1 Like