mima
mima copied to clipboard
Cryptic error when ScalaSig in input classfile is incomplete (since 0.9.0)
In coursier-interface, bumping sbt-mima to 0.9.0
or higher (including the latest 1.1.0
) makes mimaReportBinaryIssues
crash with an ArrayIndexOutOfBoundsException
:
sbt:coursier-interface> interface/mimaReportBinaryIssues
[error] stack trace is suppressed; run last interface / mimaReportBinaryIssues for the full output
[error] (interface / mimaReportBinaryIssues) java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 8443
(full stack trace in details below)
This looks similar to https://github.com/lightbend/mima/issues/659, but seems to still be a problem.
sbt:coursier-interface> interface/mimaReportBinaryIssues [error] stack trace is suppressed; run last interface / mimaReportBinaryIssues for the full output [error] (interface / mimaReportBinaryIssues) java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 8443 [error] Total time: 1 s, completed 11 juil. 2022 à 10:16:50 sbt:coursier-interface> last interface / mimaReportBinaryIssues [debug] adding packages from /Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/interface/0.0.2/interface-0.0.2.jar: coursierapi [debug] adding packages from /Users/alexandre/projects/coursier-interface/interface/target/scala-2.13/classes: coursierapi, coursier [debug] [old version in: Definitions(classPath = /Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/interface/0.0.2/interface-0.0.2.jar:/Users/alexandre/projects/coursier-interface/interface/target/scala-2.13/classes:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.0-M6-28-gbad85693f/coursier_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-jvm_2.13/2.1.0-M6-28-gbad85693f/coursier-jvm_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils-coursierapi/0.3.2/windows-jni-utils-coursierapi-0.3.2.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.12.4/jsoniter-scala-core_2.13-2.12.4.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.6/scala-reflect-2.13.6.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.0-M6-28-gbad85693f/coursier-core_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.0-M6-28-gbad85693f/coursier-cache_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/github/alexarchambault/argonaut-shapeless_6.2_2.13/1.2.0/argonaut-shapeless_6.2_2.13-1.2.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-env_2.13/2.1.0-M6-28-gbad85693f/coursier-env_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.0.1/scala-xml_2.13-2.0.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.0-M6-28-gbad85693f/coursier-util_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.2.7/plexus-archiver-4.2.7.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.3/windows-ansi-0.0.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/argonaut/argonaut_2.13/6.2.5/argonaut_2.13-6.2.5.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.3/shapeless_2.13-2.3.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.6.0/scala-collection-compat_2.13-2.6.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.2.0/plexus-io-3.2.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar:jrt:/)] [debug] [new version in: Definitions(classPath = /Users/alexandre/projects/coursier-interface/interface/target/scala-2.13/classes:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.0-M6-28-gbad85693f/coursier_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-jvm_2.13/2.1.0-M6-28-gbad85693f/coursier-jvm_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils-coursierapi/0.3.2/windows-jni-utils-coursierapi-0.3.2.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.12.4/jsoniter-scala-core_2.13-2.12.4.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.6/scala-reflect-2.13.6.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.0-M6-28-gbad85693f/coursier-core_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.0-M6-28-gbad85693f/coursier-cache_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/github/alexarchambault/argonaut-shapeless_6.2_2.13/1.2.0/argonaut-shapeless_6.2_2.13-1.2.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-env_2.13/2.1.0-M6-28-gbad85693f/coursier-env_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.0.1/scala-xml_2.13-2.0.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.0-M6-28-gbad85693f/coursier-util_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.2.7/plexus-archiver-4.2.7.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.3/windows-ansi-0.0.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/argonaut/argonaut_2.13/6.2.5/argonaut_2.13-6.2.5.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.3/shapeless_2.13-2.3.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.6.0/scala-collection-compat_2.13-2.6.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.2.0/plexus-io-3.2.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar:jrt:/)] [debug] classpath: /Users/alexandre/projects/coursier-interface/interface/target/scala-2.13/classes:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.0-M6-28-gbad85693f/coursier_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-jvm_2.13/2.1.0-M6-28-gbad85693f/coursier-jvm_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils-coursierapi/0.3.2/windows-jni-utils-coursierapi-0.3.2.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.12.4/jsoniter-scala-core_2.13-2.12.4.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.6/scala-reflect-2.13.6.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.0-M6-28-gbad85693f/coursier-core_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.0-M6-28-gbad85693f/coursier-cache_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/github/alexarchambault/argonaut-shapeless_6.2_2.13/1.2.0/argonaut-shapeless_6.2_2.13-1.2.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-env_2.13/2.1.0-M6-28-gbad85693f/coursier-env_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.0.1/scala-xml_2.13-2.0.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.0-M6-28-gbad85693f/coursier-util_2.13-2.1.0-M6-28-gbad85693f.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.2.7/plexus-archiver-4.2.7.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.3/windows-ansi-0.0.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/argonaut/argonaut_2.13/6.2.5/argonaut_2.13-6.2.5.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.3/shapeless_2.13-2.3.3.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.6.0/scala-collection-compat_2.13-2.6.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.2.0/plexus-io-3.2.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar:/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar:jrt:/ [debug] traversing package[debug] traversing package coursierapi [debug] analyzing class Cache [debug] analyzing class Credentials [debug] analyzing class Dependency [debug] analyzing class Fetch [debug] analyzing class IvyRepository [debug] analyzing class Logger [debug] analyzing class MavenRepository [debug] analyzing class Module [debug] analyzing class Repository [debug] analyzing class ScalaVersion [debug] analyzing class SimpleLogger [debug] traversing package coursierapi.error [debug] analyzing class CoursierError [debug] analyzing class DownloadingArtifactsError [debug] analyzing class FetchError [debug] analyzing class MultipleResolutionError [debug] analyzing class ResolutionError [debug] analyzing class SimpleResolutionError [debug] traversing package coursierapi.shaded [debug] traversing package coursierapi.shaded.coursier [error] java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 8443 [error] at com.typesafe.tools.mima.core.BytesReader.getChar(BufferReader.scala:13) [error] at com.typesafe.tools.mima.core.BufferReader.nextChar(BufferReader.scala:36) [error] at com.typesafe.tools.mima.core.ClassfileParser.parsePickle(ClassfileParser.scala:132) [error] at com.typesafe.tools.mima.core.ClassfileParser.$anonfun$parseClassAttributes$2(ClassfileParser.scala:64) [error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) [error] at com.typesafe.tools.mima.core.BufferReader.atIndex(BufferReader.scala:47) [error] at com.typesafe.tools.mima.core.ClassfileParser.parseClassAttributes(ClassfileParser.scala:64) [error] at com.typesafe.tools.mima.core.ClassfileParser.com$typesafe$tools$mima$core$ClassfileParser$$parseClass(ClassfileParser.scala:20) [error] at com.typesafe.tools.mima.core.ClassfileParser$.parseInPlace(ClassfileParser.scala:171) [error] at com.typesafe.tools.mima.core.ConcreteClassInfo.afterLoading(ClassInfo.scala:44) [error] at com.typesafe.tools.mima.core.ClassInfo.flags(ClassInfo.scala:77) [error] at com.typesafe.tools.mima.core.InfoLike.isPublic(InfoLike.scala:14) [error] at com.typesafe.tools.mima.core.PackageInfo.isAccessible$1(PackageInfo.scala:81) [error] at com.typesafe.tools.mima.core.PackageInfo.$anonfun$accessibleClasses$1(PackageInfo.scala:75) [error] at com.typesafe.tools.mima.core.PackageInfo.$anonfun$accessibleClasses$1$adapted(PackageInfo.scala:75) [error] at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:515) [error] at scala.collection.Iterator.foreach(Iterator.scala:943) [error] at scala.collection.Iterator.foreach$(Iterator.scala:943) [error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1431) [error] at scala.collection.generic.Growable.$plus$plus$eq(Growable.scala:62) [error] at scala.collection.generic.Growable.$plus$plus$eq$(Growable.scala:53) [error] at scala.collection.immutable.Set$SetBuilderImpl.$plus$plus$eq(Set.scala:381) [error] at scala.collection.immutable.Set$SetBuilderImpl.$plus$plus$eq(Set.scala:329) [error] at scala.collection.TraversableOnce.to(TraversableOnce.scala:366) [error] at scala.collection.TraversableOnce.to$(TraversableOnce.scala:364) [error] at scala.collection.AbstractIterator.to(Iterator.scala:1431) [error] at scala.collection.TraversableOnce.toSet(TraversableOnce.scala:360) [error] at scala.collection.TraversableOnce.toSet$(TraversableOnce.scala:360) [error] at scala.collection.AbstractIterator.toSet(Iterator.scala:1431) [error] at com.typesafe.tools.mima.core.PackageInfo.loop$1(PackageInfo.scala:75) [error] at com.typesafe.tools.mima.core.PackageInfo.accessibleClasses$lzycompute(PackageInfo.scala:88) [error] at com.typesafe.tools.mima.core.PackageInfo.accessibleClasses(PackageInfo.scala:73) [error] at com.typesafe.tools.mima.lib.analyze.Analyzer$.analyze(Analyzer.scala:12) [error] at com.typesafe.tools.mima.lib.MiMaLib.traversePackages(MiMaLib.scala:25) [error] at com.typesafe.tools.mima.lib.MiMaLib.$anonfun$traversePackages$2(MiMaLib.scala:27) [error] at scala.collection.immutable.Stream.flatMap(Stream.scala:489) [error] at com.typesafe.tools.mima.lib.MiMaLib.traversePackages(MiMaLib.scala:25) [error] at com.typesafe.tools.mima.lib.MiMaLib.$anonfun$traversePackages$2(MiMaLib.scala:27) [error] at scala.collection.immutable.Stream.flatMap(Stream.scala:493) [error] at com.typesafe.tools.mima.lib.MiMaLib.traversePackages(MiMaLib.scala:25) [error] at com.typesafe.tools.mima.lib.MiMaLib.$anonfun$traversePackages$2(MiMaLib.scala:27) [error] at scala.collection.immutable.Stream.flatMap(Stream.scala:489) [error] at com.typesafe.tools.mima.lib.MiMaLib.traversePackages(MiMaLib.scala:25) [error] at com.typesafe.tools.mima.lib.MiMaLib.collectProblems(MiMaLib.scala:38) [error] at com.typesafe.tools.mima.plugin.SbtMima$.checkBC$1(SbtMima.scala:24) [error] at com.typesafe.tools.mima.plugin.SbtMima$.runMima(SbtMima.scala:27) [error] at com.typesafe.tools.mima.plugin.MimaPlugin$.$anonfun$binaryIssuesFinder$5(MimaPlugin.scala:99) [error] at scala.collection.Iterator$$anon$10.next(Iterator.scala:461) [error] at scala.collection.Iterator.foreach(Iterator.scala:943) [error] at scala.collection.Iterator.foreach$(Iterator.scala:943) [error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1431) [error] at com.typesafe.tools.mima.plugin.MimaPlugin$.$anonfun$projectSettings$1(MimaPlugin.scala:26) [error] at com.typesafe.tools.mima.plugin.MimaPlugin$.$anonfun$projectSettings$1$adapted(MimaPlugin.scala:25) [error] at scala.Function1.$anonfun$compose$1(Function1.scala:49) [error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62) [error] at sbt.std.Transform$$anon$4.work(Transform.scala:68) [error] at sbt.Execute.$anonfun$submit$2(Execute.scala:282) [error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23) [error] at sbt.Execute.work(Execute.scala:291) [error] at sbt.Execute.$anonfun$submit$1(Execute.scala:282) [error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265) [error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:64) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [error] at java.base/java.lang.Thread.run(Thread.java:834) [error] (interface / mimaReportBinaryIssues) java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 8443
(Dale's attention is largely elsewhere these days, so I'm not sure if a fix is likely unless one is submitted.)
@alexarchambault I looked into this
the first thing I determined is that it fails even if mimaPreviousArtifacts
is restricted to only have the 1.0.6 JAR. Probably any version would do, but let's use the most recent — I wanted to rule out that it was just something peculiar about one of the very old JARs.
And, I discovered by adding a little more debugging output to MiMa, the class it's choking on is coursierapi.shaded.coursier.PlatformResolve
(probably it chokes on others as well, but that's one)
The .shaded.
interested me and made me wonder if the shading was somehow the culprit. And indeed, I think the problem here is that classifies in interface-1.0.6.jar
are malformed. Perhaps it has to do with the ProGuard config used to generate it.
The malformedness is also apparent without involving MiMa at all. If I run /usr/local/scala/scala-2.13.8/bin/scala -classpath ~/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/interface/1.0.6/interface-1.0.6.jar
, then:
Welcome to Scala 2.13.8 (OpenJDK 64-Bit Server VM, Java 17.0.4.1).
Type in expressions for evaluation. Or try :help.
scala> classOf[coursierapi.shaded.coursier.PlatformResolve]
java.lang.AssertionError: assertion failed:
No RuntimeVisibleAnnotations in classfile with ScalaSignature attribute: package object coursier
while compiling: <console>
during phase: globalPhase=typer, enteringPhase=parser
library version: version 2.13.8
compiler version: version 2.13.8
reconstructed args: -deprecation -feature -Wconf:cat=feature:w -Wconf:cat=deprecation:w -Wconf:cat=deprecation:ws -Wconf:cat=feature:ws -Wconf:cat=optimizer:ws -classpath /Users/tisue/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/interface/1.0.6/interface-1.0.6.jar
last tree to typer: Ident(coursierapi)
tree position: line 1 of <console>
tree tpe: coursierapi.type
symbol: final package coursierapi
symbol definition: final package coursierapi (a ModuleSymbol)
symbol package: <none>
symbol owners: package coursierapi
call site: class $iw in package $line3
== Source file context for tree position ==
1 classOf[coursierapi.shaded.coursier.PlatformResolve]
2
at scala.reflect.internal.SymbolTable.throwAssertionError(SymbolTable.scala:171)
at scala.tools.nsc.symtab.classfile.ClassfileParser.unpickleOrParseInnerClasses(ClassfileParser.scala:1200)
...
and so on.
So the classfile parser in Scala 2 is giving a better error message ("No RuntimeVisibleAnnotations in classfile with ScalaSignature attribute") than MiMa does, and sure, that's a deficiency in MiMa. But it appears to me that the root cause of your troubles is that ProGuard is emitting classfiles that don't have complete Scala 2 pickles in them.
Perhaps it would help if you added -keepattributes RuntimeVisibleAnnotations
to your ProGuard config, something like that?