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 Reference

본문

참고: 이 에러는 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