summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bincompat-backward.whitelist.conf159
-rw-r--r--bincompat-forward.whitelist.conf359
-rw-r--r--build.xml42
3 files changed, 557 insertions, 3 deletions
diff --git a/bincompat-backward.whitelist.conf b/bincompat-backward.whitelist.conf
new file mode 100644
index 0000000000..07f459c922
--- /dev/null
+++ b/bincompat-backward.whitelist.conf
@@ -0,0 +1,159 @@
+filter {
+ problems=[
+ # Scala library
+ {
+ # can only be called from Stream::distinct, which cannot itself be inlined, so distinct is the only feasible call-site
+ matchName="scala.collection.immutable.Stream.scala$collection$immutable$Stream$$loop$4"
+ problemName=MissingMethodProblem
+ },
+ {
+ # can only be called from Stream::distinct, which cannot itself be inlined, so distinct is the only feasible call-site
+ matchName="scala.collection.immutable.Stream.scala$collection$immutable$Stream$$loop$5"
+ problemName=MissingMethodProblem
+ },
+ {
+ # private[scala]
+ matchName="scala.collection.immutable.ListSerializeStart$"
+ problemName=MissingClassProblem
+ },
+ {
+ # private[scala]
+ matchName="scala.collection.immutable.ListSerializeStart"
+ problemName=MissingClassProblem
+ },
+ {
+ # private nested class became private top-level class to fix SI-7018
+ matchName="scala.reflect.macros.Attachments$NonemptyAttachments"
+ problemName=MissingClassProblem
+ },
+
+ # scala.reflect.runtime
+ {
+ matchName="scala.reflect.runtime.JavaUniverse.createClassModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.JavaUniverse.initClassModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.createClassModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.initClassModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.initClassAndModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.initAndEnterClassAndModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
+ problemName=IncompatibleResultTypeProblem
+ },
+
+
+ # scala.reflect.internal
+ {
+ matchName="scala.reflect.internal.TreeInfo.scala$reflect$internal$TreeInfo$$isVarPatternDeep0$1"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.typeArguments"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.applyDepth"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.firstTypeArg"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.methPart"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.firstArgument"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Trees.DefDef"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.ExistentialsAndSkolems.deskolemizeTypeParams"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.deAlias"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.deskolemizeTypeParams"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.AnnotationInfos#Annotatable.addThrowsAnnotation"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.StdAttachments#Attachable.setAttachments"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types#TypeVar.scala$reflect$internal$Types$TypeVar$$addBound$1"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.AnnotationCheckers$AnnotationChecker"
+ problemName=IncompatibleTemplateDefProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.deAlias"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.inheritsJavaVarArgsMethod"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.nonTrivialMembers"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.isJavaVarargsAncestor"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.nestedMemberType"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.normalizeAliases"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Trees#ChangeOwnerTraverser.changeOwner"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.StdAttachments.SuppressMacroExpansionAttachment"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.util.Statistics#RelCounter.scala$reflect$internal$util$Statistics$RelCounter$$super$prefix"
+ problemName=MissingMethodProblem
+ }
+ ]
+}
diff --git a/bincompat-forward.whitelist.conf b/bincompat-forward.whitelist.conf
new file mode 100644
index 0000000000..28c8a33fa2
--- /dev/null
+++ b/bincompat-forward.whitelist.conf
@@ -0,0 +1,359 @@
+filter {
+ problems=[
+ # rework d526f8bd74 to duplicate tailImpl as a private method
+ {
+ matchName="scala.collection.mutable.MutableList.tailImpl"
+ problemName=MissingMethodProblem
+ },
+ {
+ # can only be called from Stream::distinct, which cannot itself be inlined, so distinct is the only feasible call-site
+ matchName="scala.collection.immutable.Stream.scala$collection$immutable$Stream$$loop$6"
+ problemName=MissingMethodProblem
+ },
+ {
+ # can only be called from Stream::distinct, which cannot itself be inlined, so distinct is the only feasible call-site
+ matchName="scala.collection.immutable.Stream.scala$collection$immutable$Stream$$loop$4"
+ problemName=MissingMethodProblem
+ },
+ {
+ # can only be called from Stream::distinct, which cannot itself be inlined, so distinct is the only feasible call-site
+ matchName="scala.collection.immutable.Stream.scala$collection$immutable$Stream$$loop$5"
+ problemName=MissingMethodProblem
+ },
+ # TODO: revert a557a97360: bridge method appeared because result is now Int but the super-method's result type erases to Object
+ {
+ matchName="scala.collection.immutable.Range.head"
+ problemName=IncompatibleResultTypeProblem
+ },
+ # TODO: revert 0b92073a38 2aa66bec86: SI-4664 [Make scala.util.Random Serializable] Add test case
+ {
+ matchName="scala.util.Random"
+ problemName=MissingTypesProblem
+ },
+ {
+ matchName="scala.util.Random$"
+ problemName=MissingTypesProblem
+ },
+ {
+ # private[concurrent]
+ matchName="scala.concurrent.BatchingExecutor$Batch"
+ problemName=MissingClassProblem
+ },
+ {
+ # private[concurrent]
+ matchName="scala.concurrent.BatchingExecutor"
+ problemName=MissingClassProblem
+ },
+ {
+ # private[concurrent]
+ matchName="scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask"
+ problemName=MissingClassProblem
+ },
+ {
+ # private[concurrent]
+ matchName="scala.concurrent.impl.ExecutionContextImpl.scala$concurrent$impl$ExecutionContextImpl$$uncaughtExceptionHandler"
+ problemName=MissingMethodProblem
+ },
+ {
+ # private nested class became private top-level class to fix SI-7018
+ matchName="scala.reflect.macros.NonemptyAttachments"
+ problemName=MissingClassProblem
+ },
+
+ # scala.reflect.runtime
+ {
+ matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
+ problemName=IncompatibleResultTypeProblem
+ },
+ {
+ matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala1"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.initClassAndModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.initAndEnterClassAndModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.createClassModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.SymbolLoaders.initClassModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.JavaUniverse"
+ problemName=MissingTypesProblem
+ },
+ {
+ matchName="scala.reflect.runtime.JavaUniverse.initClassAndModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.runtime.JavaUniverse.initAndEnterClassAndModule"
+ problemName=MissingMethodProblem
+ },
+
+ # scala.reflect.internal
+ {
+ matchName="scala.reflect.internal.Types#Type.dealiasWidenChain"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types#Type.dealiasWiden"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types#Type.addThrowsAnnotation"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types#TypeVar.scala$reflect$internal$Types$TypeVar$$unifySpecific$1"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types#SubstSymMap.mapTreeSymbols"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types#SubstSymMap.this"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.PrivateWithin"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo$Applied"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.AnnotationInfos#Annotatable.addThrowsAnnotation"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.inheritsJavaVarArgsMethod"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.nonTrivialMembers"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.isJavaVarargsAncestor"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.normalizeAliases"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.nestedMemberType"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Types.deAlias"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.ExistentialsAndSkolems.deskolemizeTypeParams"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.StdAttachments#Attachable.setAttachments"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.AnnotationInfos#AnnotationInfo.completeInfo"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Symbols#Symbol.isCompileTimeOnly"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Symbols#Symbol.addThrowsAnnotation"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Symbols#Symbol.toOption"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Symbols#Symbol.compileTimeOnlyMessage"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Symbols#Symbol.setAttachments"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Symbols#Symbol.addAnnotation"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.reflect.internal.Trees.DefDef"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Trees$TreeStackTraverser"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.Trees#ChangeOwnerTraverser.change"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.AnnotationCheckers$AnnotationChecker"
+ problemName=IncompatibleTemplateDefProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo$Applied$"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.Trees#Tree.setAttachments"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.StdNames#TermNames.DEFAULT_CASE"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.Applied"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.isWildcardStarType"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.isSyntheticDefaultCase"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.StripCast"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.dissectApplied"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.TreeInfo.stripCast"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable"
+ problemName=MissingTypesProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.StringContextStripMarginOps"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.inheritsJavaVarArgsMethod"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.assertCorrectThread"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.SuppressMacroExpansionAttachment"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.nonTrivialMembers"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.isJavaVarargsAncestor"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.normalizeAliases"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.DefDef"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.nestedMemberType"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.SymbolTable.importPrivateWithinFromJavaFlags"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.StdAttachments.SuppressMacroExpansionAttachment"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.ArrayModule_genericApply"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.allParameters"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.Predef_wrapArray"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.dropNullaryMethod"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.ArrayModule_apply"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.OptionModule"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.Option_apply"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.Definitions#DefinitionsClass.CompileTimeOnlyAttr"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.AnnotationInfos#LazyAnnotationInfo.completeInfo"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.internal.util.package"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.util.package$"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.util.StripMarginInterpolator"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.util.package$StringContextStripMarginOps"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.annotations.compileTimeOnly"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.internal.StdNames#TermNames.SelectFromTypeTree"
+ problemName=MissingMethodProblem
+ }
+ ]
+}
diff --git a/build.xml b/build.xml
index af577afbaa..df6fecb354 100644
--- a/build.xml
+++ b/build.xml
@@ -2656,11 +2656,11 @@ Binary compatibility testing
<mkdir dir="${bc-build.dir}"/>
<!-- Pull down MIMA -->
<artifact:dependencies pathId="mima.classpath">
- <dependency groupId="com.typesafe" artifactId="mima-reporter_2.9.2" version="0.1.4"/>
+ <dependency groupId="com.typesafe" artifactId="mima-reporter_2.9.2" version="0.1.5-SNAPSHOT"/>
</artifact:dependencies>
<artifact:dependencies pathId="old.bc.classpath">
- <dependency groupId="org.scala-lang" artifactId="scala-library" version="2.10.0-RC2"/>
- <dependency groupId="org.scala-lang" artifactId="scala-reflect" version="2.10.0-RC2"/>
+ <dependency groupId="org.scala-lang" artifactId="scala-library" version="2.10.0"/>
+ <dependency groupId="org.scala-lang" artifactId="scala-reflect" version="2.10.0"/>
</artifact:dependencies>
</target>
@@ -2673,6 +2673,9 @@ Binary compatibility testing
<arg value="${org.scala-lang:scala-library:jar}"/>
<arg value="--curr"/>
<arg value="${build-pack.dir}/lib/scala-library.jar"/>
+ <arg value="--filters"/>
+ <arg value="${basedir}/bincompat-backward.whitelist.conf"/>
+ <arg value="--generate-filters"/>
<classpath>
<path refid="mima.classpath"/>
</classpath>
@@ -2685,6 +2688,39 @@ Binary compatibility testing
<arg value="${org.scala-lang:scala-reflect:jar}"/>
<arg value="--curr"/>
<arg value="${build-pack.dir}/lib/scala-reflect.jar"/>
+ <arg value="--filters"/>
+ <arg value="${basedir}/bincompat-backward.whitelist.conf"/>
+ <arg value="--generate-filters"/>
+ <classpath>
+ <path refid="mima.classpath"/>
+ </classpath>
+ </java>
+ <java
+ fork="true"
+ failonerror="true"
+ classname="com.typesafe.tools.mima.cli.Main">
+ <arg value="--curr"/>
+ <arg value="${org.scala-lang:scala-library:jar}"/>
+ <arg value="--prev"/>
+ <arg value="${build-pack.dir}/lib/scala-library.jar"/>
+ <arg value="--filters"/>
+ <arg value="${basedir}/bincompat-forward.whitelist.conf"/>
+ <arg value="--generate-filters"/>
+ <classpath>
+ <path refid="mima.classpath"/>
+ </classpath>
+ </java>
+ <java
+ fork="true"
+ failonerror="true"
+ classname="com.typesafe.tools.mima.cli.Main">
+ <arg value="--curr"/>
+ <arg value="${org.scala-lang:scala-reflect:jar}"/>
+ <arg value="--prev"/>
+ <arg value="${build-pack.dir}/lib/scala-reflect.jar"/>
+ <arg value="--filters"/>
+ <arg value="${basedir}/bincompat-forward.whitelist.conf"/>
+ <arg value="--generate-filters"/>
<classpath>
<path refid="mima.classpath"/>
</classpath>