## Compiler version 3.0.2 and 3.1.0-RC2 ## Minimized code ```scala object StatusCode: enum Matcher: case ServerError extends Matcher end Matcher end StatusCode enum StatusCode(code: Int, m: StatusCode.Matcher): case InternalServerError extends StatusCode(500, StatusCode.Matcher.ServerError) end StatusCode object Main { def main(args: Array[String]): Unit = { println(StatusCode.InternalServerError) } } ``` ## Output ``` -- Error: 7 |enum StatusCode(code: Int, m: StatusCode.Matcher): | ^^^^^^^^^^^^^^^^^^ | type Matcher is not a member of object StatusCode ``` ## Expectation When putting the object declaration after the enum declaration it does compile, like so ```scala enum StatusCode(code: Int, m: StatusCode.Matcher): case InternalServerError extends StatusCode(500, StatusCode.Matcher.ServerError) end StatusCode object StatusCode: enum Matcher: case ServerError extends Matcher end Matcher end StatusCode object Main { def main(args: Array[String]): Unit = { println(StatusCode.InternalServerError) } } ``` Which is really frustrating.