bug
bug copied to clipboard
"Bad superClass for class” crash
Define and compile object Boxing, then load in a scala REPL (e.g. sbt console) and type
scala> val v: Boxing = Boxing
<console>:11: error: type mismatch;
found : Boxing.type
required: Boxing
val v: Boxing = Boxing
^
That's strange—it mentions type Boxing tho it doesn't exist. Maybe because a valid but member-less Boxing.class has been created? But OK.
For the crash, try this:
val v: Boxing = null
Error at https://gist.github.com/Blaisorblade/83f7b997269a080890576c7a738f6972. Highlights:
java.lang.AssertionError: assertion failed:
Bad superClass for class Boxing: <none>
while compiling: <console>
during phase: jvm
[...]
at scala.reflect.internal.SymbolTable.throwAssertionError(SymbolTable.scala:163)
at scala.tools.nsc.backend.jvm.BTypesFromSymbols.computeClassInfo(BTypesFromSymbols.scala:321)
at scala.tools.nsc.backend.jvm.BTypesFromSymbols.$anonfun$classBTypeFromSymbol$6(BTypesFromSymbols.scala:107)
at scala.tools.nsc.backend.jvm.BTypes$ClassBType$.apply(BTypes.scala:816)
at scala.tools.nsc.backend.jvm.BTypesFromSymbols.classBTypeFromSymbol(BTypesFromSymbols.scala:104)
at scala.tools.nsc.backend.jvm.BTypesFromSymbols.$anonfun$typeToBType$1(BTypesFromSymbols.scala:158)
[...]
java.lang.AssertionError: assertion failed: ClassBType.info not yet assigned: L$line2/$read$$iw$$iw$;
at scala.tools.nsc.backend.jvm.BTypes$ClassBType.info(BTypes.scala:629)
at scala.tools.nsc.backend.jvm.BTypes$ClassBType.isNestedClass(BTypes.scala:681)
at scala.tools.nsc.backend.jvm.BTypes$ClassBType.enclosingNestedClassesChain(BTypes.scala:684)
at scala.tools.nsc.backend.jvm.analysis.BackendUtils.$anonfun$addInnerClasses$1(BackendUtils.scala:361)
at scala.tools.nsc.backend.jvm.analysis.BackendUtils.addInnerClasses(BackendUtils.scala:361)
at scala.tools.nsc.backend.jvm.PostProcessor.setInnerClasses(PostProcessor.scala:125)
[...]
This seems to need the REPL — even compiling separately the following (which is the desugaring output from the REPL according to its output) doesn't trigger the crash:
object $iw {
object $iw {
val v: Boxing = null
}
}
Also requires the object in the empty package.
ohhhhhhhh good call @som-snytt. (why didn't I think of that?)
We are running into this issue randomly with Bad superClass for class Any: <none> occurring randomly at various places in the codebase. One example stacktrace:
[info] compiling 64 Scala sources to /home/runner/work/lucuma-core/lucuma-core/modules/testkit/.jvm/target/scala-2.13/classes ...
[error] Error while emitting PlanetSpectrum.scala
[error] assertion failed:
[error] Bad superClass for class Any: <none>
[error] while compiling: /home/runner/work/lucuma-core/lucuma-core/modules/core/shared/src/main/scala/lucuma/core/enum/PlanetSpectrum.scala
[error] during phase: globalPhase=jvm, enteringPhase=uncurry
[error] library version: version 2.13.7
[error] compiler version: version 2.13.7
[error] reconstructed args: -bootclasspath /home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.7/scala-library-2.13.7.jar -deprecation -encoding utf8 -explaintypes -feature -unchecked -Werror -Wconf:cat=deprecation:w -Wconf:cat=unchecked:w -Wconf:cat=feature:w -Wconf:cat=deprecation:ws -Wconf:cat=feature:ws -Wconf:cat=optimizer:ws -Wdead-code -Wvalue-discard -Wnumeric-widen -Wunused:imports -Wunused:patvars -Wunused:privates -Wunused:locals -Wunused:explicits -Wunused:implicits -Wunused:synthetics -Wunused:nowarn -Wextra-implicit -Xlint:adapted-args -Xlint:nullary-unit -Xlint:inaccessible -Xlint:infer-any -Xlint:missing-interpolator -Xlint:doc-detached -Xlint:private-shadow -Xlint:type-parameter-shadow -Xlint:poly-implicit-overload -Xlint:option-implicit -Xlint:delayedinit-select -Xlint:package-object-classes -Xlint:stars-align -Xlint:strict-unsealed-patmat -Xlint:constant -Xlint:deprecation -classpath /home/runner/work/lucuma-core/lucuma-core/modules/core/js/target/scala-2.13/classes:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-js/scalajs-library_2.13/1.8.0/scalajs-library_2.13-1.8.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tpolecat/atto-core_sjs1_2.13/0.9.5/atto-core_sjs1_2.13-0.9.5.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tpolecat/atto-refined_sjs1_2.13/0.9.5/atto-refined_sjs1_2.13-0.9.5.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-core_sjs1_2.13/2.7.0/cats-core_sjs1_2.13-2.7.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/optics/monocle-core_sjs1_2.13/3.1.0/monocle-core_sjs1_2.13-3.1.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/optics/monocle-macro_sjs1_2.13/3.1.0/monocle-macro_sjs1_2.13-3.1.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/optics/monocle-state_sjs1_2.13/3.1.0/monocle-state_sjs1_2.13-3.1.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/gemini/lucuma-jts_sjs1_2.13/0.2.2/lucuma-jts_sjs1_2.13-0.2.2.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb_sjs1_2.13/0.5.7/coulomb_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-si-units_sjs1_2.13/0.5.7/coulomb-si-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-accepted-units_sjs1_2.13/0.5.7/coulomb-accepted-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-time-units_sjs1_2.13/0.5.7/coulomb-time-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-cats_sjs1_2.13/0.5.7/coulomb-cats_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-refined_sjs1_2.13/0.5.7/coulomb-refined_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-physical-constants_sjs1_2.13/0.5.7/coulomb-physical-constants_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire_sjs1_2.13/0.17.0/spire_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-extras_sjs1_2.13/0.17.0/spire-extras_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/eu/timepit/singleton-ops_sjs1_2.13/0.5.2/singleton-ops_sjs1_2.13-0.5.2.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/eu/timepit/refined_sjs1_2.13/0.9.28/refined_sjs1_2.13-0.9.28.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/eu/timepit/refined-cats_sjs1_2.13/0.9.28/refined-cats_sjs1_2.13-0.9.28.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-time_sjs1_2.13/0.5.0/cats-time_sjs1_2.13-0.5.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-core_sjs1_2.13/0.14.1/circe-core_sjs1_2.13-0.14.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-refined_sjs1_2.13/0.14.1/circe-refined_sjs1_2.13-0.14.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_sjs1_2.13/2.3.7/shapeless_sjs1_2.13-2.3.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/cquiroz/scala-java-time_sjs1_2.13/2.3.0/scala-java-time_sjs1_2.13-2.3.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/gemini/gemini-locales_sjs1_2.13/0.7.0/gemini-locales_sjs1_2.13-0.7.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/gemini/lucuma-svgdotjs_sjs1_2.13/0.2.1/lucuma-svgdotjs_sjs1_2.13-0.2.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-kernel_sjs1_2.13/2.7.0/cats-kernel_sjs1_2.13-2.7.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/simulacrum-scalafix-annotations_2.13/0.5.4/simulacrum-scalafix-annotations_2.13-0.5.4.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-free_sjs1_2.13/2.6.1/cats-free_sjs1_2.13-2.6.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.7/scala-reflect-2.13.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-mks-units_sjs1_2.13/0.5.7/coulomb-mks-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-macros_sjs1_2.13/0.17.0/spire-macros_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-platform_sjs1_2.13/0.17.0/spire-platform_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-util_sjs1_2.13/0.17.0/spire-util_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_sjs1_2.13/2.2.0/scala-collection-compat_sjs1_2.13-2.2.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/algebra_sjs1_2.13/2.0.1/algebra_sjs1_2.13-2.0.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-data_sjs1_2.13/0.17.0/spire-data_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.7/scala-compiler-2.13.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/1.3.0/scala-xml_2.13-1.3.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-numbers_sjs1_2.13/0.14.1/circe-numbers_sjs1_2.13-0.14.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/portable-scala/portable-scala-reflect_sjs1_2.13/1.1.1/portable-scala-reflect_sjs1_2.13-1.1.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/cquiroz/scala-java-locales_sjs1_2.13/1.2.0/scala-java-locales_sjs1_2.13-1.2.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-js/scalajs-dom_sjs1_2.13/2.0.0/scalajs-dom_sjs1_2.13-2.0.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/olvind/scalablytyped-runtime_sjs1_2.13/2.4.2/scalablytyped-runtime_sjs1_2.13-2.4.2.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/jline/jline/3.20.0/jline-3.20.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.8.0/jna-5.8.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/cquiroz/cldr-api_sjs1_2.13/2.7.0/cldr-api_sjs1_2.13-2.7.0.jar -language:existentials -language:higherKinds -language:implicitConversions -language:experimental.macros -Xmaxerrs -1 -Xmaxwarns -1 -Xplugin:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/kind-projector_2.13.7/0.13.2/kind-projector_2.13.7-0.13.2.jar -Xplugin:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-js/scalajs-compiler_2.13.7/1.8.0/scalajs-compiler_2.13.7-1.8.0.jar -Xplugin:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/semanticdb-scalac_2.13.7/4.4.30/semanticdb-scalac_2.13.7-4.4.30.jar -Yrangepos -Ymacro-annotations -Vimplicits -Vtype-diffs -P:semanticdb:targetroot:/home/runner/work/lucuma-core/lucuma-core/modules/core/js/target/scala-2.13/meta
[error]
[error] last tree to typer: TypeTree(class Long)
[error] tree position: line 85 of /home/runner/work/lucuma-core/lucuma-core/modules/core/shared/src/main/scala/lucuma/core/util/Gid.scala
[error] tree tpe: Long
[error] symbol: final class Long in package lang
[error] symbol definition: final class Long extends Number with Comparable[Long] with Constable with ConstantDesc (a ClassSymbol)
[error] symbol package: java.lang
[error] symbol owners: class Long
[error] call site: method serialized in trait TypeString in package util
[error]
[error] == Source file context for tree position ==
[error]
[error] 82 }
[error] 83
[error] 84 final val fromLong: Prism[Long, A] =
[error] 85 Prism[Long, A](l => PosLong.from(l).toOption.map(isoPosLong.reverseGet))(a =>
[error] 86 isoPosLong.get(a).value
[error] 87 )
[error] 88
[error] one error found
I realize this isn't actionable yet but I will add clues here as they show up.