@@ -71,14 +71,37 @@ private[debugadapter] class ExpressionCompilerPre37(
7171private [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