typedef enum
{
ABC = -3,
DEF = 100
} Foo;
void update(Foo x);
Foo get_value(void);
Convert this to:
typedef FooType = int;
enum Foo : (inline FooType val)
{
ABC = -3,
DEF = 100
}
extern fn void update(FooType x);
extern fn FooType get_value();
Now we can use this as:
update(Foo.ABC); // But no inference.
if (Foo.DEF == get_value()) { ... }
Foo f = Foo.lookup(get_value());