scala> case class verywrong(`a b`: Int, a: String) error: while compiling: during phase: constructors library version: version 2.10.4 compiler version: version 2.10.4 reconstructed args: last tree to typer: Ident(a b) symbol: value a b (flags: ) symbol definition: a b: Int symbol owners: value a b -> constructor verywrong -> class verywrong -> object $iw -> object $iw -> object $read -> package $line5 context owners: class verywrong -> object $iw -> object $iw -> object $read -> package $line5 == Enclosing template or block == Template( // val : in class verywrong, tree.tpe=verywrong "java.lang.Object", "scala.Product", "scala.Serializable" // parents ValDef( private "_" ) // 16 statements ValDef( // private[this] val a b: Int in class verywrong private "a$u0020b " // tree.tpe=Int ) DefDef( // val a b(): Int in class verywrong "a$u0020b" [] List(Nil) // tree.tpe=Int verywrong.this."a$u0020b " // private[this] val a b: Int in class verywrong, tree.tpe=Int ) ValDef( // private[this] val a: String in class verywrong private "a " // tree.tpe=String ) DefDef( // val a(): String in class verywrong "a" [] List(Nil) // tree.tpe=String verywrong.this."a " // private[this] val a: String in class verywrong, tree.tpe=String ) DefDef( // def (a b: Int,a: String): verywrong in class verywrong "" [] // 1 parameter list ValDef( // a b: Int "a$u0020b" // tree.tpe=Int ) ValDef( // a: String "a" // tree.tpe=String ) // tree.tpe=verywrong Block( // tree.tpe=Unit // 2 statements Apply( // def (): Object in class Object, tree.tpe=Object verywrong.super."" // def (): Object in class Object, tree.tpe=()Object Nil ) Apply( // def $init$(): Unit in class Product$class, tree.tpe=Unit verywrong.this.$asInstanceOf[Product$class]()."$init$" // def $init$(): Unit in class Product$class, tree.tpe=()Unit Nil ) () ) ) DefDef( // def copy(a b: Int,a: String): verywrong in class verywrong "copy" [] // 1 parameter list ValDef( // a b: Int "a$u0020b" // tree.tpe=Int ) ValDef( // a: String "a" // tree.tpe=String ) // tree.tpe=verywrong Apply( // def (a b: Int,a: String): verywrong in class verywrong, tree.tpe=verywrong new verywrong."" // def (a b: Int,a: String): verywrong in class verywrong, tree.tpe=(a b: Int, a: String)verywrong // 2 arguments "a$u0020b" // a b: Int, tree.tpe=Int "a" // a: String, tree.tpe=String ) ) DefDef( // def copy$default$1(): Int in class verywrong "copy$default$1" [] List(Nil) // tree.tpe=Int Apply( // val a b(): Int in class verywrong, tree.tpe=Int verywrong.this."a$u0020b" // val a b(): Int in class verywrong, tree.tpe=()Int Nil ) ) DefDef( // def copy$default$2(): String in class verywrong "copy$default$2" [] List(Nil) // tree.tpe=String Apply( // val a(): String in class verywrong, tree.tpe=String verywrong.this."a" // val a(): String in class verywrong, tree.tpe=()String Nil ) ) DefDef( // override def productPrefix(): String in class verywrong override "productPrefix" [] List(Nil) // tree.tpe=String "verywrong" ) DefDef( // def productArity(): Int in class verywrong "productArity" [] List(Nil) // tree.tpe=Int 2 ) DefDef( // def productElement(x$1: Int): Object in class verywrong "productElement" [] // 1 parameter list ValDef( // x$1: Int "x$1" // tree.tpe=Int ) // tree.tpe=Object Block( // tree.tpe=Object ValDef( // case val x1: Int case "x1" // tree.tpe=Int "x$1" // x$1: Int, tree.tpe=Int ) Match( // tree.tpe=Object Typed( // tree.tpe=Int "x1" // case val x1: Int, tree.tpe=Int // tree.tpe=Int ) // 3 cases CaseDef( // tree.tpe=Object 0 Apply( // def box(x: Int): Integer in object Int, tree.tpe=Object "scala"."Int"."box" // def box(x: Int): Integer in object Int, tree.tpe=(x: Int)Integer Apply( // val a b(): Int in class verywrong, tree.tpe=Int verywrong.this."a$u0020b" // val a b(): Int in class verywrong, tree.tpe=()Int Nil ) ) ) CaseDef( // tree.tpe=String 1 Apply( // val a(): String in class verywrong, tree.tpe=String verywrong.this."a" // val a(): String in class verywrong, tree.tpe=()String Nil ) ) CaseDef( // tree.tpe=Nothing "_" // tree.tpe=Int Throw( // tree.tpe=Nothing Apply( // def (x$1: String): IndexOutOfBoundsException in class IndexOutOfBoundsException, tree.tpe=IndexOutOfBoundsException new IndexOutOfBoundsException."" // def (x$1: String): IndexOutOfBoundsException in class IndexOutOfBoundsException, tree.tpe=(x$1: String)IndexOutOfBoundsException Apply( // def toString(): String in class Object, tree.tpe=String scala.Int.box(x$1)."toString" // def toString(): String in class Object, tree.tpe=()String Nil ) ) ) ) ) ) ) DefDef( // override def productIterator(): Iterator in class verywrong override "productIterator" [] List(Nil) // tree.tpe=Iterator Apply( // def typedProductIterator(x: Product): Iterator in object ScalaRunTime, tree.tpe=Iterator runtime.this."ScalaRunTime"."typedProductIterator" // def typedProductIterator(x: Product): Iterator in object ScalaRunTime, tree.tpe=(x: Product)Iterator This("verywrong")case class verywrong extends Product with Serializable, tree.tpe=verywrong ) ) DefDef( // def canEqual(x$1: Object): Boolean in class verywrong "canEqual" [] // 1 parameter list ValDef( // x$1: Object "x$1" // tree.tpe=Object ) // tree.tpe=Boolean Apply( // final def $isInstanceOf[T0 >: ? <: ?](): Boolean in class Object, tree.tpe=Boolean TypeApply( // final def $isInstanceOf[T0 >: ? <: ?](): Boolean in class Object, tree.tpe=()Boolean "x$1"."$isInstanceOf" // final def $isInstanceOf[T0 >: ? <: ?](): Boolean in class Object, tree.tpe=[T0 >: ? <: ?]()Boolean // tree.tpe=verywrong ) Nil ) ) DefDef( // override def hashCode(): Int in class verywrong override "hashCode" [] List(Nil) // tree.tpe=Int Block( // tree.tpe=Int // 3 statements ValDef( // var acc: Int "acc" // tree.tpe=Int -889275714 ) Assign( // tree.tpe=Unit "acc" // var acc: Int, tree.tpe=Int Apply( // def mix(x$1: Int,x$2: Int): Int in object Statics, tree.tpe=Int Statics.this."mix" // def mix(x$1: Int,x$2: Int): Int in object Statics, tree.tpe=(x$1: Int, x$2: Int)Int // 2 arguments "acc" // var acc: Int, tree.tpe=Int Apply( // val a b(): Int in class verywrong, tree.tpe=Int verywrong.this."a$u0020b" // val a b(): Int in class verywrong, tree.tpe=()Int Nil ) ) ) Assign( // tree.tpe=Unit "acc" // var acc: Int, tree.tpe=Int Apply( // def mix(x$1: Int,x$2: Int): Int in object Statics, tree.tpe=Int Statics.this."mix" // def mix(x$1: Int,x$2: Int): Int in object Statics, tree.tpe=(x$1: Int, x$2: Int)Int // 2 arguments "acc" // var acc: Int, tree.tpe=Int Apply( // def anyHash(x$1: Object): Int in object Statics, tree.tpe=Int Statics.this."anyHash" // def anyHash(x$1: Object): Int in object Statics, tree.tpe=(x$1: Object)Int Apply( // val a(): String in class verywrong, tree.tpe=String verywrong.this."a" // val a(): String in class verywrong, tree.tpe=()String Nil ) ) ) ) Apply( // def finalizeHash(x$1: Int,x$2: Int): Int in object Statics, tree.tpe=Int Statics.this."finalizeHash" // def finalizeHash(x$1: Int,x$2: Int): Int in object Statics, tree.tpe=(x$1: Int, x$2: Int)Int // 2 arguments "acc" // var acc: Int, tree.tpe=Int 2 ) ) ) DefDef( // override def toString(): String in class verywrong override "toString" [] List(Nil) // tree.tpe=String Apply( // def _toString(x: Product): String in object ScalaRunTime, tree.tpe=String ScalaRunTime.this."_toString" // def _toString(x: Product): String in object ScalaRunTime, tree.tpe=(x: Product)String This("verywrong")case class verywrong extends Product with Serializable, tree.tpe=verywrong ) ) DefDef( // override def equals(x$1: Object): Boolean in class verywrong override "equals" [] // 1 parameter list ValDef( // x$1: Object "x$1" // tree.tpe=Object ) // tree.tpe=Boolean Apply( // def ||(x: Boolean): Boolean in class Boolean, tree.tpe=Boolean verywrong.this.eq(x$1)."$bar$bar" // def ||(x: Boolean): Boolean in class Boolean, tree.tpe=(x: Boolean)Boolean Apply( // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=Boolean { case val x1: Object = x$1; case5(){ if (x1.$isInstanceOf[verywrong]()) matchEnd4(true) else case6() }; case6(){ matchEnd4(false) }; matchEnd4(x: Boolean){ x } }."$amp$amp" // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=(x: Boolean)Boolean Block( // tree.tpe=Boolean ValDef( // val verywrong$1: verywrong "verywrong$1" // tree.tpe=verywrong Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=verywrong TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()verywrong "x$1"."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0 // tree.tpe=verywrong ) Nil ) ) Apply( // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=Boolean verywrong.this.a b().==(verywrong$1.a b()).&&(verywrong.this.a().==(verywrong$1.a()))."$amp$amp" // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=(x: Boolean)Boolean Apply( // def canEqual(x$1: Object): Boolean in class verywrong, tree.tpe=Boolean "verywrong$1"."canEqual" // def canEqual(x$1: Object): Boolean in class verywrong, tree.tpe=(x$1: Object)Boolean This("verywrong")case class verywrong extends Product with Serializable, tree.tpe=verywrong ) ) ) ) ) ) ) uncaught exception during compilation: scala.reflect.internal.Types$TypeError scala.reflect.internal.Types$TypeError: type mismatch; found : Int required: String at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401) at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103) at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87) at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195) at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1278) at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1283) at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5660) at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:29) at scala.tools.nsc.typechecker.Typers$Typer.typedAssign$1(Typers.scala:4294) at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5578) at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5642) at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:29) at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5704) at scala.tools.nsc.typechecker.Typers$Typer.typedPos(Typers.scala:5709) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.scala$tools$nsc$transform$Constructors$ConstructorTransformer$$mkAssign$1(Constructors.scala:121) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.scala$tools$nsc$transform$Constructors$ConstructorTransformer$$copyParam$1(Constructors.scala:128) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$8.apply(Constructors.scala:268) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$8.apply(Constructors.scala:259) 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.tools.nsc.transform.Constructors$ConstructorTransformer.transformClassTemplate(Constructors.scala:259) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.reflect.internal.Trees$class.deriveClassDef(Trees.scala:1616) at scala.reflect.internal.SymbolTable.deriveClassDef(SymbolTable.scala:13) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transformClassTemplate(Constructors.scala:170) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.reflect.internal.Trees$class.deriveClassDef(Trees.scala:1616) at scala.reflect.internal.SymbolTable.deriveClassDef(SymbolTable.scala:13) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transformClassTemplate(Constructors.scala:170) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.reflect.internal.Trees$class.deriveClassDef(Trees.scala:1616) at scala.reflect.internal.SymbolTable.deriveClassDef(SymbolTable.scala:13) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transformClassTemplate(Constructors.scala:170) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:575) at scala.reflect.internal.Trees$class.deriveClassDef(Trees.scala:1616) at scala.reflect.internal.SymbolTable.deriveClassDef(SymbolTable.scala:13) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:575) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:30) at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927) at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925) at scala.collection.immutable.List.loop$1(List.scala:170) at scala.collection.immutable.List.mapConserve(List.scala:186) at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925) at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298) at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298) at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936) at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297) at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13) at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13) at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:577) at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:30) 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:464) at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431) at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431) at scala.collection.Iterator$class.foreach(Iterator.scala:727) at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431) at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583) at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557) at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553) at scala.tools.nsc.interpreter.IMain.compileSourcesKeepingRun(IMain.scala:428) at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compileAndSaveRun(IMain.scala:801) at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compile(IMain.scala:761) at scala.tools.nsc.interpreter.IMain$Request.compile$lzycompute(IMain.scala:936) at scala.tools.nsc.interpreter.IMain$Request.compile(IMain.scala:931) at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:603) at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:568) at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:760) at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:805) at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:717) at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:581) at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:588) at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:591) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:882) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837) at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135) at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:837) at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:83) at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) That entry seems to have slain the compiler. Shall I replay your session? I can re-run each line except the last one. [y/n]