@@ -89,20 +89,16 @@ func Assert(pos src.XPos, x ir.Node, typ *types.Type) ir.Node {
89
89
return typed (typ , ir .NewTypeAssertExpr (pos , x , nil ))
90
90
}
91
91
92
- func Binary (pos src.XPos , op ir.Op , typ * types.Type , x , y ir.Node ) ir.Node {
92
+ func Binary (pos src.XPos , op ir.Op , typ * types.Type , x , y ir.Node ) * ir.BinaryExpr {
93
93
switch op {
94
- case ir .OANDAND , ir .OOROR :
95
- return typed (x .Type (), ir .NewLogicalExpr (pos , op , x , y ))
96
94
case ir .OADD :
97
95
n := ir .NewBinaryExpr (pos , op , x , y )
98
96
typed (typ , n )
99
- r := ir .Node (n )
100
- if ! delayTransform () {
101
- r = transformAdd (n )
102
- }
103
- return r
97
+ return n
104
98
default :
105
- return typed (x .Type (), ir .NewBinaryExpr (pos , op , x , y ))
99
+ n := ir .NewBinaryExpr (pos , op , x , y )
100
+ typed (x .Type (), n )
101
+ return n
106
102
}
107
103
}
108
104
@@ -195,12 +191,9 @@ func Call(pos src.XPos, typ *types.Type, fun ir.Node, args []ir.Node, dots bool)
195
191
return n
196
192
}
197
193
198
- func Compare (pos src.XPos , typ * types.Type , op ir.Op , x , y ir.Node ) ir.Node {
194
+ func Compare (pos src.XPos , typ * types.Type , op ir.Op , x , y ir.Node ) * ir.BinaryExpr {
199
195
n := ir .NewBinaryExpr (pos , op , x , y )
200
196
typed (typ , n )
201
- if ! delayTransform () {
202
- transformCompare (n )
203
- }
204
197
return n
205
198
}
206
199
@@ -270,26 +263,19 @@ func method(typ *types.Type, index int) *types.Field {
270
263
return types .ReceiverBaseType (typ ).Methods ().Index (index )
271
264
}
272
265
273
- func Index (pos src.XPos , typ * types.Type , x , index ir.Node ) ir.Node {
266
+ func Index (pos src.XPos , typ * types.Type , x , index ir.Node ) * ir.IndexExpr {
274
267
n := ir .NewIndexExpr (pos , x , index )
275
268
typed (typ , n )
276
- if ! delayTransform () {
277
- // transformIndex will modify n.Type() for OINDEXMAP.
278
- transformIndex (n )
279
- }
280
269
return n
281
270
}
282
271
283
- func Slice (pos src.XPos , typ * types.Type , x , low , high , max ir.Node ) ir.Node {
272
+ func Slice (pos src.XPos , typ * types.Type , x , low , high , max ir.Node ) * ir.SliceExpr {
284
273
op := ir .OSLICE
285
274
if max != nil {
286
275
op = ir .OSLICE3
287
276
}
288
277
n := ir .NewSliceExpr (pos , op , x , low , high , max )
289
278
typed (typ , n )
290
- if ! delayTransform () {
291
- transformSlice (n )
292
- }
293
279
return n
294
280
}
295
281
0 commit comments