**Describe the bug** Function overloading with an @enum type produces unexpected results. **To Reproduce** Try the following code: ``` Color: @enum type = { RED; GREEN; BLUE; } foo: (color: Color) = { std::cout << "Invoked foo: (color: Color)\n"; } foo: (color: _) = { std::cout << "Invoked foo: (color: _)\n"; } main: () = { foo(Color::RED); } ``` After running this program, I'd expect to see the following on stdout: ``` Invoked foo: (color: Color) ``` Instead, the generic function is called: ``` Invoked foo: (color: _) ```