[cfe-dev] Implementing P1099R5 (using enum) in clang

Shachaf Co via cfe-dev cfe-dev at lists.llvm.org
Fri Jul 10 04:01:02 PDT 2020


Hi all,

I'm new to Clang, and decided that I want to implement a small C++20
feature - the "using enum" proposal (
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1099r5.html).

The first part of the proposal, supporting syntax such as "using
Color::RED" is easy enough to implement, and basically requires removing an
if-statement and adding some diagnostics.

However, I struggle finding the correct way to implement the "using enum
Color" syntax. There are two approaches that I see when trying to implement
it.

The first approach is "expanding" it to a list of using-declarations (i.e
"using enum Color" would be equivalent to "using Color::RED, Color::BLUE,
...). This approach is easier to implement, however the resulting AST won't
be as accurate.

The second approach is creating a new AST node representing a
"UsingEnumDecl". This will generate a more "correct" AST, however it is
much more complicated to implement - it is more similar to using directives
("using namespace ns"), whose implementation is complicated and heavily
affects the name lookup.

What do you think is the correct way to implement the feature? Is reducing
the complexity worth degrading the accuracy of the AST?

Thanks,
Shachaf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200710/8cb5d265/attachment.html>


More information about the cfe-dev mailing list