Skip to content

Can't use derives to derive an opaque type, yields "is not a class type" #19945

Open
@mrdziuban

Description

@mrdziuban

Compiler version

3.4.0

Minimized code

object types {
  opaque type Test[A] = Unit

  object Test {
    def derived[A]: Test[A] = ()
  }
}

case class Foo() derives types.Test

Output

-- [E170] Type Error: ----------------------------------------------------------
9 |case class Foo() derives types.Test
  |                         ^^^^^^^^^^
  |                         types.Test is not a class type

Expectation

Given the docs on how derives clauses are desugared, I wouldn't expect it to matter that types.Test is not a class type. I expected the generated definition to look like this, which compiles if written by hand:

given types.Test[Foo] = types.Test.derived

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions