[swift-dev] AutomaticEnumValueKind Tuple of Literals
Slava Pestov
spestov at apple.com
Sat Nov 18 12:10:02 CST 2017
Hi Mohammed,
The ‘automatic enum value’ code path is used if you have code like this, where you declare a raw type but don’t assign raw values:
enum E : Int {
case a
case b
case c
}
This only makes sense for a raw type of integer, and not string — or a tuple. Even if you have (Int, Int) as your raw type, it’s not clear how to automatically increment such a value, so I think you shouldn’t be hitting this code path at all if you have a tuple raw type.
Slava
> On Nov 18, 2017, at 1:07 PM, Mohammed Ennabah via swift-dev <swift-dev at swift.org> wrote:
>
> I have been digging into the Swift library to solve the case where enum could have a RawValue of tuples of literals. So far, I found that in lib/Sema/TypeCheckDecl.cpp::3020 we do check the enum RawValue if it conforms to a knownProtocolKind, and if true, we switch over to check whether it’s ExpressibleByXXLiteral (XX could be String, Integer, etc..).
> Now, my questions are:
> I need to extend this condition to have a tuple of types that conforms to the knownProtocolKind, and I’m not quite sure where to start. (Note: It’s better to make the tuple conforms to a protocol type that is knownProtocolKind, so the enum can be tuple of tuples.., let me know your thoughts please).
> We increment the RawValue if it’s of type Integer. What if the tuple of type (Int, String), will we need to increment the Int part as well? I think yes, but I’m asking to listen to your thoughts, too.
>
>
> - Mohammed
> _______________________________________________
> swift-dev mailing list
> swift-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20171118/99a53324/attachment.html>
More information about the swift-dev
mailing list