-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Compiler version
3.8-* (whatever is the latest nightly
While looking into changes in Scala 3.8 library (SCL-24347) and investigating some exceptions in IntelliJ IDEA we noticed that:
In addition to TASTy in Tuple1.tasty
, Tuple1.class
contains Scala 2's "pickles"
(which is not the case for other .class files).
Here's the list of such classes (15 from 3643):
scala/AnyVal.class
scala/Tuple1.class
scala/Tuple2.class
scala/collection/DoubleStepper.class
scala/collection/IntStepper.class
scala/collection/LongStepper.class
scala/collection/immutable/DoubleVectorStepper.class
scala/collection/immutable/IntVectorStepper.class
scala/collection/immutable/LongVectorStepper.class
scala/collection/immutable/Range.class
scala/jdk/DoubleAccumulator.class
scala/jdk/IntAccumulator.class
scala/jdk/LongAccumulator.class
scala/runtime/NonLocalReturnControl.class
scala/util/Sorting.class
I think those are the ones copied from the Scala 2 library due to specialization issues
Some classes are copied directly from Scala 2.13 stdlid. See this file for the full list. It's not only specialized classess, but also the classes defining specialized methods as these would introduce additional bridges
scala3/project/ScalaLibraryPlugin.scala
Line 105 in 0afa50d
private lazy val filesToCopy = Set(
scala/AnyVal.class is not on the explicit list, we might need to investigate this one
I guess this one was not generated at all by Scala 3 compiler so the Scala 2 variant was used
See https://github.com/scala/scala3/blob/0afa50da6128b04289c108bc54ecf338f3e3e115/library/src/scala/AnyVal.scala.ignore (
I think we should actively remove the pickle annotations when "copying" the class files over from Scala 2