aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/noder/reader.go
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2022-06-21 07:07:41 -0700
committerMatthew Dempsky <mdempsky@google.com>2022-06-23 21:54:34 +0000
commit5f5422a2ddcfcec8282bc2fde0729083eeeb2926 (patch)
tree017ce027c8a6ba38ce5db559c75a8e4ed70accde /src/cmd/compile/internal/noder/reader.go
parent9cb784ac6926a8b91c1a0dce99612e713150b30c (diff)
downloadgo-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.go7
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
}
}