Commit 2d5d4a1b authored by Russ Cox's avatar Russ Cox

reflect bug: NewZeroValue was refusing to create slices.

as far as I can tell there's no reason not to.

the Nillable test was succeeding because NewZeroValue
returned the nil interface value and the type guard
was letting it through.  the only change in the test is
more detail in the print.

R=r
DELTA=8  (0 added, 7 deleted, 1 changed)
OCL=29124
CL=29126
parent a39bae09
......@@ -543,7 +543,7 @@ func TestIsNil(t *testing.T) {
ty := reflect.ParseTypeString("", ts);
v := reflect.NewZeroValue(ty);
if nilable, ok := v.(Nillable); !ok {
t.Errorf("%s is not nilable; should be", ts)
t.Errorf("%s %T is not nilable; should be", ts, v)
}
}
// Check the implementations
......
......@@ -876,13 +876,6 @@ func newValueAddr(typ Type, addr Addr) Value {
// NewZeroValue creates a new, zero-initialized Value for the specified Type.
func NewZeroValue(typ Type) Value {
// Some values cannot be made this way.
switch typ.Kind() {
case ArrayKind:
if typ.(ArrayType).IsSlice() {
return nil
}
}
size := typ.Size();
if size == 0 {
size = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment