Skip to content

Commit ca0672f

Browse files
committed
refactor: Move expression eval config to Expression Compiler
1 parent 2484ca5 commit ca0672f

File tree

1 file changed

+29
-31
lines changed

1 file changed

+29
-31
lines changed

modules/core/src/main/scala/ch/epfl/scala/debugadapter/internal/evaluator/ExpressionCompiler.scala

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,37 @@ private[debugadapter] class ExpressionCompilerPre37(
7171
private[debugadapter] class ExpressionCompilerPost37(
7272
instance: Any,
7373
compileMethod: Method,
74-
config: (
75-
/*packageName:*/ String, /*outputClassName:*/ String, /*breakpointLine:*/ Int, /*expression:*/ String,
76-
/*localVariables:*/ java.util.Set[String], /*errorReporter:*/ Consumer[String], /*testMode:*/ Boolean
77-
) => Object,
74+
classLoader: ClassLoader,
7875
val scalaVersion: ScalaVersion,
7976
scalacOptions: Seq[String],
8077
classPath: String
8178
) extends ExpressionCompiler {
79+
80+
private def expressionCompilerConfig(
81+
packageName: String,
82+
outputClassName: String,
83+
breakpointLine: Int,
84+
expression: String,
85+
localVariables: java.util.Set[String],
86+
errorReporter: Consumer[String],
87+
testMode: Boolean
88+
): Object = {
89+
val clazz = Class.forName("dotty.tools.debug.ExpressionCompilerConfig", true, classLoader)
90+
val instance = clazz.getDeclaredConstructor().newInstance()
91+
val withPackageName = clazz.getMethod("withPackageName", classOf[String]).invoke(instance, packageName)
92+
val withOutputClassName =
93+
clazz.getMethod("withOutputClassName", classOf[String]).invoke(withPackageName, outputClassName)
94+
val withBreakpointLine = clazz
95+
.getMethod("withBreakpointLine", classOf[Int])
96+
.invoke(withOutputClassName, Integer.valueOf(breakpointLine))
97+
val withExpression = clazz.getMethod("withExpression", classOf[String]).invoke(withBreakpointLine, expression)
98+
val withLocalVariables =
99+
clazz.getMethod("withLocalVariables", classOf[java.util.Set[String]]).invoke(withExpression, localVariables)
100+
val withErrorReporter =
101+
clazz.getMethod("withErrorReporter", classOf[Consumer[String]]).invoke(withLocalVariables, errorReporter)
102+
withErrorReporter.asInstanceOf[Object]
103+
}
104+
82105
def compile(
83106
outDir: Path,
84107
expressionClassName: String,
@@ -91,7 +114,7 @@ private[debugadapter] class ExpressionCompilerPost37(
91114
): Try[Unit] = {
92115
try {
93116
val errors = Buffer.empty[String]
94-
val configInstance = config(
117+
val configInstance = expressionCompilerConfig(
95118
pckg,
96119
expressionClassName,
97120
line,
@@ -141,7 +164,7 @@ private[debugadapter] object ExpressionCompiler {
141164
new ExpressionCompilerPost37(
142165
instance,
143166
method,
144-
expressionCompilerConfig(classLoader),
167+
classLoader,
145168
scalaVersion,
146169
scalacOptions,
147170
classPath
@@ -154,29 +177,4 @@ private[debugadapter] object ExpressionCompiler {
154177
case cause: Throwable => Failure(cause)
155178
}
156179
}
157-
158-
private def expressionCompilerConfig(classLoader: ClassLoader)(
159-
packageName: String,
160-
outputClassName: String,
161-
breakpointLine: Int,
162-
expression: String,
163-
localVariables: java.util.Set[String],
164-
errorReporter: Consumer[String],
165-
testMode: Boolean
166-
): Object = {
167-
val clazz = Class.forName("dotty.tools.debug.ExpressionCompilerConfig", true, classLoader)
168-
val instance = clazz.getDeclaredConstructor().newInstance()
169-
val withPackageName = clazz.getMethod("withPackageName", classOf[String]).invoke(instance, packageName)
170-
val withOutputClassName =
171-
clazz.getMethod("withOutputClassName", classOf[String]).invoke(withPackageName, outputClassName)
172-
val withBreakpointLine = clazz
173-
.getMethod("withBreakpointLine", classOf[Int])
174-
.invoke(withOutputClassName, Integer.valueOf(breakpointLine))
175-
val withExpression = clazz.getMethod("withExpression", classOf[String]).invoke(withBreakpointLine, expression)
176-
val withLocalVariables =
177-
clazz.getMethod("withLocalVariables", classOf[java.util.Set[String]]).invoke(withExpression, localVariables)
178-
val withErrorReporter =
179-
clazz.getMethod("withErrorReporter", classOf[Consumer[String]]).invoke(withLocalVariables, errorReporter)
180-
withErrorReporter.asInstanceOf[Object]
181-
}
182180
}

0 commit comments

Comments
 (0)