diff options
| author | Matthew Dempsky <mdempsky@google.com> | 2022-06-21 07:07:41 -0700 |
|---|---|---|
| committer | Matthew Dempsky <mdempsky@google.com> | 2022-06-23 21:54:34 +0000 |
| commit | 5f5422a2ddcfcec8282bc2fde0729083eeeb2926 (patch) | |
| tree | 017ce027c8a6ba38ce5db559c75a8e4ed70accde /src/cmd/compile/internal/noder/reader.go | |
| parent | 9cb784ac6926a8b91c1a0dce99612e713150b30c (diff) | |
| download | go-5f5422a2ddcfcec8282bc2fde0729083eeeb2926.tar.xz | |
[dev.unified] cmd/compile/internal/noder: start writing implicit conversions
This CL adds support for implicit conversions to the unified IR export
data format, and starts inserting them in a few low-hanging
places (send statements, index expressions).
Subsequentl CLs will handle the remaining trickier cases.
Change-Id: Iaea9d1c5df8432b61bd82578ab2ef02adaf26367
Reviewed-on: https://go-review.googlesource.com/c/go/+/413396
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/noder/reader.go')
| -rw-r--r-- | src/cmd/compile/internal/noder/reader.go | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index bed56d1be7..fed500bcf1 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -1782,6 +1782,7 @@ func (r *reader) expr() (res ir.Node) { return typecheck.Expr(ir.NewUnaryExpr(pos, ir.ONEW, typ)) case exprConvert: + implicit := r.Bool() typ := r.typ() pos := r.pos() x := r.expr() @@ -1799,7 +1800,11 @@ func (r *reader) expr() (res ir.Node) { base.ErrorExit() // harsh, but prevents constructing invalid IR } - return typecheck.Expr(ir.NewConvExpr(pos, ir.OCONV, typ, x)) + n := typecheck.Expr(ir.NewConvExpr(pos, ir.OCONV, typ, x)) + if implicit && n.Op() != ir.OLITERAL { + n.(ImplicitNode).SetImplicit(true) + } + return n } } |
