Skip to content

Commit 89f87fc

Browse files
committed
Do not add mirrors under -Yscala2-stdlib
1 parent 6bb8fe9 commit 89f87fc

File tree

3 files changed

+12
-35
lines changed

3 files changed

+12
-35
lines changed

compiler/src/dotty/tools/dotc/transform/SyntheticMembers.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -639,8 +639,9 @@ class SyntheticMembers(thisPhase: DenotTransformer) {
639639
val clazz = ctx.owner.asClass
640640
val syntheticMembers = serializableObjectMethod(clazz) ::: serializableEnumValueMethod(clazz) ::: caseAndValueMethods(clazz)
641641
checkInlining(syntheticMembers)
642-
addMirrorSupport(
643-
cpy.Template(impl)(body = syntheticMembers ::: impl.body))
642+
val impl1 = cpy.Template(impl)(body = syntheticMembers ::: impl.body)
643+
if ctx.settings.Yscala2Stdlib.value then impl1
644+
else addMirrorSupport(impl1)
644645
}
645646

646647
private def checkInlining(syntheticMembers: List[Tree])(using Context): Unit =

project/MiMaFilters.scala

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@ object MiMaFilters {
176176
val StdlibBootstrappedForward: Map[String, Seq[ProblemFilter]] = Map(
177177
"2.13.10" -> Seq(
178178
// Scala language features
179-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.languageFeature#*.ordinal"),
180179
ProblemFilters.exclude[FinalClassProblem]("scala.languageFeature$*$"),
181180
ProblemFilters.exclude[MissingFieldProblem]("scala.language.experimental"),
182181
ProblemFilters.exclude[MissingFieldProblem]("scala.languageFeature*"),
@@ -189,7 +188,7 @@ object MiMaFilters {
189188
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.*$extension"),
190189
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.*$extension"),
191190

192-
// Companion module class
191+
// Companion module class: Missing types {java.io.Serializable}
193192
ProblemFilters.exclude[MissingTypesProblem]("scala.*$"),
194193

195194
// Non-categorized
@@ -211,35 +210,27 @@ object MiMaFilters {
211210
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.convert.StreamExtensions#StreamUnboxer.*StreamUnboxer"),
212211
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.::._1"),
213212
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.::._2"),
214-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.::.fromProduct"),
215-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.IntMap.ordinal"),
216-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.List.ordinal"),
217213
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.List.partialNotApplied"),
218214
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.ListSet.emptyInstance"),
219-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.LongMap.ordinal"),
220215
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Nil.andThen"),
221216
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Nil.collectionClassName"),
222217
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Nil.empty"),
223-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Nil.fromProduct"),
224218
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Nil.view"),
225219
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.NumericRange.defaultOrdering"),
226220
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Set.emptyInstance"),
227221
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Stream.collectedTail"),
228222
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Stream.filteredTail"),
229-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#OrderBy.ordinal"),
230223
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Bin._1"),
231224
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Bin._2"),
232225
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Bin._3"),
233226
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Bin._4"),
234227
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Bin.apply"),
235-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Bin.fromProduct"),
236228
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Bin.unapply"),
237229
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Iterator.empty"),
238230
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Iterator.Empty"),
239231
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Tip._1"),
240232
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Tip._2"),
241233
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Tip.apply"),
242-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Tip.fromProduct"),
243234
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.TreeSeqMap#Ordering#Tip.unapply"),
244235
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.immutable.Vector.fillSparse"),
245236
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.IterableOnce.checkArraySizeWithinVMLimit"),
@@ -264,11 +255,9 @@ object MiMaFilters {
264255
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.mutable.UnrolledBuffer#Unrolled.<init>$default$4"),
265256
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#Found._1"),
266257
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#Found.apply"),
267-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#Found.fromProduct"),
268258
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#Found.unapply"),
269259
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#InsertionPoint._1"),
270260
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#InsertionPoint.apply"),
271-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#InsertionPoint.fromProduct"),
272261
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Searching#InsertionPoint.unapply"),
273262
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.SortedMapFactoryDefaults.empty"),
274263
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.SortedMapFactoryDefaults.fromSpecific"),
@@ -277,14 +266,12 @@ object MiMaFilters {
277266
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.SortedSetOps.zipOrdMsg"),
278267
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.Stepper.throwNSEE"),
279268
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.StringView._1"),
280-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.StringView.fromProduct"),
281269
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.View.dropRightIterator"),
282270
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.View.takeRightIterator"),
283271
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.collection.View#Filter.apply"),
284272
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.BatchingExecutor#AbstractBatch.this"),
285273
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.Channel#LinkedList.this"),
286274
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.duration.Deadline._1"),
287-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.duration.Deadline.fromProduct"),
288275
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.ExecutionContext.opportunistic"),
289276
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.Future.addToBuilderFun"),
290277
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.Future.collectFailed"),
@@ -307,59 +294,41 @@ object MiMaFilters {
307294
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.jdk.Accumulator#AccumulatorFactoryShape.longAccumulatorFactoryShape"),
308295
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.jdk.FunctionWrappers#*"),
309296
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.math.Ordering.tryCompare"),
310-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.None.fromProduct"),
311-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.Option.ordinal"),
312297
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.PartialFunction.unlifted"),
313298
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.ScalaReflectionException._1"),
314-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.ScalaReflectionException.fromProduct"),
315299
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.Some._1"),
316-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.Some.fromProduct"),
317300
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.StringContext._1"),
318-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.StringContext.fromProduct"),
319301
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.sys.process.BasicIO.connectNoOp"),
320302
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.sys.process.BasicIO.connectToStdIn"),
321303
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.sys.process.Process.Future"),
322304
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.sys.process.Process.Spawn"),
323-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.Tuple*.fromProduct"),
324305
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.UninitializedFieldError._1"),
325-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.UninitializedFieldError.fromProduct"),
326306
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.Exception#Catch.<init>$default$2"),
327307
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.Exception#Catch.<init>$default$3"),
328308
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Call._1"),
329309
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Call.apply"),
330-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Call.fromProduct"),
331310
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Call.unapply"),
332311
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Cont._1"),
333312
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Cont._2"),
334313
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Cont.apply"),
335-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Cont.fromProduct"),
336314
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Cont.unapply"),
337315
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Done._1"),
338316
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Done.apply"),
339-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Done.fromProduct"),
340317
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.control.TailCalls#Done.unapply"),
341-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either.ordinal"),
342318
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#LeftProjection._1"),
343319
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#LeftProjection.apply"),
344-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#LeftProjection.fromProduct"),
345320
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#LeftProjection.unapply"),
346321
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#RightProjection._1"),
347322
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#RightProjection.apply"),
348-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#RightProjection.fromProduct"),
349323
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Either#RightProjection.unapply"),
350324
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Failure._1"),
351-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Failure.fromProduct"),
352325
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Left._1"),
353-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Left.fromProduct"),
354326
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.matching.Regex#Match.unapply"),
355327
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Properties.coloredOutputEnabled"),
356328
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Properties.isAvian"),
357329
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Properties.versionFor"),
358330
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Right._1"),
359-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Right.fromProduct"),
360331
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Success._1"),
361-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Success.fromProduct"),
362-
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.util.Try.ordinal"),
363332
ProblemFilters.exclude[IncompatibleMethTypeProblem]("scala.collection.mutable.ArrayBuilder#ofUnit.addAll"),
364333
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.convert.JavaCollectionWrappers#JConcurrentMapWrapper.empty"),
365334
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.convert.JavaCollectionWrappers#JMapWrapper.empty"),

stdlib-2_13-bootstrapped/test/Main.scala

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hello
22

3-
import scala.util.Right
3+
import scala.util.*
4+
import scala.compiletime.testing.typeChecks
45

56
enum Color:
67
case Red, Green, Blue
@@ -13,6 +14,7 @@ object HelloWorld:
1314
println(Color.Blue)
1415

1516
testScala2UnapplySignatures()
17+
testScala2ObjectParents()
1618
}
1719

1820
def testScala2UnapplySignatures() = {
@@ -24,3 +26,8 @@ object HelloWorld:
2426
val _: Option[(Int, Int)] = Tuple2.unapply((1, 2))
2527
val _: Option[(Int, Int, Int)] = Tuple3.unapply((1, 2, 3))
2628
}
29+
30+
def testScala2ObjectParents() = {
31+
assert(!typeChecks("Either: scala.deriving.Mirror.Sum"))
32+
assert(!typeChecks("Either: scala.deriving.Mirror"))
33+
}

0 commit comments

Comments
 (0)