Skip to content

Commit 46ad05f

Browse files
committed
newCompiler now takes a context parameter
Makes side-effecting initialization of interpreter unnecessary.
1 parent 6ecdc8a commit 46ad05f

File tree

8 files changed

+13
-20
lines changed

8 files changed

+13
-20
lines changed

src/dotty/tools/dotc/Bench.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ object Bench extends Driver {
1212

1313
@sharable private var numRuns = 1
1414

15-
def newCompiler(): Compiler = new Compiler
15+
def newCompiler(implicit ctx: Context): Compiler = new Compiler
1616

1717
private def ntimes(n: Int)(op: => Reporter): Reporter =
1818
(emptyReporter /: (0 until n)) ((_, _) => op)

src/dotty/tools/dotc/Driver.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ abstract class Driver extends DotClass {
1010

1111
val prompt = "\ndotc> "
1212

13-
protected def newCompiler(): Compiler
13+
protected def newCompiler(implicit ctx: Context): Compiler
1414

1515
protected def emptyReporter: Reporter = new StoreReporter(null)
1616

@@ -90,7 +90,7 @@ abstract class Driver extends DotClass {
9090
*/
9191
def process(args: Array[String], rootCtx: Context): Reporter = {
9292
val (fileNames, ctx) = setup(args, rootCtx)
93-
doCompile(newCompiler(), fileNames)(ctx)
93+
doCompile(newCompiler(ctx), fileNames)(ctx)
9494
}
9595

9696
def main(args: Array[String]): Unit = {

src/dotty/tools/dotc/FromTasty.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import ast.tpd._
3030
* scala dotty.tools.dotc.FromTasty -Xprint:front extMethods.T
3131
*/
3232
object FromTasty extends Driver {
33-
override def newCompiler(): Compiler = new TASTYCompiler
33+
override def newCompiler(implicit ctx: Context): Compiler = new TASTYCompiler
3434

3535
class TASTYCompiler extends Compiler {
3636

src/dotty/tools/dotc/Main.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ package dotty.tools
22
package dotc
33

44
import core.Contexts.Context
5-
import reporting.Reporter
65

76
/* To do:
87
*/
98
object Main extends Driver {
10-
override def newCompiler(): Compiler = new Compiler
9+
override def newCompiler(implicit ctx: Context): Compiler = new Compiler
1110
}

src/dotty/tools/dotc/REPL.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class REPL extends Driver {
3636

3737
def output: PrintWriter = new NewLinePrintWriter(new ConsoleWriter, true)
3838

39-
override def newCompiler(): Compiler = new repl.Interpreter(output)
39+
override def newCompiler(implicit ctx: Context): Compiler = new repl.Interpreter(output, ctx)
4040

4141
override def sourcesRequired = false
4242

src/dotty/tools/dotc/Resident.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Resident extends Driver {
2525

2626
object residentCompiler extends Compiler
2727

28-
override def newCompiler(): Compiler = ???
28+
override def newCompiler(implicit ctx: Context): Compiler = ???
2929

3030
override def sourcesRequired = false
3131

src/dotty/tools/dotc/repl/Interpreter.scala

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ import Interpreter._
6262
* @author Moez A. Abdel-Gawad
6363
* @author Lex Spoon
6464
*/
65-
class Interpreter(out: PrintWriter) extends Compiler {
65+
class Interpreter(out: PrintWriter, ictx: Context) extends Compiler {
6666

6767
import ast.untpd._
6868
import Interpreter._
@@ -110,7 +110,7 @@ class Interpreter(out: PrintWriter) extends Compiler {
110110
private val prevRequests = new ArrayBuffer[Request]()
111111

112112
/** the compiler's classpath, as URL's */
113-
var compilerClasspath: List[URL] = _
113+
val compilerClasspath: List[URL] = ictx.platform.classPath(ictx).asURLs
114114

115115
/* A single class loader is used for all commands interpreted by this Interpreter.
116116
It would also be possible to create a new class loader for each command
@@ -126,18 +126,13 @@ class Interpreter(out: PrintWriter) extends Compiler {
126126
definitions.
127127
*/
128128
/** class loader used to load compiled code */
129-
var classLoader: ClassLoader = _
129+
val classLoader: ClassLoader = {
130+
val parent = new URLClassLoader(compilerClasspath.toArray, parentClassLoader)
131+
new AbstractFileClassLoader(virtualDirectory, parent)
132+
}
130133

131134
protected def parentClassLoader: ClassLoader = classOf[Interpreter].getClassLoader
132135

133-
def init()(implicit ctx: Context) = {
134-
compilerClasspath = ctx.platform.classPath.asURLs
135-
classLoader = {
136-
val parent = new URLClassLoader(compilerClasspath.toArray, parentClassLoader)
137-
new AbstractFileClassLoader(virtualDirectory, parent)
138-
}
139-
}
140-
141136
/** Set the current Java "context" class loader to this
142137
* interpreter's class loader
143138
*/

src/dotty/tools/dotc/repl/InterpreterLoop.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ class InterpreterLoop(
3535
out: PrintWriter)(implicit ctx: Context) {
3636

3737
val interpreter = compiler.asInstanceOf[Interpreter]
38-
interpreter.init()
3938

4039
/** The context class loader at the time this object was created */
4140
protected val originalClassLoader =

0 commit comments

Comments
 (0)