From 0816035d762b428f5c1698765c4709014a0ba3bd Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Thu, 20 Oct 2011 22:28:31 +0000 Subject: cleaned up addEvidenceParams a bit implemented my own feedback from https://codereview.scala-lang.org/fisheye/cru/SR-1022#CFR-23393 no review --- .../scala/tools/nsc/ast/parser/TreeBuilder.scala | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'src/compiler') diff --git a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala index bf305ffc97..f65481e29a 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala @@ -596,22 +596,18 @@ abstract class TreeBuilder { AppliedTypeTree(rootScalaDot(newTypeName("Function" + argtpes.length)), argtpes ::: List(restpe)) /** Append implicit parameter section if `contextBounds` nonempty */ - def addEvidenceParams(owner: Name, vparamss: List[List[ValDef]], contextBounds: List[Tree]): List[List[ValDef]] = + def addEvidenceParams(owner: Name, vparamss: List[List[ValDef]], contextBounds: List[Tree]): List[List[ValDef]] = { if (contextBounds.isEmpty) vparamss else { val mods = Modifiers(if (owner.isTypeName) PARAMACCESSOR | LOCAL | PRIVATE else PARAM) def makeEvidenceParam(tpt: Tree) = ValDef(mods | IMPLICIT, freshTermName(nme.EVIDENCE_PARAM_PREFIX), tpt, EmptyTree) val evidenceParams = contextBounds map makeEvidenceParam - if (vparamss.isEmpty) - List(evidenceParams) - else { - val lastParams = vparamss(vparamss.size - 1) - if (!lastParams.isEmpty && (lastParams(0).mods hasFlag IMPLICIT)) - // append lastParams to evidenceParams - (vparamss take (vparamss.size - 1)) ::: List(evidenceParams ::: lastParams) - else - vparamss ::: List(evidenceParams) - } - } + val vparamssLast = if(vparamss.nonEmpty) vparamss.last else Nil + if(vparamssLast.nonEmpty && vparamssLast.head.mods.hasFlag(IMPLICIT)) + vparamss.init ::: List(evidenceParams ::: vparamssLast) + else + vparamss ::: List(evidenceParams) + } + } } -- cgit v1.2.3