aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/expr.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2021-01-14 17:34:38 -0800
committerRobert Griesemer <gri@golang.org>2021-01-15 20:05:48 +0000
commit502198c8dc325eb60ff7afb74358b3beffd9831c (patch)
tree6431961db5e0c4fd38c0547c0a83ef0f06c99c91 /src/cmd/compile/internal/types2/expr.go
parent82c3f0a358ed449ffcdd5b419728721b314d7a91 (diff)
downloadgo-502198c8dc325eb60ff7afb74358b3beffd9831c.tar.gz
go-502198c8dc325eb60ff7afb74358b3beffd9831c.zip
[dev.typeparams] cmd/compile/internal/types2: consistently report nil type as "untyped nil"
This fixes an inconsistency where the type for nil in code such as var x unsafe.Pointer = nil and in conversions of the form T(nil) (where T is a pointer, function, slice, map, channel, interface, or unsafe.Pointer) was reported as (converted to) the respective type. For all other operations that accept a nil value, we don't do this conversion for nil. (We never change the type of the untyped nil value, in contrast to other untyped values where we give the values context-specific types.) It may still be useful to change this behavior and - consistently - report a converted nil type like we do for any other type, but for now this CL simply fixes the existing inconsistency. Added tests and fixed existing test harness. Updates #13061. Change-Id: Ia82832845c096e3cbc4a239ba3d6c8b9a9d274c9 Reviewed-on: https://go-review.googlesource.com/c/go/+/284052 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/types2/expr.go')
-rw-r--r--src/cmd/compile/internal/types2/expr.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/types2/expr.go b/src/cmd/compile/internal/types2/expr.go
index 736d3bfacc..7fca5db7d7 100644
--- a/src/cmd/compile/internal/types2/expr.go
+++ b/src/cmd/compile/internal/types2/expr.go
@@ -667,6 +667,7 @@ func (check *Checker) convertUntypedInternal(x *operand, target Type) {
if !hasNil(target) {
goto Error
}
+ target = Typ[UntypedNil]
default:
goto Error
}