1- package dotty .tools
2- package repl
3-
4- import dotc .ast .Trees ._
5- import dotc .ast .{ untpd , tpd }
6- import dotc .{ Run , CompilationUnit , Compiler }
7- import dotc .core .Decorators ._ , dotc .core .Flags ._ , dotc .core .Phases , Phases .Phase
8- import dotc .core .Names ._ , dotc .core .Contexts ._ , dotc .core .StdNames ._
9- import dotc .core .Constants .Constant
10- import dotc .util .SourceFile
11- import dotc .typer .{ ImportInfo , FrontEnd }
12- import backend .jvm .GenBCode
13- import dotc .core .NameOps ._
14- import dotc .util .Positions ._
15- import dotc .reporting .diagnostic .messages
16- import io ._
17-
18- import results ._
1+ package dotty .tools .repl
2+
3+ import dotty .tools .backend .jvm .GenBCode
4+ import dotty .tools .dotc .ast .Trees ._
5+ import dotty .tools .dotc .ast .{tpd , untpd }
6+ import dotty .tools .dotc .core .Contexts ._
7+ import dotty .tools .dotc .core .Decorators ._
8+ import dotty .tools .dotc .core .Flags ._
9+ import dotty .tools .dotc .core .Names ._
10+ import dotty .tools .dotc .core .Phases
11+ import dotty .tools .dotc .core .Phases .Phase
12+ import dotty .tools .dotc .core .StdNames ._
13+ import dotty .tools .dotc .reporting .diagnostic .messages
14+ import dotty .tools .dotc .typer .{FrontEnd , ImportInfo }
15+ import dotty .tools .dotc .util .Positions ._
16+ import dotty .tools .dotc .util .SourceFile
17+ import dotty .tools .dotc .{CompilationUnit , Compiler , Run }
18+ import dotty .tools .io ._
19+ import dotty .tools .repl .results ._
20+
21+ import scala .collection .mutable
1922
2023/** This subclass of `Compiler` replaces the appropriate phases in order to
2124 * facilitate the REPL
@@ -59,13 +62,11 @@ class ReplCompiler(val directory: AbstractFile) extends Compiler {
5962 }
6063 }
6164
62- private [this ] var objectNames = Map .empty[Int , TermName ]
65+ private [this ] val objectNames = mutable. Map .empty[Int , TermName ]
6366 private def objectName (state : State ) =
64- objectNames.get(state.objectIndex).getOrElse {
65- val newName = (str.REPL_SESSION_LINE + state.objectIndex).toTermName
66- objectNames = objectNames + (state.objectIndex -> newName)
67- newName
68- }
67+ objectNames.getOrElseUpdate(state.objectIndex, {
68+ (str.REPL_SESSION_LINE + state.objectIndex).toTermName
69+ })
6970
7071 private case class Definitions (stats : List [untpd.Tree ], state : State )
7172
@@ -77,7 +78,7 @@ class ReplCompiler(val directory: AbstractFile) extends Compiler {
7778 var valIdx = state.valIndex
7879
7980 val defs = trees.flatMap {
80- case expr @ Assign (id : Ident , rhs ) =>
81+ case expr @ Assign (id : Ident , _ ) =>
8182 // special case simple reassignment (e.g. x = 3)
8283 // in order to print the new value in the REPL
8384 val assignName = (id.name ++ str.REPL_ASSIGN_SUFFIX ).toTermName
@@ -124,7 +125,7 @@ class ReplCompiler(val directory: AbstractFile) extends Compiler {
124125
125126 val tmpl = Template (emptyConstructor, Nil , EmptyValDef , defs.stats)
126127 val module = ModuleDef (objectName(defs.state), tmpl)
127- .withMods(new Modifiers (Module | Final ))
128+ .withMods(Modifiers (Module | Final ))
128129 .withPos(Position (0 , defs.stats.last.pos.end))
129130
130131 PackageDef (Ident (nme.EMPTY_PACKAGE ), List (module))
@@ -152,7 +153,6 @@ class ReplCompiler(val directory: AbstractFile) extends Compiler {
152153
153154 final def typeOf (expr : String )(implicit state : State ): Result [String ] =
154155 typeCheck(expr).map { tree =>
155- import dotc .ast .Trees ._
156156 implicit val ctx = state.context
157157 tree.rhs match {
158158 case Block (xs, _) => xs.last.tpe.widen.show
@@ -180,13 +180,13 @@ class ReplCompiler(val directory: AbstractFile) extends Compiler {
180180
181181 PackageDef (Ident (nme.EMPTY_PACKAGE ),
182182 TypeDef (" EvaluateExpr" .toTypeName, tmpl)
183- .withMods(new Modifiers (Final ))
183+ .withMods(Modifiers (Final ))
184184 .withPos(Position (0 , expr.length)) :: Nil
185185 )
186186 }
187187
188188 ParseResult (expr) match {
189- case Parsed (sourceCode , trees) =>
189+ case Parsed (_ , trees) =>
190190 wrap(trees).result
191191 case SyntaxErrors (_, reported, trees) =>
192192 if (errorsAllowed) wrap(trees).result
0 commit comments