Specific compile error in a file prevents opening that file with the Scala editor until the error is resolved
My Setup:
Scala IDE 2.0.0-beta1
Eclipse 3.6-SR1
Ubuntu 10.04 LTS 64bit
Java 1.6.0_24-b07
To reproduce:
Double-click the attached SEnum.scala file from the package explorer.
Symptoms:
The stack trace shown below appears in the editor window (after clicking 'details').
Notes:
Sometimes (though I can't reproduce this now), after the Scala Editor fails, right-clicking on the file in the package explorer also fails. However I just tried this now and was able to open the pathological file in Eclipse's text editor.
Also note that this is a legitimate compiler error; the error from the stack trace appears when compiling from the command line. Changing 'final case class MyEnum' to 'class MyEnum' resolves the issue and allows opening the file with the Scala editor again.
java.lang.Error: no progress in completing object MyEnum:<?>
at scala.tools.nsc.symtab.SymbolTable.abort(SymbolTable.scala:35)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:732)
at scala.tools.nsc.symtab.Symbols$Symbol.primaryConstructor(Symbols.scala:1084)
at scala.tools.nsc.symtab.Symbols$Symbol.isPrimaryConstructor(Symbols.scala:460)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$DefOwner$class.addDef(ScalaStructureBuilder.scala:609)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$Builder.addDef(ScalaStructureBuilder.scala:733)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$DefOwner$class.addDef(ScalaStructureBuilder.scala:553)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$Builder.addDef(ScalaStructureBuilder.scala:733)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:785)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:763)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$buildStructure$2$$anonfun$apply$4$$anonfun$apply$1.apply$mcV$sp(ScalaCompilationUnit.scala:68)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$buildStructure$2$$anonfun$apply$4$$anonfun$apply$1.apply(ScalaCompilationUnit.scala:67)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$buildStructure$2$$anonfun$apply$4$$anonfun$apply$1.apply(ScalaCompilationUnit.scala:67)
at scala.tools.nsc.util.InterruptReq.liftedTree1$1(InterruptReq.scala:20)
at scala.tools.nsc.util.InterruptReq.execute(InterruptReq.scala:19)
at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:305)
at scala.tools.nsc.interactive.PresentationCompilerThread.run(PresentationCompilerThread.scala:25)
Scala IDE 2.0.0-beta1
Eclipse 3.6-SR1
Ubuntu 10.04 LTS 64bit
Java 1.6.0_24-b07
To reproduce:
Double-click the attached SEnum.scala file from the package explorer.
Symptoms:
The stack trace shown below appears in the editor window (after clicking 'details').
Notes:
Sometimes (though I can't reproduce this now), after the Scala Editor fails, right-clicking on the file in the package explorer also fails. However I just tried this now and was able to open the pathological file in Eclipse's text editor.
Also note that this is a legitimate compiler error; the error from the stack trace appears when compiling from the command line. Changing 'final case class MyEnum' to 'class MyEnum' resolves the issue and allows opening the file with the Scala editor again.
java.lang.Error: no progress in completing object MyEnum:<?>
at scala.tools.nsc.symtab.SymbolTable.abort(SymbolTable.scala:35)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:732)
at scala.tools.nsc.symtab.Symbols$Symbol.primaryConstructor(Symbols.scala:1084)
at scala.tools.nsc.symtab.Symbols$Symbol.isPrimaryConstructor(Symbols.scala:460)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$DefOwner$class.addDef(ScalaStructureBuilder.scala:609)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$Builder.addDef(ScalaStructureBuilder.scala:733)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$DefOwner$class.addDef(ScalaStructureBuilder.scala:553)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$Builder.addDef(ScalaStructureBuilder.scala:733)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:785)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser$$anonfun$traverse$1.apply(ScalaStructureBuilder.scala:793)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:793)
at scala.tools.eclipse.javaelements.ScalaStructureBuilder$StructureBuilderTraverser.traverse(ScalaStructureBuilder.scala:763)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$buildStructure$2$$anonfun$apply$4$$anonfun$apply$1.apply$mcV$sp(ScalaCompilationUnit.scala:68)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$buildStructure$2$$anonfun$apply$4$$anonfun$apply$1.apply(ScalaCompilationUnit.scala:67)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$buildStructure$2$$anonfun$apply$4$$anonfun$apply$1.apply(ScalaCompilationUnit.scala:67)
at scala.tools.nsc.util.InterruptReq.liftedTree1$1(InterruptReq.scala:20)
at scala.tools.nsc.util.InterruptReq.execute(InterruptReq.scala:19)
at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:305)
at scala.tools.nsc.interactive.PresentationCompilerThread.run(PresentationCompilerThread.scala:25)
Leave a comment
on 2011-03-29 18:32 *
By clintgilbert
PS: If, using the Scala editor, you edit a working version of SEnum.scala to become the pathological version (with 'case class'), the expected red squiggles appear and the editor stays working as expected. However, if you close the editor tab and re-open, the stack trace appears.
(In revision:dbcdf5023d972bb1ed84e2fc0bb2815a9c38349b) Better error handling in the structure builder, even when it crashes. The structure may not be fully correct, but at least you can continue editing. Fixed #1000337.
Branch:wip_experiment
Branch:wip_experiment
on 2011-04-14 20:53 *
By Iulian Dragos
(In revision:d3f18ba197cbbfb396725354816218d301fe54e9) Better error handling in the structure builder, even when it crashes. The structure may not be fully correct, but at least you can continue editing. Fixed #1000337.
Branch:repl_wip
Branch:repl_wip