Eclipse classpath variables are not recognized by the incremental builder
Migrated from http://lampsvn.epfl.ch/trac/scala/ticket/1918
Reporter memelet
This is in the context of a small project I have been building with Idea. I haven't narrowed it down to anything specific yet, but I get the exception on ever clean.
(Maybe this this is not an IDE issue because I have been using 2.7.3 with Idea. I'll switch over to 2.7.4 with Idea and see if I get any problems there.)
java.lang.NullPointerException at scala.tools.nsc.symtab.classfile.AbstractFileReader.<init>(AbstractFileReader.scala:25)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:73)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$$anonfun$doComplete$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$$anonfun$doComplete$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders.completeClassfile(SymbolLoaders.scala:276)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader.doComplete(SymbolLoaders.scala:289)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:77)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.load(SymbolLoaders.scala:97)
at scala.tools.nsc.symtab.Symbols$Symbol.exists(Symbols.scala:425)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2940)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:3446)
at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:3454)
at scala.tools.nsc.typechecker.Typers$Typer.parentTypes(Typers.scala:916)
at scala.tools.nsc.typechecker.Namers$Namer.templateSig(Namers.scala:546)
at scala.tools.nsc.typechecker.Namers$Namer.classSig(Namers.scala:603)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:838)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.typechecker.Namers$PolyTypeCompleter.complete(Namers.scala:993)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.symtab.Symbols$Symbol.initialize(Symbols.scala:669)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3078)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$2.apply(Analyzer.scala:41)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:267)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:246)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:246)
at scala.Iterator$class.foreach(Iterator.scala:414)
at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:266)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:246)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:574)
at scala.tools.nsc.Global$Run.compile(Global.scala:667)
at scala.tools.eclipse.BuildCompiler.build(BuildCompiler.scala:113)
at scala.tools.eclipse.ScalaPlugin$ProjectImpl$class.build(ScalaPlugin.scala:406)
at scala.tools.eclipse.Driver$Project.build(Driver.scala:16)
at lampion.eclipse.Builder.build(Builder.scala:90)
at scala.tools.eclipse.Builder.build(Builder.scala:33)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Reporter memelet
This is in the context of a small project I have been building with Idea. I haven't narrowed it down to anything specific yet, but I get the exception on ever clean.
(Maybe this this is not an IDE issue because I have been using 2.7.3 with Idea. I'll switch over to 2.7.4 with Idea and see if I get any problems there.)
java.lang.NullPointerException at scala.tools.nsc.symtab.classfile.AbstractFileReader.<init>(AbstractFileReader.scala:25)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:73)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$$anonfun$doComplete$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$$anonfun$doComplete$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders.completeClassfile(SymbolLoaders.scala:276)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader.doComplete(SymbolLoaders.scala:289)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:77)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.load(SymbolLoaders.scala:97)
at scala.tools.nsc.symtab.Symbols$Symbol.exists(Symbols.scala:425)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2940)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:3446)
at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:3454)
at scala.tools.nsc.typechecker.Typers$Typer.parentTypes(Typers.scala:916)
at scala.tools.nsc.typechecker.Namers$Namer.templateSig(Namers.scala:546)
at scala.tools.nsc.typechecker.Namers$Namer.classSig(Namers.scala:603)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:838)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.typechecker.Namers$PolyTypeCompleter.complete(Namers.scala:993)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.symtab.Symbols$Symbol.initialize(Symbols.scala:669)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3078)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$2.apply(Analyzer.scala:41)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:267)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:246)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:246)
at scala.Iterator$class.foreach(Iterator.scala:414)
at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:266)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:246)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:574)
at scala.tools.nsc.Global$Run.compile(Global.scala:667)
at scala.tools.eclipse.BuildCompiler.build(BuildCompiler.scala:113)
at scala.tools.eclipse.ScalaPlugin$ProjectImpl$class.build(ScalaPlugin.scala:406)
at scala.tools.eclipse.Driver$Project.build(Driver.scala:16)
at lampion.eclipse.Builder.build(Builder.scala:90)
at scala.tools.eclipse.Builder.build(Builder.scala:33)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Leave a comment
on 2009-04-25 05:37 *
By tracImporter
Trac author: memelet
The same code compiles clean within Idea using 2.7.4.
I'll try to narrow it down to something simple if its not obvious to you from the stack trace.
BTW, I am using eclipse 3.5M6 and 2.7.4 of the Scala IDE and Scala.
The same code compiles clean within Idea using 2.7.4.
I'll try to narrow it down to something simple if its not obvious to you from the stack trace.
BTW, I am using eclipse 3.5M6 and 2.7.4 of the Scala IDE and Scala.
on 2009-05-06 18:46 *
By tracImporter
Trac author: memelet
I have tested this with the nightly IDE/scalac -- same NPE.
I have tested this with the nightly IDE/scalac -- same NPE.
on 2009-05-06 18:48 *
By tracImporter
Trac author: memelet
One other thing: This only seems to occur for a "Clean...". Setting the project to manual build and doing a "Build All" or "Build Project" does not generate the exception.
One other thing: This only seems to occur for a "Clean...". Setting the project to manual build and doing a "Build All" or "Build Project" does not generate the exception.
on 2009-05-06 19:01 *
By
Are you able to build using the 2.7.4.final command line tools?
Also is there anything non-vanilla about the layout of your project source and output directories? Are either or both outside of your Eclipse workspace?
Also is there anything non-vanilla about the layout of your project source and output directories? Are either or both outside of your Eclipse workspace?
on 2009-05-06 20:49 *
By tracImporter
Trac author: memelet
I haven't tried using the command line, but it does compile cleanly within IntelliJ scala plugin. The eclipse project is vanilla -- a single source and test directory both within the project tree, a single output directory for both source and test.
If I had any idea what file it was failing for, I would try to build a simpler project. But I don't get that information in the stack trace.
I haven't tried using the command line, but it does compile cleanly within IntelliJ scala plugin. The eclipse project is vanilla -- a single source and test directory both within the project tree, a single output directory for both source and test.
If I had any idea what file it was failing for, I would try to build a simpler project. But I don't get that information in the stack trace.
on 2009-05-06 21:11 *
By tracImporter
Trac author: memelet
I've trimmed it down to this:
package com.tm
import org.scalatest.junit.JUnit3Suite
import org.scalatest.matchers.ShouldMatchers import org.scalatest.prop.Checkers
class CompilerErrorTest extends JUnit3Suite with Checkers with ShouldMatchers {
}
Where my .classpath is:
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src/main/scala"/> <classpathentry kind="src" path="src/test/scala"/> <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/> <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar"/> <classpathentry kind="var" path="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8.jar" sourcepath="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/junit/junit/4.5/junit-4.5.jar" sourcepath="M2_REPO/junit/junit/4.5/junit-4.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.7/mockito-core-1.7.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.7/mockito-core-1.7-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5.jar" sourcepath="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar" sourcepath="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar"/> <classpathentry kind="con" path="ch.epfl.lamp.sdt.launching.SCALA_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path="target/prod"/> </classpath>
I've trimmed it down to this:
package com.tm
import org.scalatest.junit.JUnit3Suite
import org.scalatest.matchers.ShouldMatchers import org.scalatest.prop.Checkers
class CompilerErrorTest extends JUnit3Suite with Checkers with ShouldMatchers {
}
Where my .classpath is:
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src/main/scala"/> <classpathentry kind="src" path="src/test/scala"/> <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/> <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar"/> <classpathentry kind="var" path="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8.jar" sourcepath="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/junit/junit/4.5/junit-4.5.jar" sourcepath="M2_REPO/junit/junit/4.5/junit-4.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.7/mockito-core-1.7.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.7/mockito-core-1.7-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5.jar" sourcepath="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar" sourcepath="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar"/> <classpathentry kind="con" path="ch.epfl.lamp.sdt.launching.SCALA_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path="target/prod"/> </classpath>
on 2009-05-06 21:13 *
By tracImporter
Trac author: memelet
Removing unnecessary dependencies makes no difference, leaving only:
(BTW, is there any way to format blocks of code in trac?)
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src/main/scala"/> <classpathentry kind="src" path="src/test/scala"/> <classpathentry kind="var" path="M2_REPO/junit/junit/4.5/junit-4.5.jar" sourcepath="M2_REPO/junit/junit/4.5/junit-4.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5.jar" sourcepath="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar" sourcepath="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar"/> <classpathentry kind="con" path="ch.epfl.lamp.sdt.launching.SCALA_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path="target/prod"/> </classpath>
Removing unnecessary dependencies makes no difference, leaving only:
(BTW, is there any way to format blocks of code in trac?)
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src/main/scala"/> <classpathentry kind="src" path="src/test/scala"/> <classpathentry kind="var" path="M2_REPO/junit/junit/4.5/junit-4.5.jar" sourcepath="M2_REPO/junit/junit/4.5/junit-4.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5.jar" sourcepath="M2_REPO/org/scalacheck/scalacheck/1.5/scalacheck-1.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar" sourcepath="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar"/> <classpathentry kind="con" path="ch.epfl.lamp.sdt.launching.SCALA_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path="target/prod"/> </classpath>
on 2009-05-06 21:20 *
By tracImporter
Trac author: memelet
And further trimmed down to:
class CompilerErrorTest extends JUnit3Suite
But of course the following compiles ok:
class CompilerErrorTest This is not what I expected. So it must be something to do with the dependencies.
....
Well, I moved the two remaining dependencies (junit-4.5.jar and scalatest-0.9.5.jar from my local maven repository and put then in ./lib within the project tree (ie, no more variable M2_REPO ---> No more compile error.
So it appears that the plugin is not resolving the eclipse variables correctly. But only for complication, as I can traverse to source when the project is configured with the M2_REPO.
Hope this helps.
And further trimmed down to:
class CompilerErrorTest extends JUnit3Suite
But of course the following compiles ok:
class CompilerErrorTest This is not what I expected. So it must be something to do with the dependencies.
....
Well, I moved the two remaining dependencies (junit-4.5.jar and scalatest-0.9.5.jar from my local maven repository and put then in ./lib within the project tree (ie, no more variable M2_REPO ---> No more compile error.
So it appears that the plugin is not resolving the eclipse variables correctly. But only for complication, as I can traverse to source when the project is configured with the M2_REPO.
Hope this helps.
on 2009-05-06 21:22 *
By tracImporter
Trac author: memelet
Replying to memelet:
(BTW, is there any way to format blocks of code in trac?)
Ok, wiki formatting. Duh.
Replying to memelet:
(BTW, is there any way to format blocks of code in trac?)
Ok, wiki formatting. Duh.
on 2009-05-06 21:35 *
By tracImporter
Trac author: memelet
Finally, I changed all my var/M2_REPO dependencies to var/external-jar and now my entire project compiles.
(Now if only I can run a test like in Idea (ie, "Run as ScalaTest"). In fact, I'd be happy to run a test in any way.)
Finally, I changed all my var/M2_REPO dependencies to var/external-jar and now my entire project compiles.
(Now if only I can run a test like in Idea (ie, "Run as ScalaTest"). In fact, I'd be happy to run a test in any way.)
on 2009-05-06 21:35 *
By tracImporter
Trac author: memelet
(I bet your just loving maven ;-)
(I bet your just loving maven ;-)
on 2009-05-06 22:23 *
By
Thanks for spending the time to isolate this. Even if you now have a fix, a missing classpath entry shouldn't have crashed the compiler. If you're able to reproduce the simplest variant outside of Eclipse just using the command line tools, it'd be extremely helpful if you could create a new ticket with the component set to "Compiler".
Also, ask on scala-tools@ for advice about running JUnit tests.
Also, ask on scala-tools@ for advice about running JUnit tests.
on 2009-05-06 23:14 *
By tracImporter
Trac author: memelet
I don't think its a compiler problem. I think the plugin is not resolving the eclipse classpath variable (ie, M2_REPO) before providing the jars to compiler.
Oh, wait, you are saying that even though the plugin has bug, the compiler also has a bug because it should not crash due to a specified jar that it cannot find on disk. Ok, I'll try to build a command line failing test. (So far I've only been working within the IDE... but I gotta learn this at some point)
I've read all(?) the posts on scala-tools wrt to running tests. The effort and level of support is really not worth it for me given that Idea has explicit support for running ScalaTests without any hacks, displays the results in the built in test runner, allows for re-running a single test, etc. This kind of test support will be a prereq for me to use eclipse on a regular basis. In the meantime I will continue to test out compilation, navigation, and such in eclipse until it catches up with idea in test support.
Thanks!!
I don't think its a compiler problem. I think the plugin is not resolving the eclipse classpath variable (ie, M2_REPO) before providing the jars to compiler.
Oh, wait, you are saying that even though the plugin has bug, the compiler also has a bug because it should not crash due to a specified jar that it cannot find on disk. Ok, I'll try to build a command line failing test. (So far I've only been working within the IDE... but I gotta learn this at some point)
I've read all(?) the posts on scala-tools wrt to running tests. The effort and level of support is really not worth it for me given that Idea has explicit support for running ScalaTests without any hacks, displays the results in the built in test runner, allows for re-running a single test, etc. This kind of test support will be a prereq for me to use eclipse on a regular basis. In the meantime I will continue to test out compilation, navigation, and such in eclipse until it catches up with idea in test support.
Thanks!!
What's the problem with JUnit support? As far as I can tell standard Eclipse JUnit support Just Works out of the box exactly as for Java. If it doesn't for you, the fresh Trac tickets explaining the issue would be helpful.
on 2009-05-07 03:04 *
By tracImporter
Trac author: memelet
Aside from the junit issue (or non-issue), why is this issue closed? Isn't it still the case that the plugin is not resolving the eclipse M2_REPO variable (or any eclipse classpath variable) prior to invoking the compiler? In my case, the M2_REPO variable is configured correctly, and jars they point to do indeed exist. That the compiler is crashing due the plugin not sending the resolved path the jars seems to be orthogonal to the compiler problem. Or do you believe that I have configured something incorrectly within eclipse?
Aside from the junit issue (or non-issue), why is this issue closed? Isn't it still the case that the plugin is not resolving the eclipse M2_REPO variable (or any eclipse classpath variable) prior to invoking the compiler? In my case, the M2_REPO variable is configured correctly, and jars they point to do indeed exist. That the compiler is crashing due the plugin not sending the resolved path the jars seems to be orthogonal to the compiler problem. Or do you believe that I have configured something incorrectly within eclipse?
Ahh, sorry, I misunderstood your route to a working build ...
Reopening and updating the description appropriately.
Reopening and updating the description appropriately.
on 2009-05-07 03:31 *
By tracImporter
Trac author: ijuma
CC Change: mlists@…
For what is worth eclipse variables work fine here.
CC Change: mlists@…
For what is worth eclipse variables work fine here.
on 2009-05-07 03:52 *
By tracImporter
Trac author: memelet
Something very strange is going on at my end. I took the project that I modified from using the M2_REPO to full paths and converted it back to M2_REPO and compilation worked. Then I went back to maven and did a 'mvn eclipse:eclipse', re-added the scala nature and I again get the compilation error.
I don't see anything different with .project/.class that maven is creating other than the missing scala nature.
If I had a dollar for every hour maven has taken from my life I'd already be off sailing around the world.
Something very strange is going on at my end. I took the project that I modified from using the M2_REPO to full paths and converted it back to M2_REPO and compilation worked. Then I went back to maven and did a 'mvn eclipse:eclipse', re-added the scala nature and I again get the compilation error.
I don't see anything different with .project/.class that maven is creating other than the missing scala nature.
If I had a dollar for every hour maven has taken from my life I'd already be off sailing around the world.
on 2009-05-07 04:09 *
By tracImporter
Trac author: ijuma
I suggest either using one of the seamless maven plugins for Eclipse (IAM or m2e) or configuring mvn eclipse:eclipse so that the Scala nature is not removed:
I suggest either using one of the seamless maven plugins for Eclipse (IAM or m2e) or configuring mvn eclipse:eclipse so that the Scala nature is not removed:
plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <classpathContainers> <classpathContainer> ch.epfl.lamp.sdt.launching.SCALA_CONTAINER
</classpathContainer> <classpathContainer> org.eclipse.jdt.launching.JRE_CONTAINER
</classpathContainer> </classpathContainers> <additionalProjectnatures> <projectnature> ch.epfl.lamp.sdt.core.scalanature
</projectnature> </additionalProjectnatures> <buildcommands> <!--Use buildcommands instead of additionalBuildcommands because we don't want the Java builder to be included --> <buildcommand> ch.epfl.lamp.sdt.core.scalabuilder
</buildcommand> </buildcommands> </configuration> </plugin>
on 2009-05-07 04:29 *
By
So is this just another Maven corrupting Eclipse metadata issue?
on 2009-05-07 04:37 *
By tracImporter
Trac author: ijuma
Hard to say with so much information missing. But since memelet said that he gets the error when re-adding the nature, it seems like avoiding that step (by configuring mvn eclipse:eclipse properly) may help.
There could be an issue in the plugin when it comes to adding the scala nature back (if it is even meant to support that). I don't remember seeing such problem myself though.
Hard to say with so much information missing. But since memelet said that he gets the error when re-adding the nature, it seems like avoiding that step (by configuring mvn eclipse:eclipse properly) may help.
There could be an issue in the plugin when it comes to adding the scala nature back (if it is even meant to support that). I don't remember seeing such problem myself though.
on 2009-05-07 04:43 *
By tracImporter
Trac author: memelet
I already beefed up my pom to add the nature -- still got the compilation failure. But I did isolate the problem (nothing to do with the pom):
I cleared the .classpath of all dependencies, compiled (lots of errors but no compiler failure), added one back, repeat.
Once I got to the scalatest dependency (which just happened to be the last) I reproduced the compiler error. But wait, there's more. If I remove the sourcepath= element then the compilation error is gone! WTF? The source jar referenced does exist, and eclipse can open the sources. Anyway what should that have to do with compilation?
So this causes the compiler error:
I already beefed up my pom to add the nature -- still got the compilation failure. But I did isolate the problem (nothing to do with the pom):
I cleared the .classpath of all dependencies, compiled (lots of errors but no compiler failure), added one back, repeat.
Once I got to the scalatest dependency (which just happened to be the last) I reproduced the compiler error. But wait, there's more. If I remove the sourcepath= element then the compilation error is gone! WTF? The source jar referenced does exist, and eclipse can open the sources. Anyway what should that have to do with compilation?
So this causes the compiler error:
classpathentry kind="var" path="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar"
sourcepath="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar"/>
But this does not:classpathentry kind="var" path="M2_REPO/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar"/>
on 2009-05-07 04:47 *
By
That's a .jar which contains only sources and not classfiles? Can you try feeding that to command-line scalac and see what happens?
on 2009-05-07 04:57 *
By tracImporter
Trac author: memelet
I'm not sure what you mean? Does the plugin pass the source= files to the compiler?
I'm not sure what you mean? Does the plugin pass the source= files to the compiler?
on 2009-05-07 05:01 *
By
Whoops ... misread your comment (again, sorry). I thought that you were saying that the source jar was on the classpath (in which case it would have been passed to scalac).
on 2009-09-30 04:34 *
By tracImporter
Trac author: wadey
CC Change: wsimmons@…
I am running into the same problem, although I am having problems getting a work-around to work. I am trying to use Eclipse + scala 2.7.5 + Maven along with JUnit and ScalaTest and I am getting the following error:
CC Change: wsimmons@…
I am running into the same problem, although I am having problems getting a work-around to work. I am trying to use Eclipse + scala 2.7.5 + Maven along with JUnit and ScalaTest and I am getting the following error:
java.lang.NullPointerException
at scala.tools.nsc.symtab.classfile.AbstractFileReader.<init>(AbstractFileReader.scala:25)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:73)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$$anonfun$doComplete$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$$anonfun$doComplete$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.IdeSupport$class.normalCompile(IdeSupport.scala:5)
at scala.tools.eclipse.ScalaPlugin$ProjectImpl$compiler0$.normalCompile(ScalaPlugin.scala:153)
at scala.tools.nsc.IdeSupport$loaders1$.completeClassfile(IdeSupport.scala:37)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader.doComplete(SymbolLoaders.scala:289)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:77)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.load(SymbolLoaders.scala:97)
at scala.tools.nsc.symtab.Symbols$Symbol.exists(Symbols.scala:425)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2940)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.IdeSupport$Typer.typed1(IdeSupport.scala:128)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:3429)
at scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:3432)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$3.apply(Typers.scala:918)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$3.apply(Typers.scala:918)
at scala.List.map(List.scala:812)
at scala.tools.nsc.typechecker.Typers$Typer.parentTypes(Typers.scala:918)
at scala.tools.nsc.typechecker.Namers$Namer.templateSig(Namers.scala:546)
at scala.tools.nsc.typechecker.Namers$Namer.classSig(Namers.scala:603)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:838)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.typechecker.IdeSupport$Namer$tpe0$2$$anonfun$complete$1.apply(IdeSupport.scala:65)
at scala.tools.nsc.typechecker.IdeSupport$Namer$tpe0$2$$anonfun$complete$1.apply(IdeSupport.scala:64)
at scala.tools.editor.Typers$ParseNodeImpl$$anon$2.doType0(Typers.scala:86)
at scala.tools.editor.Typers$ParseNodeImpl$$anon$2.doType0(Typers.scala:85)
at lampion.compiler.Typers$TypedElementImpl$DoType$class.apply(Typers.scala:30)
at scala.tools.editor.Typers$ParseNodeImpl$$anon$2.apply(Typers.scala:85)
at scala.tools.editor.Typers$ParseNodeImpl$class.activate(Typers.scala:87)
at scala.tools.editor.Driver$ProjectImpl$FileImpl$ParseNode.activate(Driver.scala:25)
at scala.tools.nsc.typechecker.IdeSupport$Namer$tpe0$2$.complete(IdeSupport.scala:64)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.symtab.Symbols$Symbol.initialize(Symbols.scala:669)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3078)
at scala.tools.nsc.typechecker.IdeSupport$Typer.typed1(IdeSupport.scala:128)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.IdeSupport$MemoizedTree$$anonfun$updateTyper$1$$anonfun$apply$6.apply(IdeSupport.scala:336)
at scala.tools.nsc.typechecker.IdeSupport$MemoizedTree$$anonfun$updateTyper$1$$anonfun$apply$6.apply(IdeSupport.scala:336)
at scala.List.map(List.scala:812)
at scala.tools.nsc.typechecker.IdeSupport$MemoizedTree$$anonfun$updateTyper$1.apply(IdeSupport.scala:336)
at scala.tools.nsc.typechecker.IdeSupport$MemoizedTree$$anonfun$updateTyper$1.apply(IdeSupport.scala:335)
at scala.tools.editor.Typers$ParseNodeImpl$$anon$2.doType0(Typers.scala:86)
at scala.tools.editor.Typers$ParseNodeImpl$$anon$2.doType0(Typers.scala:85)
at lampion.compiler.Typers$TypedElementImpl$DoType$class.apply(Typers.scala:30)
at scala.tools.editor.Typers$ParseNodeImpl$$anon$2.apply(Typers.scala:85)
at scala.tools.editor.Typers$ParseNodeImpl$class.activate(Typers.scala:87)
at scala.tools.editor.Driver$ProjectImpl$FileImpl$ParseNode.activate(Driver.scala:25)
at scala.tools.nsc.typechecker.IdeSupport$MemoizedTree$class.updateTyper(IdeSupport.scala:335)
at scala.tools.editor.Driver$ProjectImpl$FileImpl$ParseNode.updateTyper(Driver.scala:25)
at scala.tools.nsc.typechecker.IdeSupport$MemoizedTree$class.doTyper(IdeSupport.scala:307)
at scala.tools.editor.Driver$ProjectImpl$FileImpl$ParseNode.doTyper(Driver.scala:25)
at scala.tools.editor.Typers$$anonfun$flushTyper0$2.apply(Typers.scala:164)
at scala.tools.editor.Typers$$anonfun$flushTyper0$2.apply(Typers.scala:163)
at scala.List.foreach(List.scala:841)
at scala.tools.editor.Typers$class.flushTyper0(Typers.scala:163)
at scala.tools.eclipse.Driver$Project.flushTyper0(Driver.scala:16)
at lampion.compiler.Typers$class.flushTyper(Typers.scala:169)
at scala.tools.eclipse.Driver$Project.flushTyper(Driver.scala:16)
at lampion.compiler.Typers$class.afterParsing(Typers.scala:193)
at scala.tools.eclipse.Driver$Project.afterParsing(Driver.scala:16)
at lampion.presentation.Presentations$ProjectImpl$class.protected$afterParsing(Presentations.scala:338)
at scala.tools.eclipse.Driver$Project.protected$afterParsing(Driver.scala:16)
at lampion.presentation.Presentations$ProjectImpl$Job.run(Presentations.scala:338)
on 2009-09-30 04:39 *
By tracImporter
Trac author: wadey
Replying to wadey:
Also, I forgot to mention that I am using m2eclipse, not "mvn eclipse:eclipse". Because of this, I can't just edit the <classpathentry ...> elements to try to get it to work.
Replying to wadey:
Also, I forgot to mention that I am using m2eclipse, not "mvn eclipse:eclipse". Because of this, I can't just edit the <classpathentry ...> elements to try to get it to work.
on 2009-09-30 17:21 *
By
My understanding is that m2eclipse will break projects whose natures it doesn't understand. I'd be happy to accept a patch which adds m2eclipse support to the Scala IDE, but in the meantime I recommend using some other Eclipse/Maven integration or none at all.
Updating tickets (#1000069, #1000195, #1000213, #1000223, #1000006, #1000021, #1000038, #1000048, #1000051, #1000052, #1000075, #1000103, #1000109, #1000115, #1000119, #1000156, #1000186, #1000207, #1000238, #1000262, #1000263, #380, #389, #683, #1238, #1331, #1635, #1645, #1715, #1729, #1744, #1783, #1839, #1869, #1885, #1890, #1902, #1918, #1919, #1924, #1925, #1946, #1964, #1991, #2131, #2233, #2342, #2348, #2408, #2459, #2499, #2523, #2572, #2582, #2602, #2614, #2615, #2675, #2710, #2745, #2763, #2816, #2830, #2834, #2878, #2879, #2887, #2888, #2901, #2911, #2912, #2922, #2937, #2938, #2942, #2951, #2955, #2957, #2961, #2964, #2965, #2974, #2975, #2989, #2990, #3002, #3055, #3070, #3087, #3135, #3139, #3173, #3182, #3184, #3200, #3213, #3214, #3221, #3243, #3251)
on 2011-03-24 22:18 *
By Iulian Dragos
Updating tickets (#1000199, #1000200, #1000201, #1000204, #1000205, #1000209, #1000210, #1000211, #1000212, #1000215, #1000217, #1000218, #1000220, #1000222, #1000226, #1000227, #1000228, #1000230, #1000231, #1000232, #1000233, #1000235, #1000236, #1000237, #1000239, #1000240, #1000241, #1000242, #1000243, #1000244, #1000248, #1000249, #1000252, #1000253, #1000254, #1000255, #1000256, #1000258, #1000259, #1000032, #1000059, #1000062, #1000163, #1000197, #1000216, #1000221, #1000224, #1000121, #1000175, #1000219, #1000251, #1000069, #1000195, #1000213, #1000223, #1000006, #1000021, #1000038, #1000048, #1000051, #1000052, #1000075, #1000103, #1000109, #1000115, #1000119, #1000156, #1000186, #1000207, #1000238, #1000262, #1000263, #380, #389, #683, #1238, #1331, #1635, #1645, #1715, #1729, #1744, #1783, #1839, #1869, #1885, #1890, #1902, #1918, #1919, #1924, #1925, #1946, #1964, #1991, #2131, #2233, #2342, #2348, #2408)