@@ -974,13 +974,6 @@ object TreeTransforms {
974974 val qual = transform(tree.qualifier, mutatedInfo, cur)
975975 goSelect(cpy.Select (tree)(qual, tree.name), mutatedInfo.nx.nxTransSelect(cur))
976976 }
977- case tree : Bind =>
978- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForBind, info.nx.nxPrepBind, tree, cur)
979- if (mutatedInfo eq null ) tree
980- else {
981- val body = transform(tree.body, mutatedInfo, cur)
982- goBind(cpy.Bind (tree)(tree.name, body), mutatedInfo.nx.nxTransBind(cur))
983- }
984977 case tree : ValDef if ! tree.isEmpty => // As a result of discussing with Martin: emptyValDefs shouldn't be copied // NAME
985978 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForValDef, info.nx.nxPrepValDef, tree, cur)
986979 if (mutatedInfo eq null ) tree
@@ -1008,23 +1001,19 @@ object TreeTransforms {
10081001 val rhs = transform(tree.rhs, mutatedInfo, cur)(localContext(tree.symbol))
10091002 goTypeDef(cpy.TypeDef (tree)(tree.name, rhs), mutatedInfo.nx.nxTransTypeDef(cur))
10101003 }
1004+ case tree : Bind =>
1005+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForBind, info.nx.nxPrepBind, tree, cur)
1006+ if (mutatedInfo eq null ) tree
1007+ else {
1008+ val body = transform(tree.body, mutatedInfo, cur)
1009+ goBind(cpy.Bind (tree)(tree.name, body), mutatedInfo.nx.nxTransBind(cur))
1010+ }
10111011 case _ =>
10121012 tree
10131013 }
10141014
10151015 final private [TreeTransforms ] def transformUnnamed (tree : Tree , info : TransformerInfo , cur : Int )(implicit ctx : Context ): Tree =
10161016 tree match {
1017- case tree : This =>
1018- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForThis, info.nx.nxPrepThis, tree, cur)
1019- if (mutatedInfo eq null ) tree
1020- else goThis(tree, mutatedInfo.nx.nxTransThis(cur))
1021- case tree : Super =>
1022- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForSuper, info.nx.nxPrepSuper, tree, cur)
1023- if (mutatedInfo eq null ) tree
1024- else {
1025- val qual = transform(tree.qual, mutatedInfo, cur)
1026- goSuper(cpy.Super (tree)(qual, tree.mix), mutatedInfo.nx.nxTransSuper(cur))
1027- }
10281017 case tree : Apply =>
10291018 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForApply, info.nx.nxPrepApply, tree, cur)
10301019 if (mutatedInfo eq null ) tree
@@ -1033,6 +1022,28 @@ object TreeTransforms {
10331022 val args = transformSubTrees(tree.args, mutatedInfo, cur)
10341023 goApply(cpy.Apply (tree)(fun, args), mutatedInfo.nx.nxTransApply(cur))
10351024 }
1025+ case tree : TypeTree =>
1026+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTypeTree, info.nx.nxPrepTypeTree, tree, cur)
1027+ if (mutatedInfo eq null ) tree
1028+ else goTypeTree(tree, mutatedInfo.nx.nxTransTypeTree(cur))
1029+ case Thicket (trees) =>
1030+ cpy.Thicket (tree)(transformTrees(trees, info, cur))
1031+ case tree : This =>
1032+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForThis, info.nx.nxPrepThis, tree, cur)
1033+ if (mutatedInfo eq null ) tree
1034+ else goThis(tree, mutatedInfo.nx.nxTransThis(cur))
1035+ case tree : Literal =>
1036+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForLiteral, info.nx.nxPrepLiteral, tree, cur)
1037+ if (mutatedInfo eq null ) tree
1038+ else goLiteral(tree, mutatedInfo.nx.nxTransLiteral(cur))
1039+ case tree : Block =>
1040+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForBlock, info.nx.nxPrepBlock, tree, cur)
1041+ if (mutatedInfo eq null ) tree
1042+ else {
1043+ val stats = transformStats(tree.stats, ctx.owner, mutatedInfo, cur)
1044+ val expr = transform(tree.expr, mutatedInfo, cur)
1045+ goBlock(cpy.Block (tree)(stats, expr), mutatedInfo.nx.nxTransBlock(cur))
1046+ }
10361047 case tree : TypeApply =>
10371048 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTypeApply, info.nx.nxPrepTypeApply, tree, cur)
10381049 if (mutatedInfo eq null ) tree
@@ -1041,10 +1052,15 @@ object TreeTransforms {
10411052 val args = transformTrees(tree.args, mutatedInfo, cur)
10421053 goTypeApply(cpy.TypeApply (tree)(fun, args), mutatedInfo.nx.nxTransTypeApply(cur))
10431054 }
1044- case tree : Literal =>
1045- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForLiteral , info.nx.nxPrepLiteral , tree, cur)
1055+ case tree : If =>
1056+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForIf , info.nx.nxPrepIf , tree, cur)
10461057 if (mutatedInfo eq null ) tree
1047- else goLiteral(tree, mutatedInfo.nx.nxTransLiteral(cur))
1058+ else {
1059+ val cond = transform(tree.cond, mutatedInfo, cur)
1060+ val thenp = transform(tree.thenp, mutatedInfo, cur)
1061+ val elsep = transform(tree.elsep, mutatedInfo, cur)
1062+ goIf(cpy.If (tree)(cond, thenp, elsep), mutatedInfo.nx.nxTransIf(cur))
1063+ }
10481064 case tree : New =>
10491065 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForNew, info.nx.nxPrepNew, tree, cur)
10501066 if (mutatedInfo eq null ) tree
@@ -1060,6 +1076,24 @@ object TreeTransforms {
10601076 val tpt = transform(tree.tpt, mutatedInfo, cur)
10611077 goTyped(cpy.Typed (tree)(expr, tpt), mutatedInfo.nx.nxTransTyped(cur))
10621078 }
1079+ case tree : CaseDef =>
1080+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForCaseDef, info.nx.nxPrepCaseDef, tree, cur)
1081+ if (mutatedInfo eq null ) tree
1082+ else {
1083+ val pat = transform(tree.pat, mutatedInfo, cur)(ctx.addMode(Mode .Pattern ))
1084+ val guard = transform(tree.guard, mutatedInfo, cur)
1085+ val body = transform(tree.body, mutatedInfo, cur)
1086+ goCaseDef(cpy.CaseDef (tree)(pat, guard, body), mutatedInfo.nx.nxTransCaseDef(cur))
1087+ }
1088+ case tree : Closure =>
1089+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForClosure, info.nx.nxPrepClosure, tree, cur)
1090+ if (mutatedInfo eq null ) tree
1091+ else {
1092+ val env = transformTrees(tree.env, mutatedInfo, cur)
1093+ val meth = transform(tree.meth, mutatedInfo, cur)
1094+ val tpt = transform(tree.tpt, mutatedInfo, cur)
1095+ goClosure(cpy.Closure (tree)(env, meth, tpt), mutatedInfo.nx.nxTransClosure(cur))
1096+ }
10631097 case tree : Assign =>
10641098 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForAssign, info.nx.nxPrepAssign, tree, cur)
10651099 if (mutatedInfo eq null ) tree
@@ -1068,31 +1102,30 @@ object TreeTransforms {
10681102 val rhs = transform(tree.rhs, mutatedInfo, cur)
10691103 goAssign(cpy.Assign (tree)(lhs, rhs), mutatedInfo.nx.nxTransAssign(cur))
10701104 }
1071- case tree : Block =>
1072- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForBlock , info.nx.nxPrepBlock , tree, cur)
1105+ case tree : SeqLiteral =>
1106+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForSeqLiteral , info.nx.nxPrepSeqLiteral , tree, cur)
10731107 if (mutatedInfo eq null ) tree
10741108 else {
1075- val stats = transformStats (tree.stats, ctx.owner , mutatedInfo, cur)
1076- val expr = transform(tree.expr , mutatedInfo, cur)
1077- goBlock (cpy.Block (tree)(stats, expr ), mutatedInfo.nx.nxTransBlock (cur))
1109+ val elems = transformTrees (tree.elems , mutatedInfo, cur)
1110+ val elemtpt = transform(tree.elemtpt , mutatedInfo, cur)
1111+ goSeqLiteral (cpy.SeqLiteral (tree)(elems, elemtpt ), mutatedInfo.nx.nxTransSeqLiteral (cur))
10781112 }
1079- case tree : If =>
1080- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForIf , info.nx.nxPrepIf , tree, cur)
1113+ case tree : Super =>
1114+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForSuper , info.nx.nxPrepSuper , tree, cur)
10811115 if (mutatedInfo eq null ) tree
10821116 else {
1083- val cond = transform(tree.cond, mutatedInfo, cur)
1084- val thenp = transform(tree.thenp, mutatedInfo, cur)
1085- val elsep = transform(tree.elsep, mutatedInfo, cur)
1086- goIf(cpy.If (tree)(cond, thenp, elsep), mutatedInfo.nx.nxTransIf(cur))
1117+ val qual = transform(tree.qual, mutatedInfo, cur)
1118+ goSuper(cpy.Super (tree)(qual, tree.mix), mutatedInfo.nx.nxTransSuper(cur))
10871119 }
1088- case tree : Closure =>
1089- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForClosure , info.nx.nxPrepClosure , tree, cur)
1120+ case tree : Template =>
1121+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTemplate , info.nx.nxPrepTemplate , tree, cur)
10901122 if (mutatedInfo eq null ) tree
10911123 else {
1092- val env = transformTrees(tree.env, mutatedInfo, cur)
1093- val meth = transform(tree.meth, mutatedInfo, cur)
1094- val tpt = transform(tree.tpt, mutatedInfo, cur)
1095- goClosure(cpy.Closure (tree)(env, meth, tpt), mutatedInfo.nx.nxTransClosure(cur))
1124+ val constr = transformSub(tree.constr, mutatedInfo, cur)
1125+ val parents = transformTrees(tree.parents, mutatedInfo, cur)(ctx.superCallContext)
1126+ val self = transformSub(tree.self, mutatedInfo, cur)
1127+ val body = transformStats(tree.body, tree.symbol, mutatedInfo, cur)
1128+ goTemplate(cpy.Template (tree)(constr, parents, self, body), mutatedInfo.nx.nxTransTemplate(cur))
10961129 }
10971130 case tree : Match =>
10981131 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForMatch, info.nx.nxPrepMatch, tree, cur)
@@ -1102,26 +1135,23 @@ object TreeTransforms {
11021135 val cases = transformSubTrees(tree.cases, mutatedInfo, cur)
11031136 goMatch(cpy.Match (tree)(selector, cases), mutatedInfo.nx.nxTransMatch(cur))
11041137 }
1105- case tree : CaseDef =>
1106- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForCaseDef , info.nx.nxPrepCaseDef , tree, cur)
1138+ case tree : UnApply =>
1139+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForUnApply , info.nx.nxPrepUnApply , tree, cur)
11071140 if (mutatedInfo eq null ) tree
11081141 else {
1109- val pat = transform(tree.pat , mutatedInfo, cur)(ctx.addMode( Mode . Pattern ) )
1110- val guard = transform (tree.guard , mutatedInfo, cur)
1111- val body = transform (tree.body , mutatedInfo, cur)
1112- goCaseDef (cpy.CaseDef (tree)(pat, guard, body ), mutatedInfo.nx.nxTransCaseDef (cur))
1142+ val fun = transform(tree.fun , mutatedInfo, cur)
1143+ val implicits = transformTrees (tree.implicits , mutatedInfo, cur)
1144+ val patterns = transformTrees (tree.patterns , mutatedInfo, cur)
1145+ goUnApply (cpy.UnApply (tree)(fun, implicits, patterns ), mutatedInfo.nx.nxTransUnApply (cur))
11131146 }
1114- case tree : Return =>
1115- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForReturn , info.nx.nxPrepReturn , tree, cur)
1147+ case tree : PackageDef =>
1148+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForPackageDef , info.nx.nxPrepPackageDef , tree, cur)
11161149 if (mutatedInfo eq null ) tree
11171150 else {
1118- val expr = transform(tree.expr, mutatedInfo, cur)
1119- val from = tree.from
1120- // don't transform the `from` part, as this is not a normal ident, but
1121- // a pointer to the enclosing method. Transforming this as a normal ident
1122- // can go wrong easily. If a transformation is needed, it should be
1123- // the responsibility of the transformReturn method to handle this also.
1124- goReturn(cpy.Return (tree)(expr, from), mutatedInfo.nx.nxTransReturn(cur))
1151+ val nestedCtx = localContext(tree.symbol)
1152+ val pid = transformSub(tree.pid, mutatedInfo, cur)
1153+ val stats = transformStats(tree.stats, tree.symbol, mutatedInfo, cur)(nestedCtx)
1154+ goPackageDef(cpy.PackageDef (tree)(pid, stats), mutatedInfo.nx.nxTransPackageDef(cur))
11251155 }
11261156 case tree : Try =>
11271157 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTry, info.nx.nxPrepTry, tree, cur)
@@ -1132,14 +1162,6 @@ object TreeTransforms {
11321162 val finalizer = transform(tree.finalizer, mutatedInfo, cur)
11331163 goTry(cpy.Try (tree)(block, cases1, finalizer), mutatedInfo.nx.nxTransTry(cur))
11341164 }
1135- case tree : SeqLiteral =>
1136- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForSeqLiteral, info.nx.nxPrepSeqLiteral, tree, cur)
1137- if (mutatedInfo eq null ) tree
1138- else {
1139- val elems = transformTrees(tree.elems, mutatedInfo, cur)
1140- val elemtpt = transform(tree.elemtpt, mutatedInfo, cur)
1141- goSeqLiteral(cpy.SeqLiteral (tree)(elems, elemtpt), mutatedInfo.nx.nxTransSeqLiteral(cur))
1142- }
11431165 case tree : Inlined =>
11441166 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForInlined, info.nx.nxPrepInlined, tree, cur)
11451167 if (mutatedInfo eq null ) tree
@@ -1148,47 +1170,25 @@ object TreeTransforms {
11481170 val expansion = transform(tree.expansion, mutatedInfo, cur)(inlineContext(tree))
11491171 goInlined(cpy.Inlined (tree)(tree.call, bindings, expansion), mutatedInfo.nx.nxTransInlined(cur))
11501172 }
1151- case tree : TypeTree =>
1152- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTypeTree , info.nx.nxPrepTypeTree , tree, cur)
1173+ case tree : Return =>
1174+ implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForReturn , info.nx.nxPrepReturn , tree, cur)
11531175 if (mutatedInfo eq null ) tree
1154- else goTypeTree(tree, mutatedInfo.nx.nxTransTypeTree(cur))
1176+ else {
1177+ val expr = transform(tree.expr, mutatedInfo, cur)
1178+ val from = tree.from
1179+ // don't transform the `from` part, as this is not a normal ident, but
1180+ // a pointer to the enclosing method. Transforming this as a normal ident
1181+ // can go wrong easily. If a transformation is needed, it should be
1182+ // the responsibility of the transformReturn method to handle this also.
1183+ goReturn(cpy.Return (tree)(expr, from), mutatedInfo.nx.nxTransReturn(cur))
1184+ }
11551185 case tree : Alternative =>
11561186 implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForAlternative, info.nx.nxPrepAlternative, tree, cur)
11571187 if (mutatedInfo eq null ) tree
11581188 else {
11591189 val trees = transformTrees(tree.trees, mutatedInfo, cur)
11601190 goAlternative(cpy.Alternative (tree)(trees), mutatedInfo.nx.nxTransAlternative(cur))
11611191 }
1162- case tree : UnApply =>
1163- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForUnApply, info.nx.nxPrepUnApply, tree, cur)
1164- if (mutatedInfo eq null ) tree
1165- else {
1166- val fun = transform(tree.fun, mutatedInfo, cur)
1167- val implicits = transformTrees(tree.implicits, mutatedInfo, cur)
1168- val patterns = transformTrees(tree.patterns, mutatedInfo, cur)
1169- goUnApply(cpy.UnApply (tree)(fun, implicits, patterns), mutatedInfo.nx.nxTransUnApply(cur))
1170- }
1171- case tree : Template =>
1172- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTemplate, info.nx.nxPrepTemplate, tree, cur)
1173- if (mutatedInfo eq null ) tree
1174- else {
1175- val constr = transformSub(tree.constr, mutatedInfo, cur)
1176- val parents = transformTrees(tree.parents, mutatedInfo, cur)(ctx.superCallContext)
1177- val self = transformSub(tree.self, mutatedInfo, cur)
1178- val body = transformStats(tree.body, tree.symbol, mutatedInfo, cur)
1179- goTemplate(cpy.Template (tree)(constr, parents, self, body), mutatedInfo.nx.nxTransTemplate(cur))
1180- }
1181- case tree : PackageDef =>
1182- implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForPackageDef, info.nx.nxPrepPackageDef, tree, cur)
1183- if (mutatedInfo eq null ) tree
1184- else {
1185- val nestedCtx = localContext(tree.symbol)
1186- val pid = transformSub(tree.pid, mutatedInfo, cur)
1187- val stats = transformStats(tree.stats, tree.symbol, mutatedInfo, cur)(nestedCtx)
1188- goPackageDef(cpy.PackageDef (tree)(pid, stats), mutatedInfo.nx.nxTransPackageDef(cur))
1189- }
1190- case Thicket (trees) =>
1191- cpy.Thicket (tree)(transformTrees(trees, info, cur))
11921192 case tree =>
11931193 implicit val originalInfo : TransformerInfo = info
11941194 goOther(tree, info.nx.nxTransOther(cur))
0 commit comments