case class나 case object만 허용돼요
case class나 case object만 허용돼요 (E079: Only Case Class Or Case Object Allowed)
이 에러는 Scala 3.0.0이 릴리스되기 전에 제거된 에러라, 실제로 스칼라 3 컴파일러가 내보낸 적은 없어요. 초기 Dotty 버전에서 case 키워드를 올바르지 않은 문맥에 썼을 때 발생하던 에러예요.
본문
참고: 이 에러는 Scala 3.0.0이 릴리스되기 전에 제거되었고, 스칼라 3 컴파일러가 실제로 내보낸 적은 없어요.
무엇을 하던 에러였을까요 (What it did)
초기 Dotty 버전에서 case 키워드를 올바르지 않은 문맥에서 사용하면 이 에러가 발생했어요.
예시 (Example)
object Test:
case Foo // error: only case class or case object allowed
에러 (Error)
-- [E079] Syntax Error: example.scala:2:2 --------------------------------------
2 | case Foo
| ^^^^^^^^
| Only `case class` or `case object` allowed
설명 (Explanation)
case 키워드는 특정 문맥에서만 쓸 수 있어요.
case class를 정의할 때class앞에case object를 정의할 때object앞에match표현식 안에서 패턴 매칭할 때enum정의 안에서 enum 케이스를 만들 때
이 에러는 2e5df79218 커밋(2021년 5월)에서 "Refactor remaining statement and declaration loops"의 일부로 제거되었어요. 파서가 올바르지 않은 문법을 다르게 처리하도록 리팩터링되면서 사라졌죠.
올바른 사용법은 다음과 같아요.
// Case class
case class Foo(x: Int)
// Case object
case object Bar
// Enum cases
enum Color:
case Red, Green, Blue