@@ -974,13 +974,6 @@ object TreeTransforms {
974
974
val qual = transform(tree.qualifier, mutatedInfo, cur)
975
975
goSelect(cpy.Select (tree)(qual, tree.name), mutatedInfo.nx.nxTransSelect(cur))
976
976
}
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
- }
984
977
case tree : ValDef if ! tree.isEmpty => // As a result of discussing with Martin: emptyValDefs shouldn't be copied // NAME
985
978
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForValDef, info.nx.nxPrepValDef, tree, cur)
986
979
if (mutatedInfo eq null ) tree
@@ -1008,23 +1001,19 @@ object TreeTransforms {
1008
1001
val rhs = transform(tree.rhs, mutatedInfo, cur)(localContext(tree.symbol))
1009
1002
goTypeDef(cpy.TypeDef (tree)(tree.name, rhs), mutatedInfo.nx.nxTransTypeDef(cur))
1010
1003
}
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
+ }
1011
1011
case _ =>
1012
1012
tree
1013
1013
}
1014
1014
1015
1015
final private [TreeTransforms ] def transformUnnamed (tree : Tree , info : TransformerInfo , cur : Int )(implicit ctx : Context ): Tree =
1016
1016
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
- }
1028
1017
case tree : Apply =>
1029
1018
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForApply, info.nx.nxPrepApply, tree, cur)
1030
1019
if (mutatedInfo eq null ) tree
@@ -1033,6 +1022,28 @@ object TreeTransforms {
1033
1022
val args = transformSubTrees(tree.args, mutatedInfo, cur)
1034
1023
goApply(cpy.Apply (tree)(fun, args), mutatedInfo.nx.nxTransApply(cur))
1035
1024
}
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
+ }
1036
1047
case tree : TypeApply =>
1037
1048
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTypeApply, info.nx.nxPrepTypeApply, tree, cur)
1038
1049
if (mutatedInfo eq null ) tree
@@ -1041,10 +1052,15 @@ object TreeTransforms {
1041
1052
val args = transformTrees(tree.args, mutatedInfo, cur)
1042
1053
goTypeApply(cpy.TypeApply (tree)(fun, args), mutatedInfo.nx.nxTransTypeApply(cur))
1043
1054
}
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)
1046
1057
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
+ }
1048
1064
case tree : New =>
1049
1065
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForNew, info.nx.nxPrepNew, tree, cur)
1050
1066
if (mutatedInfo eq null ) tree
@@ -1060,6 +1076,24 @@ object TreeTransforms {
1060
1076
val tpt = transform(tree.tpt, mutatedInfo, cur)
1061
1077
goTyped(cpy.Typed (tree)(expr, tpt), mutatedInfo.nx.nxTransTyped(cur))
1062
1078
}
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
+ }
1063
1097
case tree : Assign =>
1064
1098
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForAssign, info.nx.nxPrepAssign, tree, cur)
1065
1099
if (mutatedInfo eq null ) tree
@@ -1068,31 +1102,30 @@ object TreeTransforms {
1068
1102
val rhs = transform(tree.rhs, mutatedInfo, cur)
1069
1103
goAssign(cpy.Assign (tree)(lhs, rhs), mutatedInfo.nx.nxTransAssign(cur))
1070
1104
}
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)
1073
1107
if (mutatedInfo eq null ) tree
1074
1108
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))
1078
1112
}
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)
1081
1115
if (mutatedInfo eq null ) tree
1082
1116
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))
1087
1119
}
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)
1090
1122
if (mutatedInfo eq null ) tree
1091
1123
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))
1096
1129
}
1097
1130
case tree : Match =>
1098
1131
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForMatch, info.nx.nxPrepMatch, tree, cur)
@@ -1102,26 +1135,23 @@ object TreeTransforms {
1102
1135
val cases = transformSubTrees(tree.cases, mutatedInfo, cur)
1103
1136
goMatch(cpy.Match (tree)(selector, cases), mutatedInfo.nx.nxTransMatch(cur))
1104
1137
}
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)
1107
1140
if (mutatedInfo eq null ) tree
1108
1141
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))
1113
1146
}
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)
1116
1149
if (mutatedInfo eq null ) tree
1117
1150
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))
1125
1155
}
1126
1156
case tree : Try =>
1127
1157
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForTry, info.nx.nxPrepTry, tree, cur)
@@ -1132,14 +1162,6 @@ object TreeTransforms {
1132
1162
val finalizer = transform(tree.finalizer, mutatedInfo, cur)
1133
1163
goTry(cpy.Try (tree)(block, cases1, finalizer), mutatedInfo.nx.nxTransTry(cur))
1134
1164
}
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
- }
1143
1165
case tree : Inlined =>
1144
1166
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForInlined, info.nx.nxPrepInlined, tree, cur)
1145
1167
if (mutatedInfo eq null ) tree
@@ -1148,47 +1170,25 @@ object TreeTransforms {
1148
1170
val expansion = transform(tree.expansion, mutatedInfo, cur)(inlineContext(tree))
1149
1171
goInlined(cpy.Inlined (tree)(tree.call, bindings, expansion), mutatedInfo.nx.nxTransInlined(cur))
1150
1172
}
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)
1153
1175
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
+ }
1155
1185
case tree : Alternative =>
1156
1186
implicit val mutatedInfo : TransformerInfo = mutateTransformers(info, prepForAlternative, info.nx.nxPrepAlternative, tree, cur)
1157
1187
if (mutatedInfo eq null ) tree
1158
1188
else {
1159
1189
val trees = transformTrees(tree.trees, mutatedInfo, cur)
1160
1190
goAlternative(cpy.Alternative (tree)(trees), mutatedInfo.nx.nxTransAlternative(cur))
1161
1191
}
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))
1192
1192
case tree =>
1193
1193
implicit val originalInfo : TransformerInfo = info
1194
1194
goOther(tree, info.nx.nxTransOther(cur))
0 commit comments