Skip to content

Scala 3.3.7 compiles parameterless call to Apply in Tasty #25133

@olhotak

Description

@olhotak

Compiler version

3.3.7 and 3.8.1

Minimized code

object A {
  inline def foo = {
    val list = List[BigDecimal]()
    val bar = list.map(_.underlying)
  }
}
object B {
  val c = A.foo
}

Output

Compile A.scala with 3.8.1, then B.scala with 3.8.1, everything works.

Compile A.scala with 3.3.7, then B.scala with 3.8.1, get the following:

-- Error: A.scala:4:23 ---------------------------------------------------------
method underlying in class BigDecimal does not take parameters
1 error found

Relevant Tasty when A.scala is compiled with 3.3.7:

   176:                   DEFDEF(24) 47 [$anonfun]
   179:                     PARAM(4) 49 [[Unique _$ 1]]
   182:                       SHAREDtype 105
   184:                       SYNTHETIC
   185:                     SHAREDtype 151
   188:                     APPLY(10)
   190:                       SELECTin(8) 52 [underlying[Signed Signature(List(),java.math.BigDecimal) @underlying]]
   193:                         TERMREFdirect 179
   196:                         TYPEREF 31 [BigDecimal]
   198:                           TERMREFpkg 53 [scala[Qualified . math]]
   200:                     SYNTHETIC
   201:                     ARTIFACT

Corresponding Tasty when A.scala is compiled with 3.8.1:

   178:                   DEFDEF(17) 47 [$anonfun]
   181:                     PARAM(4) 49 [[Unique _$ 1]]
   184:                       SHAREDtype 105
   186:                       SYNTHETIC
   187:                     SHAREDtype 151
   190:                     SELECT 50 [underlying]
   192:                       TERMREFdirect 181
   195:                     SYNTHETIC
   196:                     ARTIFACT

Expectation

Compiling A.scala with 3.3.7, then B.scala with 3.8.1, should succeed.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions