From b8951d1aff080e66c7547ac46a3aa195ad47b27e Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Wed, 21 Aug 2019 16:26:34 +0200 Subject: [PATCH 1/4] Ignore when first constructor parameter is dropped from Signature Before Scala 2.12.9/2.13.1, the `Signature` attribute of an inner class constructor would also contain the first, synthetic parameter. This was fixed in https://github.com/scala/scala/pull/7975, which course leads to mima warnings about inconsistent signatures. Since the descriptor remains the same, and the previous signature was wrong anyway (so anything relying on it can not have worked in the first place) this specific change can be safely ignored Tested with Akka HTTP, https://github.com/akka/akka-http/pull/2655#issuecomment-523456509 --- .../tools/mima/lib/analyze/method/MethodChecker.scala | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala b/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala index d6590bf6..d8318a26 100644 --- a/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala +++ b/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala @@ -35,9 +35,10 @@ private[analyze] abstract class BaseMethodChecker extends Checker[MethodInfo, Cl } private def methSigCheck(oldmeth: MethodInfo, newMeth: MethodInfo): Boolean = { - oldmeth.signature == newMeth.signature || ( - newMeth.bytecodeName == MemberInfo.ConstructorName && newMeth.signature.isEmpty - ) + oldmeth.signature == newMeth.signature || + (newMeth.bytecodeName == MemberInfo.ConstructorName && + (newMeth.signature.isEmpty || (oldmeth.signature.endsWith(newMeth.signature.drop(2)))) + ) } private def uniques(methods: List[MethodInfo]): List[MethodInfo] = From 3c5b29953be842c16f67ed80608bdb35fa56e05d Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Wed, 21 Aug 2019 17:16:02 +0200 Subject: [PATCH 2/4] Break out check to object and add test --- .../lib/analyze/method/MethodChecker.scala | 22 +++++++----- .../analyze/method/MethodCheckerSpec.scala | 36 +++++++++++++++++++ 2 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 core/src/test/scala/com/typesafe/tools/mima/lib/analyze/method/MethodCheckerSpec.scala diff --git a/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala b/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala index d8318a26..5207ee84 100644 --- a/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala +++ b/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala @@ -5,6 +5,7 @@ import com.typesafe.tools.mima.lib.analyze.Checker private[analyze] abstract class BaseMethodChecker extends Checker[MethodInfo, ClassInfo] { import MethodRules._ + import BaseMethodChecker._ protected val rules = Seq(AccessModifier, FinalModifier, AbstractModifier, JavaStatic) @@ -13,7 +14,7 @@ private[analyze] abstract class BaseMethodChecker extends Checker[MethodInfo, Cl if (meths.isEmpty) Some(DirectMissingMethodProblem(method)) else { - meths.find(m => m.descriptor == method.descriptor && methSigCheck(method, m)) match { + meths.find(newMethod => hasMatchingDescriptorAndSignature(method, newMethod)) match { case Some(found) => checkRules(rules)(method, found) case None => val filtered = meths.filter(method.matchesType(_)) @@ -34,16 +35,21 @@ private[analyze] abstract class BaseMethodChecker extends Checker[MethodInfo, Cl } } - private def methSigCheck(oldmeth: MethodInfo, newMeth: MethodInfo): Boolean = { - oldmeth.signature == newMeth.signature || - (newMeth.bytecodeName == MemberInfo.ConstructorName && - (newMeth.signature.isEmpty || (oldmeth.signature.endsWith(newMeth.signature.drop(2)))) - ) - } - private def uniques(methods: List[MethodInfo]): List[MethodInfo] = methods.groupBy(_.parametersDesc).values.map(_.head).toList } +private[analyze] object BaseMethodChecker { + def hasMatchingDescriptorAndSignature(oldMethod: MethodInfo, newMethod: MethodInfo): Boolean = + oldMethod.descriptor == newMethod.descriptor && hasMatchingSignature(oldMethod.signature, newMethod.signature, newMethod.bytecodeName) + + // Assumes it is already checked that the descriptors match + def hasMatchingSignature(oldSignature: String, newSignature: String, bytecodeName: String): Boolean = + oldSignature == newSignature || + // Special case for https://github.com/scala/scala/pull/7975: + (bytecodeName == MemberInfo.ConstructorName && + (newSignature.isEmpty || (oldSignature.endsWith(newSignature.drop(2)))) + ) +} private[analyze] class ClassMethodChecker extends BaseMethodChecker { def check(method: MethodInfo, inclazz: ClassInfo): Option[Problem] = { diff --git a/core/src/test/scala/com/typesafe/tools/mima/lib/analyze/method/MethodCheckerSpec.scala b/core/src/test/scala/com/typesafe/tools/mima/lib/analyze/method/MethodCheckerSpec.scala new file mode 100644 index 00000000..49767563 --- /dev/null +++ b/core/src/test/scala/com/typesafe/tools/mima/lib/analyze/method/MethodCheckerSpec.scala @@ -0,0 +1,36 @@ +package com.typesafe.tools.mima.lib.analyze.method + +import com.typesafe.tools.mima.core.MemberInfo + +import org.scalatest.Matchers +import org.scalatest.WordSpec + +final class MethodCheckerSpec extends WordSpec with Matchers { + "The method checker" should { + val `signatureOn2.12.8` = + "(Lakka/http/impl/engine/server/GracefulTerminatorStage;Lscala/concurrent/Promise;>;>;)V" + val `signatureOn2.12.9` = + "(Lscala/concurrent/Promise;>;>;)V" + + "allow dropping the first parameter of the Signature attribute of a constructor" in { + // Assuming the descriptor is the same, dropping the first + // parameter of the Signature attribute can only be explained by + // going from a Scala version that does not have the fix in + // https://github.com/scala/scala/pull/7975 (2.12.8, 2.13.0) to + // one that does + BaseMethodChecker.hasMatchingSignature( + `signatureOn2.12.8`, + `signatureOn2.12.9`, + MemberInfo.ConstructorName + ) should be(true) + } + + "reject adding the first parameter of the Signature attribute of a constructor back" in { + BaseMethodChecker.hasMatchingSignature( + `signatureOn2.12.9`, + `signatureOn2.12.8`, + MemberInfo.ConstructorName + ) should be(false) + } + } +} From bf3c6790be616072578ba2a3f647a68fad88f1b0 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Wed, 21 Aug 2019 17:30:38 +0200 Subject: [PATCH 3/4] Revert no-longer-expected problems from #369 --- .../src/it/scala-library-2-12/problems.txt | 116 ------------------ .../src/it/scala-reflect-2-12/problems.txt | 14 --- 2 files changed, 130 deletions(-) diff --git a/functional-tests/src/it/scala-library-2-12/problems.txt b/functional-tests/src/it/scala-library-2-12/problems.txt index 7b5ae8f9..e69de29b 100644 --- a/functional-tests/src/it/scala-library-2-12/problems.txt +++ b/functional-tests/src/it/scala-library-2-12/problems.txt @@ -1,116 +0,0 @@ -method this(scala.Option,scala.Function1)Unit in class scala.Option#WithFilter has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/Option;Lscala/Function1;)V -method this(scala.math.Fractional,java.lang.Object)Unit in class scala.math.Fractional#FractionalOps has a different signature in new version, where it is (TT;)V rather than (Lscala/math/Fractional;TT;)V -method this(scala.math.Integral,java.lang.Object)Unit in class scala.math.Integral#IntegralOps has a different signature in new version, where it is (TT;)V rather than (Lscala/math/Integral;TT;)V -method this(scala.math.Numeric,java.lang.Object)Unit in class scala.math.Numeric#Ops has a different signature in new version, where it is (TT;)V rather than (Lscala/math/Numeric;TT;)V -method this(scala.math.Ordering,java.lang.Object)Unit in class scala.math.Ordering#Ops has a different signature in new version, where it is (TT;)V rather than (Lscala/math/Ordering;TT;)V -method this(scala.concurrent.BatchingExecutor,scala.collection.immutable.List)Unit in class scala.concurrent.BatchingExecutor#Batch has a different signature in new version, where it is (Lscala/collection/immutable/List;)V rather than (Lscala/concurrent/BatchingExecutor;Lscala/collection/immutable/List;)V -method this(scala.collection.MapLike,scala.Function1)Unit in class scala.collection.MapLike#MappedValues has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/collection/MapLike;Lscala/Function1;)V -method this(scala.collection.SetLike,scala.collection.IndexedSeq,Int)Unit in class scala.collection.SetLike#SubsetsItr has a different signature in new version, where it is (Lscala/collection/IndexedSeq;I)V rather than (Lscala/collection/SetLike;Lscala/collection/IndexedSeq;I)V -method this(scala.collection.MapLike,scala.Function1)Unit in class scala.collection.MapLike#FilteredKeys has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/collection/MapLike;Lscala/Function1;)V -method this(scala.collection.TraversableLike,scala.Function1)Unit in class scala.collection.TraversableLike#WithFilter has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/collection/TraversableLike;Lscala/Function1;)V -method this(scala.collection.Iterator,scala.collection.Iterator,Int,Int)Unit in class scala.collection.Iterator#GroupedIterator has a different signature in new version, where it is (Lscala/collection/Iterator;II)V rather than (Lscala/collection/Iterator;Lscala/collection/Iterator;II)V -method this(scala.collection.immutable.ListSet,java.lang.Object)Unit in class scala.collection.immutable.ListSet#Node has a different signature in new version, where it is (TA;)V rather than (Lscala/collection/immutable/ListSet;TA;)V -method this(scala.collection.immutable.StreamIterator,scala.Function0)Unit in class scala.collection.immutable.StreamIterator#LazyCell has a different signature in new version, where it is (Lscala/Function0;>;)V rather than (Lscala/collection/immutable/StreamIterator;Lscala/Function0;>;)V -method this(scala.collection.immutable.TrieIterator,Array[scala.collection.immutable.Iterable])Unit in class scala.collection.immutable.TrieIterator#DupIterator has a different signature in new version, where it is ([Lscala/collection/immutable/Iterable;)V rather than (Lscala/collection/immutable/TrieIterator;[Lscala/collection/immutable/Iterable;)V -method this(scala.collection.immutable.ListMap,java.lang.Object,java.lang.Object)Unit in class scala.collection.immutable.ListMap#Node has a different signature in new version, where it is (TA;TB1;)V rather than (Lscala/collection/immutable/ListMap;TA;TB1;)V -method this(scala.collection.convert.Wrappers,scala.collection.Iterable)Unit in class scala.collection.convert.Wrappers#IterableWrapper has a different signature in new version, where it is (Lscala/collection/Iterable;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/Iterable;)V -method this(scala.collection.convert.Wrappers,java.util.Iterator)Unit in class scala.collection.convert.Wrappers#JIteratorWrapper has a different signature in new version, where it is (Ljava/util/Iterator;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/Iterator;)V -method this(scala.collection.convert.Wrappers,scala.collection.Set)Unit in class scala.collection.convert.Wrappers#SetWrapper has a different signature in new version, where it is (Lscala/collection/Set;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/Set;)V -method this(scala.collection.convert.Wrappers,java.lang.Iterable)Unit in class scala.collection.convert.Wrappers#JIterableWrapper has a different signature in new version, where it is (Ljava/lang/Iterable;)V rather than (Lscala/collection/convert/Wrappers;Ljava/lang/Iterable;)V -method this(scala.collection.convert.Wrappers,scala.collection.Seq)Unit in class scala.collection.convert.Wrappers#SeqWrapper has a different signature in new version, where it is (Lscala/collection/Seq;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/Seq;)V -method this(scala.collection.convert.Wrappers,scala.collection.mutable.Buffer)Unit in class scala.collection.convert.Wrappers#MutableBufferWrapper has a different signature in new version, where it is (Lscala/collection/mutable/Buffer;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/mutable/Buffer;)V -method this(scala.collection.convert.Wrappers,java.util.Set)Unit in class scala.collection.convert.Wrappers#JSetWrapper has a different signature in new version, where it is (Ljava/util/Set;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/Set;)V -method this(scala.collection.convert.Wrappers,java.util.List)Unit in class scala.collection.convert.Wrappers#JListWrapper has a different signature in new version, where it is (Ljava/util/List;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/List;)V -method this(scala.collection.convert.Wrappers,java.util.concurrent.ConcurrentMap)Unit in class scala.collection.convert.Wrappers#JConcurrentMapWrapper has a different signature in new version, where it is (Ljava/util/concurrent/ConcurrentMap;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/concurrent/ConcurrentMap;)V -method this(scala.collection.convert.Wrappers,scala.collection.mutable.Map)Unit in class scala.collection.convert.Wrappers#MutableMapWrapper has a different signature in new version, where it is (Lscala/collection/mutable/Map;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/mutable/Map;)V -method this(scala.collection.convert.Wrappers,java.util.Map)Unit in class scala.collection.convert.Wrappers#JMapWrapper has a different signature in new version, where it is (Ljava/util/Map;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/Map;)V -method this(scala.collection.convert.Wrappers,scala.collection.mutable.Seq)Unit in class scala.collection.convert.Wrappers#MutableSeqWrapper has a different signature in new version, where it is (Lscala/collection/mutable/Seq;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/mutable/Seq;)V -method this(scala.collection.convert.Wrappers,java.util.Dictionary)Unit in class scala.collection.convert.Wrappers#JDictionaryWrapper has a different signature in new version, where it is (Ljava/util/Dictionary;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/Dictionary;)V -method this(scala.collection.convert.Wrappers,java.util.Enumeration)Unit in class scala.collection.convert.Wrappers#JEnumerationWrapper has a different signature in new version, where it is (Ljava/util/Enumeration;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/Enumeration;)V -method this(scala.collection.convert.Wrappers,scala.collection.Map)Unit in class scala.collection.convert.Wrappers#MapWrapper has a different signature in new version, where it is (Lscala/collection/Map;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/Map;)V -method this(scala.collection.convert.Wrappers,scala.collection.concurrent.Map)Unit in class scala.collection.convert.Wrappers#ConcurrentMapWrapper has a different signature in new version, where it is (Lscala/collection/concurrent/Map;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/concurrent/Map;)V -method this(scala.collection.convert.Wrappers,scala.collection.Iterator)Unit in class scala.collection.convert.Wrappers#IteratorWrapper has a different signature in new version, where it is (Lscala/collection/Iterator;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/Iterator;)V -method this(scala.collection.convert.Wrappers,scala.collection.Iterator)Unit in class scala.collection.convert.Wrappers#ToIteratorWrapper has a different signature in new version, where it is (Lscala/collection/Iterator;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/Iterator;)V -method this(scala.collection.convert.Wrappers,scala.collection.mutable.Set)Unit in class scala.collection.convert.Wrappers#MutableSetWrapper has a different signature in new version, where it is (Lscala/collection/mutable/Set;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/mutable/Set;)V -method this(scala.collection.convert.Wrappers,scala.collection.mutable.Map)Unit in class scala.collection.convert.Wrappers#DictionaryWrapper has a different signature in new version, where it is (Lscala/collection/mutable/Map;)V rather than (Lscala/collection/convert/Wrappers;Lscala/collection/mutable/Map;)V -method this(scala.collection.convert.Wrappers,java.util.Collection)Unit in class scala.collection.convert.Wrappers#JCollectionWrapper has a different signature in new version, where it is (Ljava/util/Collection;)V rather than (Lscala/collection/convert/Wrappers;Ljava/util/Collection;)V -method this(scala.collection.generic.OrderedTraversableFactory,scala.math.Ordering)Unit in class scala.collection.generic.OrderedTraversableFactory#GenericCanBuildFrom has a different signature in new version, where it is (Lscala/math/Ordering;)V rather than (Lscala/collection/generic/OrderedTraversableFactory;Lscala/math/Ordering;)V -method this(scala.collection.generic.ClassTagTraversableFactory,scala.reflect.ClassTag)Unit in class scala.collection.generic.ClassTagTraversableFactory#GenericCanBuildFrom has a different signature in new version, where it is (Lscala/reflect/ClassTag;)V rather than (Lscala/collection/generic/ClassTagTraversableFactory;Lscala/reflect/ClassTag;)V -method this(scala.collection.generic.SortedMapFactory,scala.math.Ordering)Unit in class scala.collection.generic.SortedMapFactory#SortedMapCanBuildFrom has a different signature in new version, where it is (Lscala/math/Ordering;)V rather than (Lscala/collection/generic/SortedMapFactory;Lscala/math/Ordering;)V -method this(scala.collection.generic.SortedSetFactory,scala.math.Ordering)Unit in class scala.collection.generic.SortedSetFactory#SortedSetCanBuildFrom has a different signature in new version, where it is (Lscala/math/Ordering;)V rather than (Lscala/collection/generic/SortedSetFactory;Lscala/math/Ordering;)V -method this(scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks,scala.collection.parallel.Task)Unit in class scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks#WrappedTask has a different signature in new version, where it is (Lscala/collection/parallel/Task;)V rather than (Lscala/collection/parallel/AdaptiveWorkStealingForkJoinTasks;Lscala/collection/parallel/Task;)V -method this(scala.collection.parallel.IterableSplitter,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.IterableSplitter#Appended has a different signature in new version, where it is (TPI;)V rather than (Lscala/collection/parallel/IterableSplitter;TPI;)V -method this(scala.collection.parallel.IterableSplitter,scala.collection.parallel.SeqSplitter,java.lang.Object,java.lang.Object)Unit in class scala.collection.parallel.IterableSplitter#ZippedAll has a different signature in new version, where it is (Lscala/collection/parallel/SeqSplitter;TU;TS;)V rather than (Lscala/collection/parallel/IterableSplitter;Lscala/collection/parallel/SeqSplitter;TU;TS;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParIterableLike#Zip has a different signature in new version, where it is (Lscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/IterableSplitter;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/IterableSplitter;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Map has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.math.Ordering,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Min has a different signature in new version, where it is (Lscala/math/Ordering;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/math/Ordering;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.SeqSplitter,scala.Function1)Unit in class scala.collection.parallel.SeqSplitter#Mapped has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/collection/parallel/SeqSplitter;Lscala/Function1;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function0,scala.Function2,scala.Function2,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Aggregate has a different signature in new version, where it is (Lscala/Function0;Lscala/Function2;Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function0;Lscala/Function2;Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,Int,Int,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Slice has a different signature in new version, where it is (IILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;IILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function2,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Reduce has a different signature in new version, where it is (Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.math.Ordering,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Max has a different signature in new version, where it is (Lscala/math/Ordering;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/math/Ordering;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParSeqLike,scala.collection.parallel.SeqSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#SameElements has a different signature in new version, where it is (Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Filter has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,Int,Int,java.lang.Object,scala.Function2,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#CreateScanTree has a different signature in new version, where it is (IITU;Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;IITU;Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#ToParCollection has a different signature in new version, where it is (Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Count has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.IterableSplitter,scala.Function2,Int,Int,scala.Option,java.lang.Object)Unit in class scala.collection.parallel.ParIterableLike#ScanLeaf has a different signature in new version, where it is (Lscala/collection/parallel/IterableSplitter;Lscala/Function2;IILscala/Option.ScanLeaf;>;TU;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/IterableSplitter;Lscala/Function2;IILscala/Option.ScanLeaf;>;TU;)V -method this(scala.collection.parallel.ParIterableLike,Int,scala.collection.parallel.CombinerFactory,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#SplitAt has a different signature in new version, where it is (ILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;ILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.SeqSplitter,scala.collection.parallel.SeqSplitter,java.lang.Object,java.lang.Object)Unit in class scala.collection.parallel.SeqSplitter#ZippedAll has a different signature in new version, where it is (Lscala/collection/parallel/SeqSplitter;TU;TS;)V rather than (Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;TU;TS;)V -method this(scala.collection.parallel.ParSeqLike,scala.Function1,scala.Function0,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#ReverseMap has a different signature in new version, where it is (Lscala/Function1;Lscala/Function0;>;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;Lscala/Function1;Lscala/Function0;>;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Forall has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Copy has a different signature in new version, where it is (Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,Int,scala.Function1,scala.collection.parallel.CombinerFactory,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Span has a different signature in new version, where it is (ILscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;ILscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.PartialFunction,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Collect has a different signature in new version, where it is (Lscala/PartialFunction;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/PartialFunction;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParSeqLike,Int,java.lang.Object,scala.collection.parallel.CombinerFactory,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#Updated has a different signature in new version, where it is (ITU;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;ITU;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Exists has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.CombinerFactory,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Partition has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.ParIterableLike#ScanTree,java.lang.Object,scala.Function2,scala.collection.parallel.CombinerFactory)Unit in class scala.collection.parallel.ParIterableLike#FromScanTree has a different signature in new version, where it is (Lscala/collection/parallel/ParIterableLike.ScanTree;TU;Lscala/Function2;Lscala/collection/parallel/CombinerFactory;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/ParIterableLike.ScanTree;TU;Lscala/Function2;Lscala/collection/parallel/CombinerFactory;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Foreach has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.ParIterableLike#StrictSplitterCheckTask,scala.collection.parallel.ParIterableLike#StrictSplitterCheckTask)Unit in class scala.collection.parallel.ParIterableLike#SeqComposite has a different signature in new version, where it is (TFirst;TSecond;)V rather than (Lscala/collection/parallel/ParIterableLike;TFirst;TSecond;)V -method this(scala.collection.parallel.ParSeqLike,scala.Function0,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#Reverse has a different signature in new version, where it is (Lscala/Function0;>;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;Lscala/Function0;>;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,Int,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Drop has a different signature in new version, where it is (ILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;ILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,Int,scala.Function1,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#TakeWhile has a different signature in new version, where it is (ILscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;ILscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,Int,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Take has a different signature in new version, where it is (ILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;ILscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.ParIterableLike#StrictSplitterCheckTask)Unit in class scala.collection.parallel.ParIterableLike#ResultMapping has a different signature in new version, where it is (Lscala/collection/parallel/ParIterableLike.StrictSplitterCheckTask;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/ParIterableLike.StrictSplitterCheckTask;)V -method this(scala.collection.parallel.AdaptiveWorkStealingThreadPoolTasks,scala.collection.parallel.Task)Unit in class scala.collection.parallel.AdaptiveWorkStealingThreadPoolTasks#WrappedTask has a different signature in new version, where it is (Lscala/collection/parallel/Task;)V rather than (Lscala/collection/parallel/AdaptiveWorkStealingThreadPoolTasks;Lscala/collection/parallel/Task;)V -method this(scala.collection.parallel.ParSeqLike,scala.Function2,scala.collection.parallel.SeqSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#Corresponds has a different signature in new version, where it is (Lscala/Function2;Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;Lscala/Function2;Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParSeqLike,Int,scala.collection.parallel.CombinerFactory,scala.collection.parallel.SeqSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#Zip has a different signature in new version, where it is (ILscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;ILscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,Int,Int,java.lang.Object,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#CopyToArray has a different signature in new version, where it is (IILjava/lang/Object;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;IILjava/lang/Object;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.Function0,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#GroupBy has a different signature in new version, where it is (Lscala/Function1;Lscala/Function0;>;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/Function0;>;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.ParIterableLike#ScanTree,scala.collection.parallel.ParIterableLike#ScanTree)Unit in class scala.collection.parallel.ParIterableLike#ScanNode has a different signature in new version, where it is (Lscala/collection/parallel/ParIterableLike.ScanTree;Lscala/collection/parallel/ParIterableLike.ScanTree;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/ParIterableLike.ScanTree;Lscala/collection/parallel/ParIterableLike.ScanTree;)V -method this(scala.collection.parallel.ParIterableLike,scala.math.Numeric,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Product has a different signature in new version, where it is (Lscala/math/Numeric;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/math/Numeric;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.ParIterableLike#StrictSplitterCheckTask,scala.collection.parallel.ParIterableLike#StrictSplitterCheckTask)Unit in class scala.collection.parallel.ParIterableLike#ParComposite has a different signature in new version, where it is (TFirst;TSecond;)V rather than (Lscala/collection/parallel/ParIterableLike;TFirst;TSecond;)V -method this(scala.collection.parallel.ParIterableLike,java.lang.Object,scala.Function2,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Fold has a different signature in new version, where it is (TU;Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;TU;Lscala/Function2;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParSeqLike,scala.Function1,Int,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#SegmentLength has a different signature in new version, where it is (Lscala/Function1;ILscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;Lscala/Function1;ILscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter,scala.Predef#<:<)Unit in class scala.collection.parallel.ParIterableLike#ToParMap has a different signature in new version, where it is (Lscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/IterableSplitter;Lscala/Predef$$less$colon$less;>;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/IterableSplitter;Lscala/Predef$$less$colon$less;>;)V -method this(scala.collection.parallel.ParIterableLike,scala.math.Numeric,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Sum has a different signature in new version, where it is (Lscala/math/Numeric;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/math/Numeric;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.SeqSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.SeqSplitter#Appended has a different signature in new version, where it is (TPI;)V rather than (Lscala/collection/parallel/SeqSplitter;TPI;)V -method this(scala.collection.parallel.ParSeqLike,scala.Function1,Int,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#LastIndexWhere has a different signature in new version, where it is (Lscala/Function1;ILscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;Lscala/Function1;ILscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.collection.parallel.ParIterableLike#StrictSplitterCheckTask,scala.collection.parallel.ParIterableLike#StrictSplitterCheckTask)Unit in class scala.collection.parallel.ParIterableLike#Composite has a different signature in new version, where it is (TFirst;TSecond;)V rather than (Lscala/collection/parallel/ParIterableLike;TFirst;TSecond;)V -method this(scala.collection.parallel.ParSeqLike,scala.Function1,Int,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParSeqLike#IndexWhere has a different signature in new version, where it is (Lscala/Function1;ILscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParSeqLike;Lscala/Function1;ILscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.IterableSplitter,scala.Function1)Unit in class scala.collection.parallel.IterableSplitter#Mapped has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/collection/parallel/IterableSplitter;Lscala/Function1;)V -method this(scala.collection.parallel.ParIterableLike,Int,java.lang.Object,java.lang.Object,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.ParIterableLike#ZipAll has a different signature in new version, where it is (ITU;TS;Lscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/IterableSplitter;Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;ITU;TS;Lscala/collection/parallel/CombinerFactory;TThat;>;Lscala/collection/parallel/IterableSplitter;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#FlatMap has a different signature in new version, where it is (Lscala/Function1;>;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;>;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#Find has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.IterableSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.IterableSplitter#Zipped has a different signature in new version, where it is (Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/IterableSplitter;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.SeqSplitter,Int,scala.collection.parallel.SeqSplitter,Int)Unit in class scala.collection.parallel.SeqSplitter#Patched has a different signature in new version, where it is (ILscala/collection/parallel/SeqSplitter;I)V rather than (Lscala/collection/parallel/SeqSplitter;ILscala/collection/parallel/SeqSplitter;I)V -method this(scala.collection.parallel.SeqSplitter,scala.collection.parallel.SeqSplitter)Unit in class scala.collection.parallel.SeqSplitter#Zipped has a different signature in new version, where it is (Lscala/collection/parallel/SeqSplitter;)V rather than (Lscala/collection/parallel/SeqSplitter;Lscala/collection/parallel/SeqSplitter;)V -method this(scala.collection.parallel.ParIterableLike,scala.Function1,scala.collection.parallel.CombinerFactory,scala.collection.parallel.IterableSplitter)Unit in class scala.collection.parallel.ParIterableLike#FilterNot has a different signature in new version, where it is (Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V rather than (Lscala/collection/parallel/ParIterableLike;Lscala/Function1;Lscala/collection/parallel/CombinerFactory;Lscala/collection/parallel/IterableSplitter;)V -method this(scala.collection.parallel.immutable.Repetition,Int,Int,java.lang.Object)Unit in class scala.collection.parallel.immutable.Repetition#ParIterator has a different signature in new version, where it is (IITT;)V rather than (Lscala/collection/parallel/immutable/Repetition;IITT;)V -method this(scala.collection.parallel.immutable.HashMapCombiner,Array[scala.collection.mutable.UnrolledBuffer#Unrolled],Array[scala.collection.immutable.HashMap],Int,Int)Unit in class scala.collection.parallel.immutable.HashMapCombiner#CreateTrie has a different signature in new version, where it is ([Lscala/collection/mutable/UnrolledBuffer$Unrolled;>;[Lscala/collection/immutable/HashMap;II)V rather than (Lscala/collection/parallel/immutable/HashMapCombiner;[Lscala/collection/mutable/UnrolledBuffer$Unrolled;>;[Lscala/collection/immutable/HashMap;II)V -method this(scala.collection.parallel.immutable.ParHashMap,scala.collection.Iterator,Int)Unit in class scala.collection.parallel.immutable.ParHashMap#ParHashMapIterator has a different signature in new version, where it is (Lscala/collection/Iterator;>;I)V rather than (Lscala/collection/parallel/immutable/ParHashMap;Lscala/collection/Iterator;>;I)V -method this(scala.collection.parallel.immutable.HashMapCombiner,scala.Function0,Array[scala.collection.mutable.UnrolledBuffer#Unrolled],Array[scala.collection.immutable.HashMap],Int,Int)Unit in class scala.collection.parallel.immutable.HashMapCombiner#CreateGroupedTrie has a different signature in new version, where it is (Lscala/Function0;>;[Lscala/collection/mutable/UnrolledBuffer$Unrolled;>;[Lscala/collection/immutable/HashMap;II)V rather than (Lscala/collection/parallel/immutable/HashMapCombiner;Lscala/Function0;>;[Lscala/collection/mutable/UnrolledBuffer$Unrolled;>;[Lscala/collection/immutable/HashMap;II)V -method this(scala.collection.parallel.immutable.HashSetCombiner,Array[scala.collection.mutable.UnrolledBuffer#Unrolled],Array[scala.collection.immutable.HashSet],Int,Int)Unit in class scala.collection.parallel.immutable.HashSetCombiner#CreateTrie has a different signature in new version, where it is ([Lscala/collection/mutable/UnrolledBuffer$Unrolled;[Lscala/collection/immutable/HashSet;II)V rather than (Lscala/collection/parallel/immutable/HashSetCombiner;[Lscala/collection/mutable/UnrolledBuffer$Unrolled;[Lscala/collection/immutable/HashSet;II)V -method this(scala.collection.parallel.immutable.ParHashSet,scala.collection.Iterator,Int)Unit in class scala.collection.parallel.immutable.ParHashSet#ParHashSetIterator has a different signature in new version, where it is (Lscala/collection/Iterator;I)V rather than (Lscala/collection/parallel/immutable/ParHashSet;Lscala/collection/Iterator;I)V -method this(scala.collection.parallel.mutable.ParArray,scala.collection.parallel.ParIterableLike#ScanTree,java.lang.Object,scala.Function2,Array[java.lang.Object])Unit in class scala.collection.parallel.mutable.ParArray#ScanToArray has a different signature in new version, where it is (Lscala/collection/parallel/ParIterableLike;Lscala/collection/mutable/ArraySeq;>.ScanTree;TU;Lscala/Function2;[Ljava/lang/Object;)V rather than (Lscala/collection/parallel/mutable/ParArray;Lscala/collection/parallel/ParIterableLike;Lscala/collection/mutable/ArraySeq;>.ScanTree;TU;Lscala/Function2;[Ljava/lang/Object;)V -method this(scala.collection.parallel.mutable.ParArray,scala.Function1,Array[java.lang.Object],Int,Int)Unit in class scala.collection.parallel.mutable.ParArray#Map has a different signature in new version, where it is (Lscala/Function1;[Ljava/lang/Object;II)V rather than (Lscala/collection/parallel/mutable/ParArray;Lscala/Function1;[Ljava/lang/Object;II)V -method this(scala.collection.parallel.mutable.ParHashTable,Int,Int,Int,scala.collection.mutable.HashEntry)Unit in class scala.collection.parallel.mutable.ParHashTable#EntryIterator has a different signature in new version, where it is (IIITEntry;)V rather than (Lscala/collection/parallel/mutable/ParHashTable;IIITEntry;)V -method this(scala.collection.parallel.mutable.ParHashSetCombiner,Array[scala.collection.mutable.UnrolledBuffer],scala.collection.parallel.mutable.ParHashSetCombiner#AddingFlatHashTable,Int,Int)Unit in class scala.collection.parallel.mutable.ParHashSetCombiner#FillBlocks has a different signature in new version, where it is ([Lscala/collection/mutable/UnrolledBuffer;Lscala/collection/parallel/mutable/ParHashSetCombiner.AddingFlatHashTable;II)V rather than (Lscala/collection/parallel/mutable/ParHashSetCombiner;[Lscala/collection/mutable/UnrolledBuffer;Lscala/collection/parallel/mutable/ParHashSetCombiner.AddingFlatHashTable;II)V -method this(scala.collection.parallel.mutable.ParHashMap,Int,Int,Int,scala.collection.mutable.DefaultEntry)Unit in class scala.collection.parallel.mutable.ParHashMap#ParHashMapIterator has a different signature in new version, where it is (IIILscala/collection/mutable/DefaultEntry;)V rather than (Lscala/collection/parallel/mutable/ParHashMap;IIILscala/collection/mutable/DefaultEntry;)V -method this(scala.collection.parallel.mutable.ParHashMapCombiner,Array[scala.collection.mutable.UnrolledBuffer#Unrolled],scala.collection.parallel.mutable.ParHashMapCombiner#AddingHashTable,Int,Int)Unit in class scala.collection.parallel.mutable.ParHashMapCombiner#FillBlocks has a different signature in new version, where it is ([Lscala/collection/mutable/UnrolledBuffer$Unrolled;>;Lscala/collection/parallel/mutable/ParHashMapCombiner.AddingHashTable;II)V rather than (Lscala/collection/parallel/mutable/ParHashMapCombiner;[Lscala/collection/mutable/UnrolledBuffer$Unrolled;>;Lscala/collection/parallel/mutable/ParHashMapCombiner.AddingHashTable;II)V -method this(scala.collection.mutable.LinkedHashMap,scala.Function1)Unit in class scala.collection.mutable.LinkedHashMap#FilteredKeys has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/collection/mutable/LinkedHashMap;Lscala/Function1;)V -method this(scala.collection.mutable.TreeSet,scala.Option,scala.Option)Unit in class scala.collection.mutable.TreeSet#TreeSetView has a different signature in new version, where it is (Lscala/Option;Lscala/Option;)V rather than (Lscala/collection/mutable/TreeSet;Lscala/Option;Lscala/Option;)V -method this(scala.collection.mutable.TreeMap,scala.Option,scala.Option)Unit in class scala.collection.mutable.TreeMap#TreeMapView has a different signature in new version, where it is (Lscala/Option;Lscala/Option;)V rather than (Lscala/collection/mutable/TreeMap;Lscala/Option;Lscala/Option;)V -method this(scala.collection.mutable.LinkedHashMap,scala.Function1)Unit in class scala.collection.mutable.LinkedHashMap#MappedValues has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/collection/mutable/LinkedHashMap;Lscala/Function1;)V -method this(scala.util.Try,scala.Function1)Unit in class scala.util.Try#WithFilter has a different signature in new version, where it is (Lscala/Function1;)V rather than (Lscala/util/Try;Lscala/Function1;)V diff --git a/functional-tests/src/it/scala-reflect-2-12/problems.txt b/functional-tests/src/it/scala-reflect-2-12/problems.txt index 172296c3..e69de29b 100644 --- a/functional-tests/src/it/scala-reflect-2-12/problems.txt +++ b/functional-tests/src/it/scala-reflect-2-12/problems.txt @@ -1,14 +0,0 @@ -method this(scala.reflect.runtime.Settings,scala.collection.immutable.List)Unit in class scala.reflect.runtime.Settings#MultiStringSetting has a different signature in new version, where it is (Lscala/collection/immutable/List;)V rather than (Lscala/reflect/runtime/Settings;Lscala/collection/immutable/List;)V -method this(scala.reflect.runtime.SymbolTable,scala.Function0)Unit in class scala.reflect.runtime.ThreadLocalStorage#MyThreadLocalStorage has a different signature in new version, where it is (Lscala/Function0;)V rather than (Lscala/reflect/runtime/SymbolTable;Lscala/Function0;)V -method this(scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi,scala.reflect.api.Trees#TypeTreeApi)Unit in class scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi#MacroTypeTreeDecoratorApi has a different signature in new version, where it is (TT;)V rather than (Lscala/reflect/macros/Universe$MacroInternalApi$MacroDecoratorApi;TT;)V -method this(scala.reflect.macros.blackbox.Context,java.lang.Class,scala.collection.immutable.List)Unit in class scala.reflect.macros.Enclosures#EnclosureException has a different signature in new version, where it is (Ljava/lang/Class<*>;Lscala/collection/immutable/List;)V rather than (Lscala/reflect/macros/blackbox/Context;Ljava/lang/Class<*>;Lscala/collection/immutable/List;)V -method this(scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi,scala.reflect.api.Scopes#ScopeApi)Unit in class scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi#MacroScopeDecoratorApi has a different signature in new version, where it is (TT;)V rather than (Lscala/reflect/macros/Universe$MacroInternalApi$MacroDecoratorApi;TT;)V -method this(scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi,scala.reflect.api.Symbols#SymbolApi)Unit in class scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi#MacroSymbolDecoratorApi has a different signature in new version, where it is (TT;)V rather than (Lscala/reflect/macros/Universe$MacroInternalApi$MacroDecoratorApi;TT;)V -method this(scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi,scala.reflect.api.Trees#TreeApi)Unit in class scala.reflect.macros.Universe#MacroInternalApi#MacroDecoratorApi#MacroTreeDecoratorApi has a different signature in new version, where it is (TT;)V rather than (Lscala/reflect/macros/Universe$MacroInternalApi$MacroDecoratorApi;TT;)V -method this(scala.reflect.api.Internals#InternalApi#DecoratorApi,scala.reflect.api.Types#TypeApi)Unit in class scala.reflect.api.Internals#InternalApi#DecoratorApi#TypeDecoratorApi has a different signature in new version, where it is (TT;)V rather than (Lscala/reflect/api/Internals$InternalApi$DecoratorApi;TT;)V -method this(scala.reflect.api.Universe,scala.reflect.api.Types#TypeApi,scala.Function1)Unit in class scala.reflect.api.TypeTags#PredefTypeTag has a different signature in new version, where it is (Lscala/reflect/api/Types$TypeApi;Lscala/Function1;>;)V rather than (Lscala/reflect/api/Universe;Lscala/reflect/api/Types$TypeApi;Lscala/Function1;>;)V -method this(scala.reflect.api.Universe,scala.Function1)Unit in class scala.reflect.api.TypeTags#PredefTypeCreator has a different signature in new version, where it is (Lscala/Function1;>;)V rather than (Lscala/reflect/api/Universe;Lscala/Function1;>;)V -method this(scala.reflect.api.Universe,scala.Option)Unit in class scala.reflect.api.Printers#BooleanFlag has a different signature in new version, where it is (Lscala/Option;)V rather than (Lscala/reflect/api/Universe;Lscala/Option;)V -method this(scala.reflect.api.Internals#InternalApi#DecoratorApi,scala.reflect.api.Trees#TreeApi)Unit in class scala.reflect.api.Internals#InternalApi#DecoratorApi#TreeDecoratorApi has a different signature in new version, where it is (TT;)V rather than (Lscala/reflect/api/Internals$InternalApi$DecoratorApi;TT;)V -method this(scala.reflect.api.Internals#InternalApi#DecoratorApi,scala.reflect.api.Symbols#SymbolApi)Unit in class scala.reflect.api.Internals#InternalApi#DecoratorApi#SymbolDecoratorApi has a different signature in new version, where it is (TT;)V rather than (Lscala/reflect/api/Internals$InternalApi$DecoratorApi;TT;)V -method this(scala.reflect.api.Universe,scala.reflect.api.Mirror,scala.reflect.api.TreeCreator,scala.reflect.api.TypeTags#WeakTypeTag)Unit in class scala.reflect.api.Exprs#ExprImpl has a different signature in new version, where it is (Lscala/reflect/api/Mirror;Lscala/reflect/api/TreeCreator;Lscala/reflect/api/TypeTags$WeakTypeTag;)V rather than (Lscala/reflect/api/Universe;Lscala/reflect/api/Mirror;Lscala/reflect/api/TreeCreator;Lscala/reflect/api/TypeTags$WeakTypeTag;)V From 6eefdc7163d2da851141958284dd1cbf218fd0e6 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Wed, 21 Aug 2019 21:26:55 +0200 Subject: [PATCH 4/4] Drop a character less --- .../tools/mima/lib/analyze/method/MethodChecker.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala b/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala index 5207ee84..8e8a6b19 100644 --- a/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala +++ b/core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala @@ -47,7 +47,10 @@ private[analyze] object BaseMethodChecker { oldSignature == newSignature || // Special case for https://github.com/scala/scala/pull/7975: (bytecodeName == MemberInfo.ConstructorName && - (newSignature.isEmpty || (oldSignature.endsWith(newSignature.drop(2)))) + (newSignature.isEmpty || + // The dropped character is the leading '(' + oldSignature.endsWith(newSignature.tail) + ) ) }