scala / bug

Scala 2 bug reports only. Please, no questions — proper bug reports only.
https://scala-lang.org
232 stars 21 forks source link

interpreter crash with case class copy methods #3001

Closed scabug closed 13 years ago

scabug commented 14 years ago

Creating a case class and then trying to copy it causes a stream of weird type errors followed by an InterpreterEvalException.

$$ scala
Welcome to Scala version 2.8.0.r20644-b20100124092920 (Java HotSpot(TM) Client VM, Java 1.5.0_20).
Type in expressions to have them evaluated.
Type :help for more information.

scala> case class Point(x: Int, y: Int)
defined class Point

scala> val p = Point(3,4)
p: Point = Point(3,4)

scala> p.copy(x=3)
<console>:8: error: value $$iw is not a member of object $$iw
         def f(implicit x: (Point => scala.tools.nsc.interpreter.CompletionAware) = null): Point => scala.tools.nsc.interpreter.CompletionAware = x
                                ^
<console>:8: error: value $$iw is not a member of object $$iw
         def f(implicit x: (Point => scala.tools.nsc.interpreter.CompletionAware) = null): Point => scala.tools.nsc.interpreter.CompletionAware = x
                                                                                                       ^
<console>:5: error: recursive value synthvar$$1 needs type
       synthvar$$1
       ^
Exception in thread "main" scala.tools.nsc.Interpreter$$InterpreterEvalException: Eval error.
        at scala.tools.nsc.Interpreter.evalError(Interpreter.scala:1022)
        at scala.tools.nsc.Interpreter.evalExpr(Interpreter.scala:1047)
        at scala.tools.nsc.Interpreter.completionAwareImplicit(Interpreter.scala:1006)
        at scala.tools.nsc.interpreter.IdentCompletion$$$$anonfun$$follow$$1.apply(IdentCompletion.scala:17)
        at scala.tools.nsc.interpreter.IdentCompletion$$$$anonfun$$follow$$1.apply(IdentCompletion.scala:17)
        at scala.Option.orElse(Option.scala:121)
        at scala.tools.nsc.interpreter.IdentCompletion.follow(IdentCompletion.scala:16)
        at scala.tools.nsc.interpreter.CompletionAware$$class.executionFor(CompletionAware.scala:71)
        at scala.tools.nsc.interpreter.IdentCompletion.executionFor(IdentCompletion.scala:12)
        at scala.tools.nsc.interpreter.Completion$$$$anonfun$$execute$$1.apply(Completion.scala:87)
        at scala.tools.nsc.interpreter.Completion$$$$anonfun$$execute$$1.apply(Completion.scala:87)
        at scala.collection.LinearSeqLike$$class.foreach(LinearSeqLike.scala:97)
        at scala.collection.immutable.List.foreach(List.scala:46)
        at scala.tools.nsc.interpreter.Completion.execute(Completion.scala:87)
        at scala.tools.nsc.InterpreterLoop$$$$anonfun$$18.apply(InterpreterLoop.scala:402)
        at scala.tools.nsc.InterpreterLoop$$$$anonfun$$18.apply(InterpreterLoop.scala:402)
        at scala.Option.flatMap(Option.scala:81)
        at scala.tools.nsc.InterpreterLoop.interpretStartingWith(InterpreterLoop.scala:402)
        at scala.tools.nsc.InterpreterLoop.command(InterpreterLoop.scala:355)
        at scala.tools.nsc.InterpreterLoop.processLine$$1(InterpreterLoop.scala:233)
        at scala.tools.nsc.InterpreterLoop.repl(InterpreterLoop.scala:252)
        at scala.tools.nsc.InterpreterLoop.main(InterpreterLoop.scala:444)
        at scala.tools.nsc.MainGenericRunner$$.createLoop$$1(MainGenericRunner.scala:118)
        at scala.tools.nsc.MainGenericRunner$$.main(MainGenericRunner.scala:143)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
scabug commented 14 years ago

Imported From: https://issues.scala-lang.org/browse/SI-3001?orig=1 Reporter: @lexspoon

scabug commented 14 years ago

@paulp said: There was some sketchy repl code out there for a short period, but it should be all healthy with any slightly more recent trunk build.

scala> case class Point(x: Int, y: Int)
defined class Point

scala> val p = Point(3,4)
p: Point = Point(3,4)

scala> p.copy(x = 3)
res0: Point = Point(3,4)