Skip to content

constructor default parameters are reused for case class apply #13324

Open
@bishabosha

Description

@bishabosha

A case class apply method does not have default parameters generated, instead the constructor default parameters are reused, I believe that this is undocumented - causing scala/bug#12409

Compiler version

3.0.1

Minimized code

case class CaseClassDefault(value: Int = 1)

val foo = Scala3CaseClass.apply()

Output

val foo: CaseClassDefault = CaseClassDefault.apply(CaseClassDefault.`<init>$default$1`)

Expectation

val foo: CaseClassDefault = CaseClassDefault.apply(CaseClassDefault.`apply$default$1`)

Notes

extract from generated code:

final lazy module val CaseClassDefault: CaseClassDefault$ = 
  new CaseClassDefault$()
final module class CaseClassDefault$() extends AnyRef() { 
  this: CaseClassDefault.type =>
  def apply(value: Int): CaseClassDefault = new CaseClassDefault(value)
  def unapply(x$1: CaseClassDefault): CaseClassDefault = x$1
  override def toString: String = "CaseClassDefault"
  def $lessinit$greater$default$1: Int @uncheckedVariance = 1
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions