Skip to content

Commit 916d4e7

Browse files
Fix inferred result types of non private members in stdlib-bootstapped (#17975)
Cloned original Scala 2 sources (in commits `Clone ...`) and added explicit result types to methods where Scala 2 and Scala 3 infer different types (in commits `Fix ...`). Once accepted, I will open a PR to `scala/scala` to add these missing signatures directly to the library. I used `stdlib-boostrapped/run clone scala/XYZ.scala` to clone the sources.
2 parents 302be2f + 66b05b8 commit 916d4e7

File tree

14 files changed

+5555
-31
lines changed

14 files changed

+5555
-31
lines changed

project/MiMaFilters.scala

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,11 @@ object MiMaFilters {
8686
ProblemFilters.exclude[FinalMethodProblem]("scala.io.Source.NoPositioner"),
8787
ProblemFilters.exclude[FinalMethodProblem]("scala.io.Source.RelaxedPosition"),
8888
ProblemFilters.exclude[FinalMethodProblem]("scala.io.Source.RelaxedPositioner"),
89-
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.convert.JavaCollectionWrappers#*.empty"),
9089
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.immutable.RedBlackTree#EqualsIterator.nextResult"),
9190
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.immutable.SortedMapOps.coll"),
9291
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.immutable.TreeMap.empty"),
9392
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.immutable.TreeMap.fromSpecific"),
9493
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.mutable.ArrayBuilder#ofUnit.addAll"),
95-
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.mutable.LinkedHashMap.newBuilder"),
96-
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.mutable.LinkedHashSet.newBuilder"),
9794
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.mutable.TreeMap.empty"),
9895
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.mutable.TreeMap.fromSpecific"),
9996
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.reflect.ManifestFactory#NothingManifest.newArray"),
@@ -104,28 +101,21 @@ object MiMaFilters {
104101
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.collection.immutable.SortedMapOps.coll"),
105102
) ++
106103
Seq( // DirectMissingMethodProblem
107-
"scala.collection.convert.JavaCollectionWrappers#*.iterableFactory", "scala.collection.convert.JavaCollectionWrappers#*.mapFactory", "scala.collection.convert.JavaCollectionWrappers#IteratorWrapper.remove",
108104
"scala.collection.immutable.ArraySeq#*.elemTag",
109-
"scala.collection.immutable.BitSet.bitSetFactory",
110105
"scala.collection.immutable.HashCollisionSetNode.copy",
111106
"scala.collection.immutable.MapKeyValueTupleHashIterator.next",
112-
"scala.collection.immutable.TreeSet.sortedIterableFactory",
113107
"scala.collection.LinearSeqIterator#LazyCell.this",
114108
"scala.collection.mutable.AnyRefMap#ToBuildFrom.newBuilder",
115109
"scala.collection.mutable.ArraySeq#*.elemTag",
116-
"scala.collection.mutable.BitSet.bitSetFactory",
117110
"scala.collection.mutable.LinkedHashMap.newBuilder", "scala.collection.mutable.LinkedHashSet.newBuilder",
118111
"scala.collection.mutable.LongMap#ToBuildFrom.newBuilder",
119112
"scala.collection.mutable.PriorityQueue#ResizableArrayAccess.this",
120-
"scala.collection.mutable.TreeMap.sortedMapFactory",
121113
"scala.collection.StringView.andThen", "scala.collection.StringView.compose",
122-
"scala.collection.View#*.iterator",
123114
"scala.concurrent.BatchingExecutor#AbstractBatch.this",
124115
"scala.concurrent.Channel#LinkedList.this",
125-
"scala.concurrent.duration.Deadline.apply", "scala.concurrent.duration.Deadline.copy", "scala.concurrent.duration.Deadline.copy$default$1", "scala.concurrent.duration.FiniteDuration.unary_-",
116+
"scala.concurrent.duration.Deadline.apply", "scala.concurrent.duration.Deadline.copy", "scala.concurrent.duration.Deadline.copy$default$1",
126117
"scala.Enumeration#ValueOrdering.this",
127118
"scala.io.Source#RelaxedPosition.this",
128-
"scala.math.BigDecimal.underlying",
129119
"scala.PartialFunction#OrElse.andThen", "scala.PartialFunction#OrElse.orElse",
130120
"scala.runtime.Rich*.num", "scala.runtime.Rich*.ord",
131121
"scala.ScalaReflectionException.andThen", "scala.ScalaReflectionException.compose",
@@ -163,9 +153,6 @@ object MiMaFilters {
163153
ProblemFilters.exclude[IncompatibleMethTypeProblem]("scala.collection.mutable.ArrayBuilder#ofUnit.addAll"),
164154

165155
// Non-categorized
166-
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.convert.JavaCollectionWrappers#JConcurrentMapWrapper.empty"),
167-
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.convert.JavaCollectionWrappers#JMapWrapper.empty"),
168-
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.convert.JavaCollectionWrappers#JPropertiesWrapper.empty"),
169156
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.immutable.RedBlackTree#EqualsIterator.nextResult"),
170157
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.immutable.SortedMapOps.coll"),
171158
ProblemFilters.exclude[IncompatibleResultTypeProblem]("scala.collection.mutable.LinkedHashMap.newBuilder"),
@@ -218,7 +205,6 @@ object MiMaFilters {
218205
"scala.io.Source#RelaxedPosition.this",
219206
"scala.jdk.Accumulator#AccumulatorFactoryShape.anyAccumulatorFactoryShape", "scala.jdk.Accumulator#AccumulatorFactoryShape.doubleAccumulatorFactoryShape", "scala.jdk.Accumulator#AccumulatorFactoryShape.intAccumulatorFactoryShape", "scala.jdk.Accumulator#AccumulatorFactoryShape.jDoubleAccumulatorFactoryShape", "scala.jdk.Accumulator#AccumulatorFactoryShape.jIntegerAccumulatorFactoryShape", "scala.jdk.Accumulator#AccumulatorFactoryShape.jLongAccumulatorFactoryShape", "scala.jdk.Accumulator#AccumulatorFactoryShape.longAccumulatorFactoryShape",
220207
"scala.jdk.FunctionWrappers#*",
221-
"scala.math.Ordering.tryCompare",
222208
"scala.PartialFunction.unlifted",
223209
"scala.sys.process.BasicIO.connectNoOp", "scala.sys.process.BasicIO.connectToStdIn",
224210
"scala.sys.process.Process.Future",

project/TastyMiMaFilters.scala

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ object TastyMiMaFilters {
1111
ProblemMatcher.make(ProblemKind.MissingTermMember, "scala.*$extension"),
1212
ProblemMatcher.make(ProblemKind.IncompatibleSelfTypeChange, "scala.*"),
1313

14+
// Probably OK: object singleton type
15+
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.mutable.BitSet.bitSetFactory"),
16+
1417
// Probably OK: by-name arguments in signatures
1518
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.App.delayedInit"),
1619
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.Array.fill"),
@@ -108,25 +111,12 @@ object TastyMiMaFilters {
108111
// Problem: Case class with varargs
109112
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.StringContext.parts"),
110113

111-
// Problem: Inferred result type of non-private member differs
112-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.convert.JavaCollectionWrappers.*.iterableFactory"),
113-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.convert.JavaCollectionWrappers.*.empty"),
114-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.convert.JavaCollectionWrappers.*.mapFactory"),
115-
ProblemMatcher.make(ProblemKind.MissingTermMember, "scala.collection.mutable.LinkedHash*.newBuilder"),
114+
// Problem: ???
116115
ProblemMatcher.make(ProblemKind.MissingTermMember, "scala.math.Big*.underlying"),
117-
ProblemMatcher.make(ProblemKind.MissingTermMember, "scala.math.Ordering.tryCompare"),
118-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.immutable.TreeSet.sortedIterableFactory"),
119-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.immutable.BitSet.bitSetFactory"),
120-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.mutable.BitSet.bitSetFactory"),
121-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.View.*PartitionMapped.iterator"),
122-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.sys.process.ProcessBuilderImpl.*.toSink"),
123-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.sys.process.ProcessBuilderImpl.*.toSource"),
124-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.concurrent.duration.FiniteDuration.unary_-"),
125-
ProblemMatcher.make(ProblemKind.MissingTermMember, "scala.collection.convert.JavaCollectionWrappers.IteratorWrapper.remove"),
116+
117+
// Problem: Inferred result type of non-private member differs
126118
ProblemMatcher.make(ProblemKind.MissingTermMember, "scala.collection.convert.JavaCollectionWrappers.IterableWrapperTrait.iterator"),
127119
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.util.matching.Regex.MatchIterator.replacementData"),
128-
ProblemMatcher.make(ProblemKind.MissingTermMember, "scala.sys.process.ProcessBuilderImpl.*.createProcess"),
129-
ProblemMatcher.make(ProblemKind.IncompatibleTypeChange, "scala.collection.mutable.TreeMap.sortedMapFactory"),
130120

131121
// Problem: implicit class (method should not be final)
132122
ProblemMatcher.make(ProblemKind.FinalMember, "scala.collection.convert.*.*"),

0 commit comments

Comments
 (0)