reflect: add Kind, remove Int8Type, Int8Value, etc.
update other code to match.
R=r
CC=golang-dev
https://golang.org/cl/1680044
diff --git a/src/pkg/reflect/all_test.go b/src/pkg/reflect/all_test.go
index 6b1fd32..e2c57da 100644
--- a/src/pkg/reflect/all_test.go
+++ b/src/pkg/reflect/all_test.go
@@ -164,8 +164,8 @@
pair{(uint16)(0), "16"},
pair{(uint32)(0), "32"},
pair{(uint64)(0), "64"},
- pair{(float32)(0), "32.1"},
- pair{(float64)(0), "64.2"},
+ pair{(float32)(0), "256.25"},
+ pair{(float64)(0), "512.125"},
pair{(string)(""), "stringy cheese"},
pair{(bool)(false), "true"},
pair{(*int8)(nil), "*int8(0)"},
@@ -219,31 +219,49 @@
v := NewValue(tt.i)
switch v := v.(type) {
case *IntValue:
- v.Set(132)
- case *Int8Value:
- v.Set(8)
- case *Int16Value:
- v.Set(16)
- case *Int32Value:
- v.Set(32)
- case *Int64Value:
- v.Set(64)
+ switch v.Type().Kind() {
+ case Int:
+ v.Set(132)
+ case Int8:
+ v.Set(8)
+ case Int16:
+ v.Set(16)
+ case Int32:
+ v.Set(32)
+ case Int64:
+ v.Set(64)
+ }
case *UintValue:
- v.Set(132)
- case *Uint8Value:
- v.Set(8)
- case *Uint16Value:
- v.Set(16)
- case *Uint32Value:
- v.Set(32)
- case *Uint64Value:
- v.Set(64)
+ switch v.Type().Kind() {
+ case Uint:
+ v.Set(132)
+ case Uint8:
+ v.Set(8)
+ case Uint16:
+ v.Set(16)
+ case Uint32:
+ v.Set(32)
+ case Uint64:
+ v.Set(64)
+ }
case *FloatValue:
- v.Set(3200.0)
- case *Float32Value:
- v.Set(32.1)
- case *Float64Value:
- v.Set(64.2)
+ switch v.Type().Kind() {
+ case Float:
+ v.Set(128.5)
+ case Float32:
+ v.Set(256.25)
+ case Float64:
+ v.Set(512.125)
+ }
+ case *ComplexValue:
+ switch v.Type().Kind() {
+ case Complex:
+ v.Set(53200.0 + 100i)
+ case Complex64:
+ v.Set(532.125 + 10i)
+ case Complex128:
+ v.Set(564.25 + 1i)
+ }
case *StringValue:
v.Set("stringy cheese")
case *BoolValue:
@@ -261,31 +279,50 @@
v := NewValue(tt.i)
switch v := v.(type) {
case *IntValue:
- v.SetValue(NewValue(int(132)))
- case *Int8Value:
- v.SetValue(NewValue(int8(8)))
- case *Int16Value:
- v.SetValue(NewValue(int16(16)))
- case *Int32Value:
- v.SetValue(NewValue(int32(32)))
- case *Int64Value:
- v.SetValue(NewValue(int64(64)))
+ switch v.Type().Kind() {
+ case Int:
+ v.SetValue(NewValue(int(132)))
+ case Int8:
+ v.SetValue(NewValue(int8(8)))
+ case Int16:
+ v.SetValue(NewValue(int16(16)))
+ case Int32:
+ v.SetValue(NewValue(int32(32)))
+ case Int64:
+ v.SetValue(NewValue(int64(64)))
+ }
case *UintValue:
- v.SetValue(NewValue(uint(132)))
- case *Uint8Value:
- v.SetValue(NewValue(uint8(8)))
- case *Uint16Value:
- v.SetValue(NewValue(uint16(16)))
- case *Uint32Value:
- v.SetValue(NewValue(uint32(32)))
- case *Uint64Value:
- v.SetValue(NewValue(uint64(64)))
+ switch v.Type().Kind() {
+ case Uint:
+ v.SetValue(NewValue(uint(132)))
+ case Uint8:
+ v.SetValue(NewValue(uint8(8)))
+ case Uint16:
+ v.SetValue(NewValue(uint16(16)))
+ case Uint32:
+ v.SetValue(NewValue(uint32(32)))
+ case Uint64:
+ v.SetValue(NewValue(uint64(64)))
+ }
case *FloatValue:
- v.SetValue(NewValue(float(3200.0)))
- case *Float32Value:
- v.SetValue(NewValue(float32(32.1)))
- case *Float64Value:
- v.SetValue(NewValue(float64(64.2)))
+ switch v.Type().Kind() {
+ case Float:
+ v.SetValue(NewValue(float(128.5)))
+ case Float32:
+ v.SetValue(NewValue(float32(256.25)))
+ case Float64:
+ v.SetValue(NewValue(float64(512.125)))
+ }
+ case *ComplexValue:
+ switch v.Type().Kind() {
+ case Complex:
+ v.SetValue(NewValue(complex(53200.0 + 100i)))
+ case Complex64:
+ v.SetValue(NewValue(complex64(532.125 + 10i)))
+ case Complex128:
+ v.SetValue(NewValue(complex128(564.25 + 1i)))
+ }
+
case *StringValue:
v.SetValue(NewValue("stringy cheese"))
case *BoolValue:
@@ -302,7 +339,7 @@
var valueToStringTests = []pair{
pair{123, "123"},
- pair{123.4, "123.4"},
+ pair{123.5, "123.5"},
pair{byte(123), "123"},
pair{"abc", "abc"},
pair{T{123, 456.75, "hello", &_i}, "reflect_test.T{123, 456.75, hello, *int(&7)}"},
@@ -606,9 +643,9 @@
}
}
-type Complex struct {
+type _Complex struct {
a int
- b [3]*Complex
+ b [3]*_Complex
c *string
d map[float]float
}
@@ -616,9 +653,9 @@
func TestDeepEqualComplexStruct(t *testing.T) {
m := make(map[float]float)
stra, strb := "hello", "hello"
- a, b := new(Complex), new(Complex)
- *a = Complex{5, [3]*Complex{a, b, a}, &stra, m}
- *b = Complex{5, [3]*Complex{b, a, a}, &strb, m}
+ a, b := new(_Complex), new(_Complex)
+ *a = _Complex{5, [3]*_Complex{a, b, a}, &stra, m}
+ *b = _Complex{5, [3]*_Complex{b, a, a}, &strb, m}
if !DeepEqual(a, b) {
t.Error("DeepEqual(complex same) = false, want true")
}
@@ -627,9 +664,9 @@
func TestDeepEqualComplexStructInequality(t *testing.T) {
m := make(map[float]float)
stra, strb := "hello", "helloo" // Difference is here
- a, b := new(Complex), new(Complex)
- *a = Complex{5, [3]*Complex{a, b, a}, &stra, m}
- *b = Complex{5, [3]*Complex{b, a, a}, &strb, m}
+ a, b := new(_Complex), new(_Complex)
+ *a = _Complex{5, [3]*_Complex{a, b, a}, &stra, m}
+ *b = _Complex{5, [3]*_Complex{b, a, a}, &strb, m}
if DeepEqual(a, b) {
t.Error("DeepEqual(complex different) = true, want false")
}
@@ -830,7 +867,7 @@
// Check that value lookup is correct.
vv := mv.Elem(NewValue(k))
- if vi := vv.(*IntValue).Get(); vi != v {
+ if vi := vv.(*IntValue).Get(); vi != int64(v) {
t.Errorf("Key %q: have value %d, want %d", vi, v)
}
@@ -982,9 +1019,9 @@
t.Fatalf("Call returned %d values, want 3", len(ret))
}
- i := ret[0].(*Uint8Value).Get()
+ i := ret[0].(*UintValue).Get()
j := ret[1].(*IntValue).Get()
- k := ret[2].(*Uint8Value).Get()
+ k := ret[2].(*UintValue).Get()
if i != 10 || j != 20 || k != 30 {
t.Errorf("Call returned %d, %d, %d; want 10, 20, 30", i, j, k)
}