Skip to content

paramClasses is empty in inline applyDynamic #17761

Closed
@andrzejressel

Description

@andrzejressel

Compiler version

3.3.0

Minimized code

https://scastie.scala-lang.org/wUWQ0uNJRkqyLAz19jO8xw

class MyRecord extends Selectable:
  def applyDynamic(name: String, paramClasses: Class[_]*)(args: Any*): Any = {
    println(name)
    println(paramClasses)
    println(args)
    ()
  }

class MyRecordTransparent extends Selectable:
  inline transparent def applyDynamic(name: String, paramClasses: Class[_]*)(args: Any*): Any = {
    println(name)
    println(paramClasses)
    println(args)
    ()
  }

type Person = MyRecord {
  def test(a: String, b: Int): Unit
}


type PersonTransparent = MyRecordTransparent {
  def test(a: String, b: Int): Unit
}

val person = MyRecord().asInstanceOf[Person]
val personTransparent = MyRecordTransparent().asInstanceOf[PersonTransparent]

println("Normal")
person.test("test", 42)
println("Transparent")
personTransparent.test("test", 42)

Output

Normal
test
ArraySeq(class java.lang.String, int)
ArraySeq(test, 42)
Transparent
test
ArraySeq()
ArraySeq(test, 42)

Expectation

Normal
test
ArraySeq(class java.lang.String, int)
ArraySeq(test, 42)
Transparent
test
ArraySeq(class java.lang.String, int)
ArraySeq(test, 42)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions