@@ -76,12 +76,12 @@ object Checked:
76
76
' {
77
77
val z = $ {toInt(checkedImpl(x.asExprOf[Any ], fallback))}
78
78
if (z == $ {numLimit}) $fallback else - z
79
- }.asExprOf[A ].asTerm
79
+ }.asExprOf[A ].asTerm.changeOwner(owner)
80
80
else if (isLong)
81
81
' {
82
82
val z = $ {toLong(checkedImpl(x.asExprOf[Any ], fallback))}
83
83
if (z == $ {numLimit}) $fallback else - z
84
- }.asTerm
84
+ }.asTerm.changeOwner(owner)
85
85
else super .transformTerm(tree)(owner)
86
86
// NOTE I couldn't find a way to unify the long and int branches. Suggestions are welcome
87
87
case Apply (Select (x, " *" ), List (y)) =>
@@ -93,14 +93,14 @@ object Checked:
93
93
val yt = $ {toInt(checkedImpl(y.asExprOf[Any ], fallback))}
94
94
val z = xt * yt
95
95
if (xt == 0 || (yt == z / xt && ! (xt == - 1 && yt == $numLimit))) z else $fallback
96
- }.asTerm
96
+ }.asTerm.changeOwner(owner)
97
97
} else if (isLong) {
98
98
' {
99
99
val xt = $ {toLong(checkedImpl(x.asExprOf[Any ], fallback))}
100
100
val yt = $ {toLong(checkedImpl(y.asExprOf[Any ], fallback))}
101
101
val z = xt * yt
102
102
if (xt == 0 || (yt == z / xt && ! (xt == - 1 && yt == $numLimit))) z else $fallback
103
- }.asTerm
103
+ }.asTerm.changeOwner(owner)
104
104
} else
105
105
super .transformTerm(tree)(owner)
106
106
case Apply (Select (x, " +" ), List (y)) =>
@@ -112,14 +112,14 @@ object Checked:
112
112
val yt = $ {toInt(checkedImpl(y.asExprOf[Any ], fallback))}
113
113
val z = xt + yt
114
114
if ((~ (xt ^ yt) & (xt ^ z)) < 0 ) $fallback else z
115
- }.asTerm
115
+ }.asTerm.changeOwner(owner)
116
116
else if (isLong)
117
117
' {
118
118
val xt = $ {toLong(checkedImpl(x.asExprOf[Any ], fallback))}
119
119
val yt = $ {toLong(checkedImpl(y.asExprOf[Any ], fallback))}
120
120
val z = xt + yt
121
121
if ((~ (xt ^ yt) & (xt ^ z)) < 0 ) $fallback else z
122
- }.asTerm
122
+ }.asTerm.changeOwner(owner)
123
123
else super .transformTerm(tree)(owner)
124
124
case Apply (Select (x, " -" ), List (y)) =>
125
125
val isInt = isIntType(x.asExpr) && isIntType(y.asExpr)
@@ -130,14 +130,14 @@ object Checked:
130
130
val yt = $ {toInt(checkedImpl(y.asExprOf[Any ], fallback))}
131
131
val z = xt - yt
132
132
if (((xt ^ yt) & (xt ^ z)) < 0 ) $fallback else z
133
- }.asTerm
133
+ }.asTerm.changeOwner(owner)
134
134
else if (isLong)
135
135
' {
136
136
val xt = $ {toLong(checkedImpl(x.asExprOf[Any ], fallback))}
137
137
val yt = $ {toLong(checkedImpl(y.asExprOf[Any ], fallback))}
138
138
val z = xt - yt
139
139
if (((xt ^ yt) & (xt ^ z)) < 0 ) $fallback else z
140
- }.asTerm
140
+ }.asTerm.changeOwner(owner)
141
141
else super .transformTerm(tree)(owner)
142
142
case Apply (Select (x, " /" ), List (y)) =>
143
143
val isInt = isIntType(x.asExpr) && isIntType(y.asExpr)
@@ -148,19 +148,19 @@ object Checked:
148
148
val yt = $ {toInt(checkedImpl(y.asExprOf[Any ], fallback))}
149
149
val z = xt / yt
150
150
if (yt == - 1 && xt == $numLimit) $fallback else z
151
- }.asTerm
151
+ }.asTerm.changeOwner(owner)
152
152
else if (isLong)
153
153
' {
154
154
val xt = $ {toLong(checkedImpl(x.asExprOf[Any ], fallback))}
155
155
val yt = $ {toLong(checkedImpl(y.asExprOf[Any ], fallback))}
156
156
val z = xt / yt
157
157
if (yt == - 1 && xt == $numLimit) $fallback else z
158
- }.asTerm
158
+ }.asTerm.changeOwner(owner)
159
159
else super .transformTerm(tree)(owner)
160
160
case _ =>
161
161
super .transformTerm(tree)(owner)
162
162
163
- val result = acc.transformTerm(tree)(tree.symbol ).asExprOf[A ]
163
+ val result = acc.transformTerm(tree)(Symbol .spliceOwner ).asExprOf[A ]
164
164
// report.info(result.show)
165
165
result
166
166
0 commit comments