@@ -321,7 +321,7 @@ object Splicer {
321321 protected def interpretNew (fn : Symbol , args : => List [Result ])(implicit env : Env ): Result
322322 protected def unexpectedTree (tree : Tree )(implicit env : Env ): Result
323323
324- private final def removeEraisedArguments (args : List [Tree ], fnTpe : Type ): List [Tree ] = {
324+ private final def removeErasedArguments (args : List [Tree ], fnTpe : Type ): List [Tree ] = {
325325 var result = args
326326 var index = 0
327327 def loop (tp : Type ): Unit = tp match {
@@ -336,11 +336,15 @@ object Splicer {
336336 case tp : MethodType =>
337337 index += tp.paramInfos.size
338338 loop(tp.resType)
339- case _ => ()
339+ case tp : ExprType =>
340+ index += 1
341+ loop(tp.resType)
342+ case tp => ()
340343 }
341344 loop(fnTpe)
342- assert(index == args.size)
345+ assert(index == args.size, s " $index != ${args.size} " )
343346 result.filterNot(null .eq)
347+ args
344348 }
345349
346350 protected final def interpretTree (tree : Tree )(implicit env : Env ): Result = tree match {
@@ -373,11 +377,11 @@ object Splicer {
373377 interpretModuleAccess(fn.symbol)
374378 } else if (fn.symbol.isStatic) {
375379 val module = fn.symbol.owner
376- def interpretedArgs = removeEraisedArguments (args, fn.tpe).map(arg => interpretTree(arg))
380+ def interpretedArgs = removeErasedArguments (args, fn.tpe).map(arg => interpretTree(arg))
377381 interpretStaticMethodCall(module, fn.symbol, interpretedArgs)
378382 } else if (fn.qualifier.symbol.is(Module ) && fn.qualifier.symbol.isStatic) {
379383 val module = fn.qualifier.symbol.moduleClass
380- def interpretedArgs = removeEraisedArguments (args, fn.tpe).map(arg => interpretTree(arg))
384+ def interpretedArgs = removeErasedArguments (args, fn.tpe).map(arg => interpretTree(arg))
381385 interpretStaticMethodCall(module, fn.symbol, interpretedArgs)
382386 } else if (env.contains(fn.name)) {
383387 env(fn.name)
0 commit comments