-
Notifications
You must be signed in to change notification settings - Fork 21
Closed
Description
When the following ScalaTest is executed from within Intellij then an exception is throws (stacktrace see below) or it deadlocks if executed from within sbt (jstack output is attached).
package eu.swdev.play.form
import org.scalatest.FunSuite
import scala.reflect.runtime.{ universe => ru }
/**
*/
class ReflectionTest extends FunSuite {
trait FormTrait {
val runtimeMirror = ru.runtimeMirror(this.getClass.getClassLoader)
val instanceMirror = runtimeMirror.reflect(this)
val members = instanceMirror.symbol.typeSignature.members
def fields = members.filter(_.typeSignature <:< ru.typeOf[Int])
}
test("reflection test 2") {
class Form1 extends FormTrait {
val f1 = 5
}
val form1 = new Form1
println(form1.fields)
val form2 = new FormTrait {
val g1 = new Form1
}
val x = form2.g1.f1 // comment this line in order to make the test pass
}
}The really strange thing is that the check passes if the last line, i.e. the val x = ... assignment is commented.
Stacktrace when executing test using Intellij:
scala.reflect.internal.FatalError: no-symbol does not have an owner
at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:49)
at scala.reflect.internal.Symbols$NoSymbol.owner(Symbols.scala:3248)
at scala.reflect.internal.Symbols$Symbol.newSyntheticValueParam(Symbols.scala:346)
at scala.reflect.internal.Symbols$Symbol$$anonfun$newSyntheticValueParams$1.apply(Symbols.scala:340)
at scala.reflect.internal.Symbols$Symbol$$anonfun$newSyntheticValueParams$1.apply(Symbols.scala:340)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at scala.reflect.internal.Symbols$Symbol.newSyntheticValueParams(Symbols.scala:340)
at scala.reflect.internal.Symbols$Symbol.newSyntheticValueParams(Symbols.scala:337)
at scala.reflect.runtime.JavaMirrors$JavaMirror.setMethType(JavaMirrors.scala:1093)
at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jmethodAsScala1(JavaMirrors.scala:1112)
at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$JavaMirror$$jmethodAsScala$1.apply(JavaMirrors.scala:1103)
at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$JavaMirror$$jmethodAsScala$1.apply(JavaMirrors.scala:1103)
at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$toScala$1.apply(JavaMirrors.scala:104)
at scala.reflect.runtime.TwoWayCache.toScala(TwoWayCache.scala:38)
at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:102)
at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jmethodAsScala(JavaMirrors.scala:1103)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter$$anonfun$1$$anonfun$apply$mcV$sp$2.apply(JavaMirrors.scala:707)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter$$anonfun$1$$anonfun$apply$mcV$sp$2.apply(JavaMirrors.scala:706)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter$$anonfun$1.apply$mcV$sp(JavaMirrors.scala:706)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.completeRest(JavaMirrors.scala:720)
at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter$LazyPolyType.complete(JavaMirrors.scala:727)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1229)
at scala.reflect.internal.Types$ClassTypeRef$class.baseType(Types.scala:2186)
at scala.reflect.internal.Types$TypeRef$$anon$6.baseType(Types.scala:2544)
at scala.reflect.internal.Types$class.firstTry$1(Types.scala:6058)
at scala.reflect.internal.Types$class.isSubType2(Types.scala:6222)
at scala.reflect.internal.Types$class.isSubType(Types.scala:5831)
at scala.reflect.runtime.JavaUniverse.scala$reflect$runtime$SynchronizedTypes$$super$isSubType(JavaUniverse.scala:12)
at scala.reflect.runtime.SynchronizedTypes$class.isSubType(SynchronizedTypes.scala:60)
at scala.reflect.runtime.JavaUniverse.isSubType(JavaUniverse.scala:12)
at scala.reflect.internal.Types$Type.$less$colon$less(Types.scala:872)
at scala.reflect.internal.Types$Type.$less$colon$less(Types.scala:343)
at eu.swdev.play.form.ReflectionTest$FormTrait$$anonfun$fields$1.apply(ReflectionTest.scala:15)
at eu.swdev.play.form.ReflectionTest$FormTrait$$anonfun$fields$1.apply(ReflectionTest.scala:15)
at scala.collection.TraversableLike$$anonfun$filter$1.apply(TraversableLike.scala:264)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.filter(TraversableLike.scala:263)
at scala.collection.AbstractTraversable.filter(Traversable.scala:105)
at scala.reflect.internal.Scopes$Scope.filter(Scopes.scala:318)
at scala.reflect.internal.Scopes$Scope.filter(Scopes.scala:44)
at eu.swdev.play.form.ReflectionTest$FormTrait$class.fields(ReflectionTest.scala:15)
at eu.swdev.play.form.ReflectionTest$$anonfun$1$Form1$1.fields(ReflectionTest.scala:20)
at eu.swdev.play.form.ReflectionTest$$anonfun$1.apply$mcV$sp(ReflectionTest.scala:25)
at eu.swdev.play.form.ReflectionTest$$anonfun$1.apply(ReflectionTest.scala:18)
at eu.swdev.play.form.ReflectionTest$$anonfun$1.apply(ReflectionTest.scala:18)
at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22)
at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22)
at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:139)
at org.scalatest.Suite$class.withFixture(Suite.scala:1121)
at org.scalatest.FunSuite.withFixture(FunSuite.scala:1371)
at org.scalatest.FunSuiteLike$class.invokeWithFixture$1(FunSuiteLike.scala:136)
at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:148)
at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:148)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
at org.scalatest.FunSuiteLike$class.runTest(FunSuiteLike.scala:148)
at org.scalatest.FunSuite.runTest(FunSuite.scala:1371)
at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:180)
at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:180)
at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)
at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
at scala.collection.immutable.List.foreach(List.scala:318)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)
at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)
at org.scalatest.FunSuiteLike$class.runTests(FunSuiteLike.scala:180)
at org.scalatest.FunSuite.runTests(FunSuite.scala:1371)
at org.scalatest.Suite$class.run(Suite.scala:1437)
at org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1371)
at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:184)
at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:184)
at org.scalatest.SuperEngine.runImpl(Engine.scala:545)
at org.scalatest.FunSuiteLike$class.run(FunSuiteLike.scala:184)
at org.scalatest.FunSuite.run(FunSuite.scala:1371)
at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:55)
at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2518)
at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2512)
at scala.collection.immutable.List.foreach(List.scala:318)
at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2512)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1006)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1005)
at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2659)
at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1005)
at org.scalatest.tools.Runner$.run(Runner.scala:845)
at org.scalatest.tools.Runner.run(Runner.scala)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:144)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:35)
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:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)