Skip to content
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

REPL crashes on repeated TAB presses #6884

Closed
scabug opened this issue Dec 27, 2012 · 1 comment
Closed

REPL crashes on repeated TAB presses #6884

scabug opened this issue Dec 27, 2012 · 1 comment

Comments

@scabug
Copy link

scabug commented Dec 27, 2012

It seems like the REPL will crash when TAB is pressed repeatedly. Immediately after REPL start, press TAB three to five times. This will result in a long error message, pasted below. The next command issued, for instance print(), will crash the REPL with an exception.

This error exists in 2.10 RC5, but not in 2.9.2.

Error message after tab presses:

scala> error:
while compiling:
during phase: global=erasure, atPhase=explicitouter
library version: version 2.10.0-RC5
compiler version: version 2.10.0-RC5
reconstructed args:

last tree to typer: TypeTree(class Unit)
symbol: class Unit in package scala (flags: final abstract)
symbol definition: final abstract class Unit extends AnyVal
tpe: Unit
symbol owners: class Unit -> package scala
context owners: object $eval -> package $line1

== Enclosing template or block ==

ClassDef( // class $eval extends Object in package $line1

"$eval"
[]
Template( // val <local $eval>: in object $eval, tree.tpe=type
"java.lang.Object" // parents
ValDef(
private
""


)
// 5 statements
DefDef( // def (): type in object $eval

""
[]
List(Nil)
// tree.tpe=type
Block( // tree.tpe=Unit
Apply( // def (): Object in class Object, tree.tpe=Object
$eval.super."" // def (): Object in class Object, tree.tpe=()Object
Nil
)
()
)
)
ValDef( // private[this] var value: scala.tools.nsc.interpreter.IMain in object $eval
private
"value "
// tree.tpe=scala.tools.nsc.interpreter.IMain

)
DefDef( // def value: scala.tools.nsc.interpreter.IMain in object $eval

"value"
[]
List(Nil)
// tree.tpe=scala.tools.nsc.interpreter.IMain
$eval.this."value " // private[this] var value: scala.tools.nsc.interpreter.IMain in object $eval, tree.tpe=scala.tools.nsc.interpreter.IMain
)
DefDef( // def value
=(x$1: scala.tools.nsc.interpreter.IMain): Unit in object $eval

"value_$eq"
[]
// 1 parameter list
ValDef( // x$1: scala.tools.nsc.interpreter.IMain

"x$1"
// tree.tpe=scala.tools.nsc.interpreter.IMain

)
// tree.tpe=Unit
Assign( // tree.tpe=Unit
$eval.this."value " // private[this] var value: scala.tools.nsc.interpreter.IMain in object $eval, tree.tpe=scala.tools.nsc.interpreter.IMain
"x$1" // x$1: scala.tools.nsc.interpreter.IMain, tree.tpe=scala.tools.nsc.interpreter.IMain
)
)
DefDef( // def set(x: Any): Unit in object $eval

"set"
[]
// 1 parameter list
ValDef( // x: Any

"x"
// tree.tpe=Any

)
// tree.tpe=Unit
Apply( // def value_=(x$1: scala.tools.nsc.interpreter.IMain): Unit in object $eval, tree.tpe=Unit
$eval.this."value_$eq" // def value_=(x$1: scala.tools.nsc.interpreter.IMain): Unit in object $eval, tree.tpe=(x$1: scala.tools.nsc.interpreter.IMain)Unit
Apply( // final def asInstanceOfT0: T0 in class Any, tree.tpe=scala.tools.nsc.interpreter.IMain
TypeApply( // final def asInstanceOf[T0]: T0 in class Any, tree.tpe=()scala.tools.nsc.interpreter.IMain
"x"."asInstanceOf" // final def asInstanceOf[T0]: T0 in class Any, tree.tpe=T0T0
// tree.tpe=scala.tools.nsc.interpreter.IMain
)
Nil
)
)
)
)
)

== Expanded type of tree ==

TypeRef(TypeSymbol(final abstract class Unit extends AnyVal))

uncaught exception during compilation: java.lang.AssertionError

Exception after subsequent command:

scala> print()

Failed to initialize the REPL due to an unexpected error.
This is a bug, please, report it along with the error diagnostics printed below.
java.lang.AssertionError: assertion failed: TypeHistory(repl:2,Object,TypeHistory(erasure:2,Object,null))
at scala.reflect.internal.Symbols$TypeHistory.(Symbols.scala:3293)
at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1301)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1227)
at scala.reflect.internal.Types$TypeMap$$anonfun$noChangeToSymbols$1.apply(Types.scala:4222)
at scala.reflect.internal.Types$TypeMap$$anonfun$noChangeToSymbols$1.apply(Types.scala:4222)
at scala.collection.LinearSeqOptimized$class.forall(LinearSeqOptimized.scala:69)
at scala.collection.immutable.List.forall(List.scala:78)
at scala.reflect.internal.Types$TypeMap.noChangeToSymbols(Types.scala:4222)
at scala.reflect.internal.Types$TypeMap.mapOver(Types.scala:4235)
at scala.reflect.internal.Types$TypeMap.mapOver(Types.scala:4138)
at scala.tools.nsc.transform.PostErasure$elimErasedValueType$.apply(PostErasure.scala:28)
at scala.tools.nsc.transform.PostErasure$class.transformInfo(PostErasure.scala:32)
at scala.tools.nsc.Global$postErasure$.transformInfo(Global.scala:567)
at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:38)
at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1299)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1227)
at scala.reflect.internal.Symbols$Symbol.tpe(Symbols.scala:1189)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$5$$anonfun$matches$1.apply(Erasure.scala:925)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$5$$anonfun$matches$1.apply(Erasure.scala:925)
at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:201)
at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:210)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$5.matches(Erasure.scala:925)
at scala.tools.nsc.transform.OverridingPairs$Cursor.next(OverridingPairs.scala:204)
at scala.tools.nsc.transform.OverridingPairs$Cursor.(OverridingPairs.scala:224)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$5.(Erasure.scala:918)
at scala.tools.nsc.transform.Erasure$ErasureTransformer.scala$tools$nsc$transform$Erasure$ErasureTransformer$$checkNoDoubleDefs(Erasure.scala:918)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.preErase(Erasure.scala:1207)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1242)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1001)
at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2840)
at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1251)
at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1250)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1249)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1254)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1001)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2863)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2861)
at scala.collection.immutable.List.loop$1(List.scala:164)
at scala.collection.immutable.List.mapConserve(List.scala:180)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2861)
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1269)
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1269)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1268)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1254)
at scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:1264)
at scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:876)
at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
at scala.tools.nsc.interpreter.IMain.compileSourcesKeepingRun(IMain.scala:425)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compileAndSaveRun(IMain.scala:798)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compile(IMain.scala:758)
at scala.tools.nsc.interpreter.IMain.bind(IMain.scala:615)
at scala.tools.nsc.interpreter.IMain.bind(IMain.scala:658)
at scala.tools.nsc.interpreter.IMain$$anonfun$quietBind$1.apply(IMain.scala:657)
at scala.tools.nsc.interpreter.IMain$$anonfun$quietBind$1.apply(IMain.scala:657)
at scala.tools.nsc.interpreter.IMain.beQuietDuring(IMain.scala:232)
at scala.tools.nsc.interpreter.IMain.quietBind(IMain.scala:657)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1$$anonfun$apply$mcZ$sp$2.apply$mcV$sp(ILoop.scala:838)
at scala.tools.nsc.interpreter.ILoopInit$class.runThunks(ILoopInit.scala:122)
at scala.tools.nsc.interpreter.ILoop.runThunks(ILoop.scala:42)
at scala.tools.nsc.interpreter.ILoopInit$class.postInitialization(ILoopInit.scala:95)
at scala.tools.nsc.interpreter.ILoop.postInitialization(ILoop.scala:42)
at scala.tools.nsc.interpreter.ILoopInit$$anonfun$createAsyncListener$1.apply$mcV$sp(ILoopInit.scala:63)
at scala.tools.nsc.interpreter.ILoopInit$$anonfun$createAsyncListener$1.apply(ILoopInit.scala:60)
at scala.tools.nsc.interpreter.ILoopInit$$anonfun$createAsyncListener$1.apply(ILoopInit.scala:60)
at scala.tools.nsc.io.package$$anon$3.call(package.scala:40)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

@scabug
Copy link
Author

scabug commented Dec 27, 2012

Imported From: https://issues.scala-lang.org/browse/SI-6884?orig=1
Reporter: Haakon Nilsen (haakon)
Affected Versions: 2.10.0-RC5
Duplicates #6299

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants