]> Cypherpunks repositories - gostls13.git/commit
[dev.typeparams] cmd/compile/internal/types2: consistently report nil type as "untype...
authorRobert Griesemer <gri@golang.org>
Fri, 15 Jan 2021 01:34:38 +0000 (17:34 -0800)
committerRobert Griesemer <gri@golang.org>
Fri, 15 Jan 2021 20:05:48 +0000 (20:05 +0000)
commit502198c8dc325eb60ff7afb74358b3beffd9831c
tree6431961db5e0c4fd38c0547c0a83ef0f06c99c91
parent82c3f0a358ed449ffcdd5b419728721b314d7a91
[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>
src/cmd/compile/internal/types2/api_test.go
src/cmd/compile/internal/types2/conversions.go
src/cmd/compile/internal/types2/expr.go