summaryrefslogtreecommitdiff
path: root/bincompat-backward.whitelist.conf
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-03-07 14:28:47 +0100
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-03-07 14:28:47 +0100
commited743265173e4dcbd5a77ffb6364bff1d587c90e (patch)
tree2f130920a3c3d56b3675a8a9eb3b17d05c45a225 /bincompat-backward.whitelist.conf
parent9b0d0a8e9a09a79f6251e72e60449aa749a96dca (diff)
downloadscala-ed743265173e4dcbd5a77ffb6364bff1d587c90e.tar.gz
scala-ed743265173e4dcbd5a77ffb6364bff1d587c90e.tar.bz2
scala-ed743265173e4dcbd5a77ffb6364bff1d587c90e.zip
SI-8372: unspliceable type printed in error message
The b8a76f688c6ce2a4c305da064303bb46b53be875 introduced ArrayOps.{unzip, unzip3} methods. Both of those methods have ClassTags as context bounds on their type parameters so they can create (and return) instances of Arrays. The type inference for those methods is supposed to be guided by implicit evidence that T <: (T1, T2) (or T <: (T1, T2, T3) in unzip3 case). However, context bounds are desugared into implicit parameters that prepended in front of implicit parameters declared in source code. That means the implicit evidence won't have a chance to guide type inference because it comes as last implicit parameter. This commit desugars context bounds and puts them at the end of implicit parameter list. This way type inference is guided properly and we get expected compiler errors for missing class tags. The change to parameters order breaks binary compatibility with respect to 2.11.0-RC1. I added filters to our binary compatibility configuration files. We can get rid of them as soon as 2.11.0 is out.
Diffstat (limited to 'bincompat-backward.whitelist.conf')
-rw-r--r--bincompat-backward.whitelist.conf99
1 files changed, 99 insertions, 0 deletions
diff --git a/bincompat-backward.whitelist.conf b/bincompat-backward.whitelist.conf
index 9e93c32c70..10c1da59b8 100644
--- a/bincompat-backward.whitelist.conf
+++ b/bincompat-backward.whitelist.conf
@@ -4,4 +4,103 @@ filter {
# "scala.concurrent.impl"
# "scala.reflect.runtime"
]
+ // see SI-8372
+ problems=[
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofChar.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofChar.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofByte.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofByte.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofShort.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofShort.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofLong.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofLong.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofInt.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofInt.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps.unzip"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps.unzip3"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps.unzip"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps.unzip3"
+ problemName=MissingMethodProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofFloat.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofFloat.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofBoolean.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofBoolean.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofRef.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofRef.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofUnit.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofUnit.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofDouble.unzip"
+ problemName=IncompatibleMethTypeProblem
+ },
+ {
+ matchName="scala.collection.mutable.ArrayOps#ofDouble.unzip3"
+ problemName=IncompatibleMethTypeProblem
+ }
+ ]
} \ No newline at end of file