New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
productIterator not implemented in case class in REPL w -optimize #5290
Comments
Imported From: https://issues.scala-lang.org/browse/SI-5290?orig=1 |
@VladUreche said: |
Anton Malykh (malykh) said: C:\Soft\scala-2.9.1.final>scala -version C:\Soft\scala-2.9.1.final>scala -optimize scala> case class A(x: Int) scala> A(1).productIterator |
@paulp said: |
Anton Malykh (malykh) said: C:\Soft\scala-2.9.2\bin>java -version C:\Soft\scala-2.9.2\bin>scala -version C:\Soft\scala-2.9.2\bin>scala -optimize scala> case class A(x: Int) scala> A(1).productIterator |
Anton Malykh (malykh) said: |
@axel22 said (edited on May 2, 2012 4:53:16 PM UTC): Running scala> case class A(x: Int)
error:
while compiling: <console>
current phase: mixin
library version: version 2.10.0-20120502-012746-90d2bee45b
compiler version: version 2.10.0-20120502-012746-90d2bee45b
reconstructed args: -Ydead-code -optimise -Yinline -Yclosure-elim -Yinline-handlers
uncaught exception during compilation: java.lang.AssertionError
java.lang.AssertionError: assertion failed:
while compiling: <console>
current phase: mixin
library version: version 2.10.0-20120502-012746-90d2bee45b
compiler version: version 2.10.0-20120502-012746-90d2bee45b
reconstructed args: -Ydead-code -optimise -Yinline -Yclosure-elim -Yinline-handlers
Not an impl class:(class Product$class in package scala abstract <java>,trait Product in package scala abstract <interface> <trait> <lateinterface>)
at scala.Predef$.assert(Predef.scala:182)
at scala.tools.nsc.Global.assert(Global.scala:187)
at scala.tools.nsc.transform.Mixin.mixinImplClassMembers$1(Mixin.scala:275)
at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$2.apply(Mixin.scala:372)
at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$2.apply(Mixin.scala:367)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:757)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:77)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:756)
at scala.tools.nsc.transform.Mixin.addMixedinMembers(Mixin.scala:367)
at scala.tools.nsc.transform.Mixin$MixinTransformer.preTransform(Mixin.scala:521)
at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1238)
at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:1538)
at scala.reflect.api.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:1432)
at scala.reflect.api.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:1431)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:1561)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:1430)
at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1238)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$2.apply(Trees.scala:1554)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$2.apply(Trees.scala:1552)
at scala.collection.immutable.List.loop$1(List.scala:163)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:1552)
at scala.reflect.api.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:1426)
at scala.reflect.api.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:1426)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:1561)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:1425)
at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1238)
at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:228)
at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:432)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:398)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:392)
at scala.collection.Iterator$class.foreach(Iterator.scala:706)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1133)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:392)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1336)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1309)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1303)
at scala.tools.nsc.interpreter.IMain.compileSourcesKeepingRun(IMain.scala:461)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compileAndSaveRun(IMain.scala:845)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compile(IMain.scala:803)
at scala.tools.nsc.interpreter.IMain$Request.compile(IMain.scala:979)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:629)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:595)
at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:826)
at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:883)
at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:783)
at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:647)
at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:654)
at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:657)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:962)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:924)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:924)
at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:157)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:924)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:79)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:92)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) |
@adriaanm said: |
@som-snytt said: |
If you run the scala REPL with -optimize in 2.9.1, then case classes don't auto-generate the productIterator method and calling it (or toString, eg) will causes an AbstractMethodError. This does NOT happen in 2.9.0 and 2.8.x. Reproducing:
$ scala -optimize
scala> case class A(x: Int)
scala> A(1).productIterator
java.lang.AbstractMethodError: A.productIterator()Lscala/collection/Iterator;
at .(:10)
at .()
at .(:11)
at .()
at $print()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704)
at scala.tools.nsc.interpreter.IMain$Request$$anonfun$14.apply(IMain.scala:920)
at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:43)
at scala.tools.nsc.io.package$$anon$2.run(package.scala:25)
at java.lang.Thread.run(Thread.java:680)
Just doing
A(1)
by itself will also cause an exception, since scala.runtime.ScalaRuntime$._toString uses productIterator. This also happens when using sbt> console w/ "-optimize" as a "scalacOption", which is where I first noticed it, since I would've never run the REPL with -optimize otherwise.The text was updated successfully, but these errors were encountered: