Exception during compilation

90 views
Skip to first unread message

Vladimir Hrusovsky

unread,
Jun 17, 2014, 7:59:39 AM6/17/14
to scala...@googlegroups.com
Hi guys,
I am experiencing strange exception during the compilation of the following code:

object Test extends App {
  val comboBox = new ComboBox(List(None))
  comboBox.peer.setModel(new DefaultComboBoxModel())
}

Error:scalac: Error: 0
java.lang.IndexOutOfBoundsException: 0
at scala.collection.LinearSeqOptimized$class.apply(LinearSeqOptimized.scala:51)
at scala.collection.immutable.List.apply(List.scala:83)
at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.correspondingTypeArgument(TypeMaps.scala:551)
at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.loop$3(TypeMaps.scala:585)
at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.classParameterAsSeen(TypeMaps.scala:590)
at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:467)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.applyToSymbolInfo(TypeMaps.scala:218)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.loop$1(TypeMaps.scala:227)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.noChangeToSymbols(TypeMaps.scala:229)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:243)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:128)
at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:468)
at scala.reflect.internal.Types$Type.asSeenFrom(Types.scala:663)
at scala.reflect.internal.Types$Type.computeMemberType(Types.scala:698)
at scala.reflect.internal.Symbols$MethodSymbol.typeAsMemberOf(Symbols.scala:2857)
at scala.reflect.internal.Types$Type.memberType(Types.scala:689)
at scala.tools.nsc.typechecker.Infer$Inferencer.checkAccessible(Infer.scala:274)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$makeAccessible(Typers.scala:581)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$100.apply(Typers.scala:4671)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$100.apply(Typers.scala:4671)
at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:710)
at scala.tools.nsc.typechecker.Typers$Typer.typedSelectInternal$1(Typers.scala:4671)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedSelect$1(Typers.scala:4596)
at scala.tools.nsc.typechecker.Typers$Typer.typedSelectOrSuperCall$1(Typers.scala:4735)
at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5253)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5269)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5305)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5332)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5279)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5283)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$93.apply(Typers.scala:4440)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$93.apply(Typers.scala:4440)
at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:696)
at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4439)
at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4494)
at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5252)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5269)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5305)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5332)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5279)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5283)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5361)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3000)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.collection.immutable.List.loop$1(List.scala:172)
at scala.collection.immutable.List.mapConserve(List.scala:188)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1907)
at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1794)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5219)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5268)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5305)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5332)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5279)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5283)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5361)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3000)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.collection.immutable.List.loop$1(List.scala:172)
at scala.collection.immutable.List.mapConserve(List.scala:188)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:4928)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5221)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5268)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5305)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5332)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5279)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5283)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5357)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:102)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:430)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:94)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:93)
at scala.collection.Iterator$class.foreach(Iterator.scala:743)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1174)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:93)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1625)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1610)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1605)
at scala.tools.nsc.Global$Run.compile(Global.scala:1703)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:126)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:102)
at xsbt.CompilerInterface.run(CompilerInterface.scala:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:102)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:48)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
at org.jetbrains.jps.incremental.scala.local.IdeaIncrementalCompiler.compile(IdeaIncrementalCompiler.scala:28)
at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:25)
at org.jetbrains.jps.incremental.scala.remote.Main$.make(Main.scala:64)
at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:22)
at org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.martiansoftware.nailgun.NGSession.run(NGSession.java:319)


On the other hand, when I try to compile code with commented second line, it compiles fine.

object Test extends App {
  val comboBox = new ComboBox(List(None))
  //comboBox.peer.setModel(new DefaultComboBoxModel())
}

Is this a bug in scala compiler, or I am missing something? Thank you.

Scala version: 2.11.1
Java version: 1.7

Som Snytt

unread,
Jun 17, 2014, 11:25:09 AM6/17/14
to Vladimir Hrusovsky, scala-user
Is this one of those newly generified Swing classes on Java 7?

scala> import scala.swing.ComboBox
import scala.swing.ComboBox

scala> val comboBox = new ComboBox(List(None))
comboBox: scala.swing.ComboBox[None.type] = scala.swing wrapper scala.swing.ComboBox$$anon$1[,0,0,0x0,invalid,layout=javax.swing.plaf.metal.MetalComboBoxUI$MetalComboBoxLayoutManager,alignmentX=0.0,alignmentY=0.0,border=,flags=328,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=None]

scala> comboBox.peer.setModel(new DefaultComboBoxModel())

java.lang.IndexOutOfBoundsException: 0
    at scala.collection.LinearSeqOptimized$class.apply(LinearSeqOptimized.scala:51)

Inference fails before it notices the missing import.

On Java 6:

Welcome to Scala version 2.11.1 (OpenJDK 64-Bit Server VM, Java 1.6.0_27).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import scala.swing.ComboBox
import scala.swing.ComboBox

scala> val comboBox = new ComboBox(List(None))
comboBox: scala.swing.ComboBox[None.type] = scala.swing wrapper scala.swing.ComboBox$$anon$1[,0,0,0x0,invalid,layout=javax.swing.plaf.metal.MetalComboBoxUI$MetalComboBoxLayoutManager,alignmentX=0.0,alignmentY=0.0,border=,flags=328,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=None]

scala> comboBox.peer.setModel(new DefaultComboBoxModel())
<console>:10: error: not found: type DefaultComboBoxModel
              comboBox.peer.setModel(new DefaultComboBoxModel())
                                         ^

scala>

scala> import javax.swing.DefaultComboBoxModel
import javax.swing.DefaultComboBoxModel

scala> comboBox.peer.setModel(new DefaultComboBoxModel())




--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Vladimir Hrusovsky

unread,
Jun 18, 2014, 1:49:33 AM6/18/14
to scala...@googlegroups.com, wladi...@gmail.com
Hm, so it looks like problem with Java 7 Swing classes. Should I report a bug for Scala?

Antoine Gourlay

unread,
Jun 19, 2014, 8:35:01 AM6/19/14
to Vladimir Hrusovsky, scala-user
On Wed, Jun 18, 2014 at 7:49 AM, Vladimir Hrusovsky <wladi...@gmail.com> wrote:
Hm, so it looks like problem with Java 7 Swing classes. Should I report a bug for Scala?

A scalac *crash* (rather than a properly reported error) is always a bug. In this case, it was already reported as SI-8439 [1] (but you can add your code as an other way to reproduce it).

[1]: https://issues.scala-lang.org/browse/SI-8439

Regards

--
Antoine

Vladimir Hrusovsky

unread,
Jun 19, 2014, 9:23:38 AM6/19/14
to scala...@googlegroups.com, wladi...@gmail.com
Thank you.
Reply all
Reply to author
Forward
0 new messages