Or perhaps paint the bikeshed enum Something<(Int32, Int32)> { … }
-DW > On Jan 16, 2017, at 11:51 AM, Anton Zhilin via swift-evolution > <swift-evolution@swift.org> wrote: > > This idea by Karl made me branch off a new thread. > > 2017-01-16 21:28 GMT+03:00 Karl Wagner <razie...@gmail.com > <mailto:razie...@gmail.com>>: > > > > It would be helpful for synthesised RawRep conformance. The inheritance-like > syntax we have now is awful - it makes people think that RawRepresentable is > some kind of magic protocol that will allow special compiler jango to happen. > > You could see why they think that. This looks very much like the enum is > going to *be* an Int32: > > enum Something: Int32 { > case oneThing = 36 > case anotherThing = 42 > } > > This is also one of the icky parts to allowing tuples of integer/string > literals (something people ask for quite a lot). It would look like you’re > deriving your enum from a non-nominal type: > > enum Something: (Int32, Int32) { > case oneThing = (3, 12) > case anotherThing = (5, 9) > } > > > Even if Swift gains newtype, it’s not that case. The enum does not gain > methods or behavior of the specified type. It’s just a shorthand, hinting the > compiler to provide correct RawRepresentable conformance. > > I suggest to invent a new syntax for this type hinting for RawRepresentable. > For example, it can be an annotation: > > @raw(Int32) enum Something { > // ... > } > Or a contextual keyword: > > enum Something : raw(Int32) { > // ... > } > Perhaps, he most uniform and explicit of syntaxes: > > enum Something : RawRepresentable { > case oneThing = 36 > case anotherThing = 42 > } > > enum AnotherThing : RawRepresentable { > typealias RawValue = Int32 > case oneThing > case anotherThing > } > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution