From 0e2bb62f23c0e1f85983a585dbccaa8f194a4dba Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 25 Apr 2011 13:39:16 -0400 Subject: [PATCH] reflect: rename Typeof, NewValue -> TypeOf, ValueOf R=r, bradfitzgo CC=golang-dev https://golang.org/cl/4433066 --- src/pkg/reflect/all_test.go | 232 +++++++++++++++++------------------ src/pkg/reflect/deepequal.go | 4 +- src/pkg/reflect/set_test.go | 64 +++++----- src/pkg/reflect/type.go | 8 +- src/pkg/reflect/value.go | 8 +- 5 files changed, 158 insertions(+), 158 deletions(-) diff --git a/src/pkg/reflect/all_test.go b/src/pkg/reflect/all_test.go index 450265a1a6..f510294c2a 100644 --- a/src/pkg/reflect/all_test.go +++ b/src/pkg/reflect/all_test.go @@ -37,7 +37,7 @@ func assert(t *testing.T, s, want string) { } } -func typestring(i interface{}) string { return Typeof(i).String() } +func typestring(i interface{}) string { return TypeOf(i).String() } var typeTests = []pair{ {struct{ x int }{}, "int"}, @@ -209,13 +209,13 @@ func testType(t *testing.T, i int, typ Type, want string) { func TestTypes(t *testing.T) { for i, tt := range typeTests { - testType(t, i, NewValue(tt.i).Field(0).Type(), tt.s) + testType(t, i, ValueOf(tt.i).Field(0).Type(), tt.s) } } func TestSet(t *testing.T) { for i, tt := range valueTests { - v := NewValue(tt.i).Elem() + v := ValueOf(tt.i).Elem() switch v.Kind() { case Int: v.SetInt(132) @@ -259,40 +259,40 @@ func TestSet(t *testing.T) { func TestSetValue(t *testing.T) { for i, tt := range valueTests { - v := NewValue(tt.i).Elem() + v := ValueOf(tt.i).Elem() switch v.Kind() { case Int: - v.Set(NewValue(int(132))) + v.Set(ValueOf(int(132))) case Int8: - v.Set(NewValue(int8(8))) + v.Set(ValueOf(int8(8))) case Int16: - v.Set(NewValue(int16(16))) + v.Set(ValueOf(int16(16))) case Int32: - v.Set(NewValue(int32(32))) + v.Set(ValueOf(int32(32))) case Int64: - v.Set(NewValue(int64(64))) + v.Set(ValueOf(int64(64))) case Uint: - v.Set(NewValue(uint(132))) + v.Set(ValueOf(uint(132))) case Uint8: - v.Set(NewValue(uint8(8))) + v.Set(ValueOf(uint8(8))) case Uint16: - v.Set(NewValue(uint16(16))) + v.Set(ValueOf(uint16(16))) case Uint32: - v.Set(NewValue(uint32(32))) + v.Set(ValueOf(uint32(32))) case Uint64: - v.Set(NewValue(uint64(64))) + v.Set(ValueOf(uint64(64))) case Float32: - v.Set(NewValue(float32(256.25))) + v.Set(ValueOf(float32(256.25))) case Float64: - v.Set(NewValue(512.125)) + v.Set(ValueOf(512.125)) case Complex64: - v.Set(NewValue(complex64(532.125 + 10i))) + v.Set(ValueOf(complex64(532.125 + 10i))) case Complex128: - v.Set(NewValue(complex128(564.25 + 1i))) + v.Set(ValueOf(complex128(564.25 + 1i))) case String: - v.Set(NewValue("stringy cheese")) + v.Set(ValueOf("stringy cheese")) case Bool: - v.Set(NewValue(true)) + v.Set(ValueOf(true)) } s := valueToString(v) if s != tt.s { @@ -318,7 +318,7 @@ var valueToStringTests = []pair{ func TestValueToString(t *testing.T) { for i, test := range valueToStringTests { - s := valueToString(NewValue(test.i)) + s := valueToString(ValueOf(test.i)) if s != test.s { t.Errorf("#%d: have %#q, want %#q", i, s, test.s) } @@ -326,7 +326,7 @@ func TestValueToString(t *testing.T) { } func TestArrayElemSet(t *testing.T) { - v := NewValue(&[10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}).Elem() + v := ValueOf(&[10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}).Elem() v.Index(4).SetInt(123) s := valueToString(v) const want = "[10]int{1, 2, 3, 4, 123, 6, 7, 8, 9, 10}" @@ -334,7 +334,7 @@ func TestArrayElemSet(t *testing.T) { t.Errorf("[10]int: have %#q want %#q", s, want) } - v = NewValue([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) + v = ValueOf([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) v.Index(4).SetInt(123) s = valueToString(v) const want1 = "[]int{1, 2, 3, 4, 123, 6, 7, 8, 9, 10}" @@ -346,15 +346,15 @@ func TestArrayElemSet(t *testing.T) { func TestPtrPointTo(t *testing.T) { var ip *int32 var i int32 = 1234 - vip := NewValue(&ip) - vi := NewValue(&i).Elem() + vip := ValueOf(&ip) + vi := ValueOf(&i).Elem() vip.Elem().Set(vi.Addr()) if *ip != 1234 { t.Errorf("got %d, want 1234", *ip) } ip = nil - vp := NewValue(&ip).Elem() + vp := ValueOf(&ip).Elem() vp.Set(Zero(vp.Type())) if ip != nil { t.Errorf("got non-nil (%p), want nil", ip) @@ -364,7 +364,7 @@ func TestPtrPointTo(t *testing.T) { func TestPtrSetNil(t *testing.T) { var i int32 = 1234 ip := &i - vip := NewValue(&ip) + vip := ValueOf(&ip) vip.Elem().Set(Zero(vip.Elem().Type())) if ip != nil { t.Errorf("got non-nil (%d), want nil", *ip) @@ -373,7 +373,7 @@ func TestPtrSetNil(t *testing.T) { func TestMapSetNil(t *testing.T) { m := make(map[string]int) - vm := NewValue(&m) + vm := ValueOf(&m) vm.Elem().Set(Zero(vm.Elem().Type())) if m != nil { t.Errorf("got non-nil (%p), want nil", m) @@ -382,10 +382,10 @@ func TestMapSetNil(t *testing.T) { func TestAll(t *testing.T) { - testType(t, 1, Typeof((int8)(0)), "int8") - testType(t, 2, Typeof((*int8)(nil)).Elem(), "int8") + testType(t, 1, TypeOf((int8)(0)), "int8") + testType(t, 2, TypeOf((*int8)(nil)).Elem(), "int8") - typ := Typeof((*struct { + typ := TypeOf((*struct { c chan *int32 d float32 })(nil)) @@ -407,22 +407,22 @@ func TestAll(t *testing.T) { t.Errorf("FieldByName says absent field is present") } - typ = Typeof([32]int32{}) + typ = TypeOf([32]int32{}) testType(t, 7, typ, "[32]int32") testType(t, 8, typ.Elem(), "int32") - typ = Typeof((map[string]*int32)(nil)) + typ = TypeOf((map[string]*int32)(nil)) testType(t, 9, typ, "map[string] *int32") mtyp := typ testType(t, 10, mtyp.Key(), "string") testType(t, 11, mtyp.Elem(), "*int32") - typ = Typeof((chan<- string)(nil)) + typ = TypeOf((chan<- string)(nil)) testType(t, 12, typ, "chan<- string") testType(t, 13, typ.Elem(), "string") // make sure tag strings are not part of element type - typ = Typeof(struct { + typ = TypeOf(struct { d []uint32 "TAG" }{}).Field(0).Type testType(t, 14, typ, "[]uint32") @@ -433,11 +433,11 @@ func TestInterfaceGet(t *testing.T) { E interface{} } inter.E = 123.456 - v1 := NewValue(&inter) + v1 := ValueOf(&inter) v2 := v1.Elem().Field(0) assert(t, v2.Type().String(), "interface { }") i2 := v2.Interface() - v3 := NewValue(i2) + v3 := ValueOf(i2) assert(t, v3.Type().String(), "float64") } @@ -446,7 +446,7 @@ func TestInterfaceValue(t *testing.T) { E interface{} } inter.E = 123.456 - v1 := NewValue(&inter) + v1 := ValueOf(&inter) v2 := v1.Elem().Field(0) assert(t, v2.Type().String(), "interface { }") v3 := v2.Elem() @@ -454,13 +454,13 @@ func TestInterfaceValue(t *testing.T) { i3 := v2.Interface() if _, ok := i3.(float64); !ok { - t.Error("v2.Interface() did not return float64, got ", Typeof(i3)) + t.Error("v2.Interface() did not return float64, got ", TypeOf(i3)) } } func TestFunctionValue(t *testing.T) { var x interface{} = func() {} - v := NewValue(x) + v := ValueOf(x) if v.Interface() != v.Interface() || v.Interface() != x { t.Fatalf("TestFunction != itself") } @@ -493,12 +493,12 @@ func TestAppend(t *testing.T) { // Convert extra from []int to []Value. e0 := make([]Value, len(test.extra)) for j, e := range test.extra { - e0[j] = NewValue(e) + e0[j] = ValueOf(e) } // Convert extra from []int to *SliceValue. - e1 := NewValue(test.extra) + e1 := ValueOf(test.extra) // Test Append. - a0 := NewValue(test.orig) + a0 := ValueOf(test.orig) have0 := Append(a0, e0...).Interface().([]int) if !sameInts(have0, want) { t.Errorf("Append #%d: have %v, want %v (%p %p)", i, have0, want, test.orig, have0) @@ -511,7 +511,7 @@ func TestAppend(t *testing.T) { t.Errorf("Append #%d extraLen: have %v, want %v", i, len(test.extra), extraLen) } // Test AppendSlice. - a1 := NewValue(test.orig) + a1 := ValueOf(test.orig) have1 := AppendSlice(a1, e1).Interface().([]int) if !sameInts(have1, want) { t.Errorf("AppendSlice #%d: have %v, want %v", i, have1, want) @@ -537,8 +537,8 @@ func TestCopy(t *testing.T) { } a1 := a b1 := b - aa := NewValue(&a1).Elem() - ab := NewValue(&b1).Elem() + aa := ValueOf(&a1).Elem() + ab := ValueOf(&b1).Elem() for tocopy := 1; tocopy <= 7; tocopy++ { aa.SetLen(tocopy) Copy(ab, aa) @@ -567,12 +567,12 @@ func TestCopy(t *testing.T) { func TestBigUnnamedStruct(t *testing.T) { b := struct{ a, b, c, d int64 }{1, 2, 3, 4} - v := NewValue(b) + v := ValueOf(b) b1 := v.Interface().(struct { a, b, c, d int64 }) if b1.a != b.a || b1.b != b.b || b1.c != b.c || b1.d != b.d { - t.Errorf("NewValue(%v).Interface().(*Big) = %v", b, b1) + t.Errorf("ValueOf(%v).Interface().(*Big) = %v", b, b1) } } @@ -582,10 +582,10 @@ type big struct { func TestBigStruct(t *testing.T) { b := big{1, 2, 3, 4, 5} - v := NewValue(b) + v := ValueOf(b) b1 := v.Interface().(big) if b1.a != b.a || b1.b != b.b || b1.c != b.c || b1.d != b.d || b1.e != b.e { - t.Errorf("NewValue(%v).Interface().(big) = %v", b, b1) + t.Errorf("ValueOf(%v).Interface().(big) = %v", b, b1) } } @@ -649,15 +649,15 @@ func TestDeepEqual(t *testing.T) { } } -func TestTypeof(t *testing.T) { +func TestTypeOf(t *testing.T) { for _, test := range deepEqualTests { - v := NewValue(test.a) + v := ValueOf(test.a) if !v.IsValid() { continue } - typ := Typeof(test.a) + typ := TypeOf(test.a) if typ != v.Type() { - t.Errorf("Typeof(%v) = %v, but NewValue(%v).Type() = %v", test.a, typ, test.a, v.Type()) + t.Errorf("TypeOf(%v) = %v, but ValueOf(%v).Type() = %v", test.a, typ, test.a, v.Type()) } } } @@ -707,7 +707,7 @@ func TestDeepEqualComplexStructInequality(t *testing.T) { func check2ndField(x interface{}, offs uintptr, t *testing.T) { - s := NewValue(x) + s := ValueOf(x) f := s.Type().Field(1) if f.Offset != offs { t.Error("mismatched offsets in structure alignment:", f.Offset, offs) @@ -740,16 +740,16 @@ func TestAlignment(t *testing.T) { } func Nil(a interface{}, t *testing.T) { - n := NewValue(a).Field(0) + n := ValueOf(a).Field(0) if !n.IsNil() { t.Errorf("%v should be nil", a) } } func NotNil(a interface{}, t *testing.T) { - n := NewValue(a).Field(0) + n := ValueOf(a).Field(0) if n.IsNil() { - t.Errorf("value of type %v should not be nil", NewValue(a).Type().String()) + t.Errorf("value of type %v should not be nil", ValueOf(a).Type().String()) } } @@ -765,7 +765,7 @@ func TestIsNil(t *testing.T) { struct{ x []string }{}, } for _, ts := range doNil { - ty := Typeof(ts).Field(0).Type + ty := TypeOf(ts).Field(0).Type v := Zero(ty) v.IsNil() // panics if not okay to call } @@ -820,7 +820,7 @@ func TestInterfaceExtraction(t *testing.T) { } s.w = os.Stdout - v := Indirect(NewValue(&s)).Field(0).Interface() + v := Indirect(ValueOf(&s)).Field(0).Interface() if v != s.w.(interface{}) { t.Error("Interface() on interface: ", v, s.w) } @@ -828,14 +828,14 @@ func TestInterfaceExtraction(t *testing.T) { func TestNilPtrValueSub(t *testing.T) { var pi *int - if pv := NewValue(pi); pv.Elem().IsValid() { - t.Error("NewValue((*int)(nil)).Elem().IsValid()") + if pv := ValueOf(pi); pv.Elem().IsValid() { + t.Error("ValueOf((*int)(nil)).Elem().IsValid()") } } func TestMap(t *testing.T) { m := map[string]int{"a": 1, "b": 2} - mv := NewValue(m) + mv := ValueOf(m) if n := mv.Len(); n != len(m) { t.Errorf("Len = %d, want %d", n, len(m)) } @@ -855,15 +855,15 @@ func TestMap(t *testing.T) { i++ // Check that value lookup is correct. - vv := mv.MapIndex(NewValue(k)) + vv := mv.MapIndex(ValueOf(k)) if vi := vv.Int(); vi != int64(v) { t.Errorf("Key %q: have value %d, want %d", k, vi, v) } // Copy into new map. - newmap.SetMapIndex(NewValue(k), NewValue(v)) + newmap.SetMapIndex(ValueOf(k), ValueOf(v)) } - vv := mv.MapIndex(NewValue("not-present")) + vv := mv.MapIndex(ValueOf("not-present")) if vv.IsValid() { t.Errorf("Invalid key: got non-nil value %s", valueToString(vv)) } @@ -880,13 +880,13 @@ func TestMap(t *testing.T) { } } - newmap.SetMapIndex(NewValue("a"), Value{}) + newmap.SetMapIndex(ValueOf("a"), Value{}) v, ok := newm["a"] if ok { t.Errorf("newm[\"a\"] = %d after delete", v) } - mv = NewValue(&m).Elem() + mv = ValueOf(&m).Elem() mv.Set(Zero(mv.Type())) if m != nil { t.Errorf("mv.Set(nil) failed") @@ -902,14 +902,14 @@ func TestChan(t *testing.T) { switch loop { case 1: c = make(chan int, 1) - cv = NewValue(c) + cv = ValueOf(c) case 0: - cv = MakeChan(Typeof(c), 1) + cv = MakeChan(TypeOf(c), 1) c = cv.Interface().(chan int) } // Send - cv.Send(NewValue(2)) + cv.Send(ValueOf(2)) if i := <-c; i != 2 { t.Errorf("reflect Send 2, native recv %d", i) } @@ -937,14 +937,14 @@ func TestChan(t *testing.T) { // TrySend fail c <- 100 - ok = cv.TrySend(NewValue(5)) + ok = cv.TrySend(ValueOf(5)) i := <-c if ok { t.Errorf("TrySend on full chan succeeded: value %d", i) } // TrySend success - ok = cv.TrySend(NewValue(6)) + ok = cv.TrySend(ValueOf(6)) if !ok { t.Errorf("TrySend on empty chan failed") } else { @@ -966,9 +966,9 @@ func TestChan(t *testing.T) { // check creation of unbuffered channel var c chan int - cv := MakeChan(Typeof(c), 0) + cv := MakeChan(TypeOf(c), 0) c = cv.Interface().(chan int) - if cv.TrySend(NewValue(7)) { + if cv.TrySend(ValueOf(7)) { t.Errorf("TrySend on sync chan succeeded") } if v, ok := cv.TryRecv(); v.IsValid() || ok { @@ -976,7 +976,7 @@ func TestChan(t *testing.T) { } // len/cap - cv = MakeChan(Typeof(c), 10) + cv = MakeChan(TypeOf(c), 10) c = cv.Interface().(chan int) for i := 0; i < 3; i++ { c <- i @@ -994,7 +994,7 @@ func dummy(b byte, c int, d byte) (i byte, j int, k byte) { } func TestFunc(t *testing.T) { - ret := NewValue(dummy).Call([]Value{NewValue(byte(10)), NewValue(20), NewValue(byte(30))}) + ret := ValueOf(dummy).Call([]Value{ValueOf(byte(10)), ValueOf(20), ValueOf(byte(30))}) if len(ret) != 3 { t.Fatalf("Call returned %d values, want 3", len(ret)) } @@ -1019,39 +1019,39 @@ func (p Point) Dist(scale int) int { func TestMethod(t *testing.T) { // Non-curried method of type. p := Point{3, 4} - i := Typeof(p).Method(0).Func.Call([]Value{NewValue(p), NewValue(10)})[0].Int() + i := TypeOf(p).Method(0).Func.Call([]Value{ValueOf(p), ValueOf(10)})[0].Int() if i != 250 { t.Errorf("Type Method returned %d; want 250", i) } - i = Typeof(&p).Method(0).Func.Call([]Value{NewValue(&p), NewValue(10)})[0].Int() + i = TypeOf(&p).Method(0).Func.Call([]Value{ValueOf(&p), ValueOf(10)})[0].Int() if i != 250 { t.Errorf("Pointer Type Method returned %d; want 250", i) } // Curried method of value. - i = NewValue(p).Method(0).Call([]Value{NewValue(10)})[0].Int() + i = ValueOf(p).Method(0).Call([]Value{ValueOf(10)})[0].Int() if i != 250 { t.Errorf("Value Method returned %d; want 250", i) } // Curried method of pointer. - i = NewValue(&p).Method(0).Call([]Value{NewValue(10)})[0].Int() + i = ValueOf(&p).Method(0).Call([]Value{ValueOf(10)})[0].Int() if i != 250 { t.Errorf("Value Method returned %d; want 250", i) } // Curried method of interface value. // Have to wrap interface value in a struct to get at it. - // Passing it to NewValue directly would + // Passing it to ValueOf directly would // access the underlying Point, not the interface. var s = struct { X interface { Dist(int) int } }{p} - pv := NewValue(s).Field(0) - i = pv.Method(0).Call([]Value{NewValue(10)})[0].Int() + pv := ValueOf(s).Field(0) + i = pv.Method(0).Call([]Value{ValueOf(10)})[0].Int() if i != 250 { t.Errorf("Interface Method returned %d; want 250", i) } @@ -1066,19 +1066,19 @@ func TestInterfaceSet(t *testing.T) { Dist(int) int } } - sv := NewValue(&s).Elem() - sv.Field(0).Set(NewValue(p)) + sv := ValueOf(&s).Elem() + sv.Field(0).Set(ValueOf(p)) if q := s.I.(*Point); q != p { t.Errorf("i: have %p want %p", q, p) } pv := sv.Field(1) - pv.Set(NewValue(p)) + pv.Set(ValueOf(p)) if q := s.P.(*Point); q != p { t.Errorf("i: have %p want %p", q, p) } - i := pv.Method(0).Call([]Value{NewValue(10)})[0].Int() + i := pv.Method(0).Call([]Value{ValueOf(10)})[0].Int() if i != 250 { t.Errorf("Interface Method returned %d; want 250", i) } @@ -1093,7 +1093,7 @@ func TestAnonymousFields(t *testing.T) { var field StructField var ok bool var t1 T1 - type1 := Typeof(t1) + type1 := TypeOf(t1) if field, ok = type1.FieldByName("int"); !ok { t.Error("no field 'int'") } @@ -1177,7 +1177,7 @@ var fieldTests = []FTest{ func TestFieldByIndex(t *testing.T) { for _, test := range fieldTests { - s := Typeof(test.s) + s := TypeOf(test.s) f := s.FieldByIndex(test.index) if f.Name != "" { if test.index != nil { @@ -1192,7 +1192,7 @@ func TestFieldByIndex(t *testing.T) { } if test.value != 0 { - v := NewValue(test.s).FieldByIndex(test.index) + v := ValueOf(test.s).FieldByIndex(test.index) if v.IsValid() { if x, ok := v.Interface().(int); ok { if x != test.value { @@ -1210,7 +1210,7 @@ func TestFieldByIndex(t *testing.T) { func TestFieldByName(t *testing.T) { for _, test := range fieldTests { - s := Typeof(test.s) + s := TypeOf(test.s) f, found := s.FieldByName(test.name) if found { if test.index != nil { @@ -1232,7 +1232,7 @@ func TestFieldByName(t *testing.T) { } if test.value != 0 { - v := NewValue(test.s).FieldByName(test.name) + v := ValueOf(test.s).FieldByName(test.name) if v.IsValid() { if x, ok := v.Interface().(int); ok { if x != test.value { @@ -1249,19 +1249,19 @@ func TestFieldByName(t *testing.T) { } func TestImportPath(t *testing.T) { - if path := Typeof(vector.Vector{}).PkgPath(); path != "container/vector" { - t.Errorf("Typeof(vector.Vector{}).PkgPath() = %q, want \"container/vector\"", path) + if path := TypeOf(vector.Vector{}).PkgPath(); path != "container/vector" { + t.Errorf("TypeOf(vector.Vector{}).PkgPath() = %q, want \"container/vector\"", path) } } func TestDotDotDot(t *testing.T) { // Test example from FuncType.DotDotDot documentation. var f func(x int, y ...float64) - typ := Typeof(f) - if typ.NumIn() == 2 && typ.In(0) == Typeof(int(0)) { + typ := TypeOf(f) + if typ.NumIn() == 2 && typ.In(0) == TypeOf(int(0)) { sl := typ.In(1) if sl.Kind() == Slice { - if sl.Elem() == Typeof(0.0) { + if sl.Elem() == TypeOf(0.0) { // ok return } @@ -1290,8 +1290,8 @@ func (*inner) m() {} func (*outer) m() {} func TestNestedMethods(t *testing.T) { - typ := Typeof((*outer)(nil)) - if typ.NumMethod() != 1 || typ.Method(0).Func.Pointer() != NewValue((*outer).m).Pointer() { + typ := TypeOf((*outer)(nil)) + if typ.NumMethod() != 1 || typ.Method(0).Func.Pointer() != ValueOf((*outer).m).Pointer() { t.Errorf("Wrong method table for outer: (m=%p)", (*outer).m) for i := 0; i < typ.NumMethod(); i++ { m := typ.Method(i) @@ -1314,8 +1314,8 @@ func (i *InnerInt) M() int { } func TestEmbeddedMethods(t *testing.T) { - typ := Typeof((*OuterInt)(nil)) - if typ.NumMethod() != 1 || typ.Method(0).Func.Pointer() != NewValue((*OuterInt).M).Pointer() { + typ := TypeOf((*OuterInt)(nil)) + if typ.NumMethod() != 1 || typ.Method(0).Func.Pointer() != ValueOf((*OuterInt).M).Pointer() { t.Errorf("Wrong method table for OuterInt: (m=%p)", (*OuterInt).M) for i := 0; i < typ.NumMethod(); i++ { m := typ.Method(i) @@ -1324,12 +1324,12 @@ func TestEmbeddedMethods(t *testing.T) { } i := &InnerInt{3} - if v := NewValue(i).Method(0).Call(nil)[0].Int(); v != 3 { + if v := ValueOf(i).Method(0).Call(nil)[0].Int(); v != 3 { t.Errorf("i.M() = %d, want 3", v) } o := &OuterInt{1, InnerInt{2}} - if v := NewValue(o).Method(0).Call(nil)[0].Int(); v != 2 { + if v := ValueOf(o).Method(0).Call(nil)[0].Int(); v != 2 { t.Errorf("i.M() = %d, want 2", v) } @@ -1342,15 +1342,15 @@ func TestEmbeddedMethods(t *testing.T) { func TestPtrTo(t *testing.T) { var i int - typ := Typeof(i) + typ := TypeOf(i) for i = 0; i < 100; i++ { typ = PtrTo(typ) } for i = 0; i < 100; i++ { typ = typ.Elem() } - if typ != Typeof(i) { - t.Errorf("after 100 PtrTo and Elem, have %s, want %s", typ, Typeof(i)) + if typ != TypeOf(i) { + t.Errorf("after 100 PtrTo and Elem, have %s, want %s", typ, TypeOf(i)) } } @@ -1359,7 +1359,7 @@ func TestAddr(t *testing.T) { X, Y int } - v := NewValue(&p) + v := ValueOf(&p) v = v.Elem() v = v.Addr() v = v.Elem() @@ -1369,10 +1369,10 @@ func TestAddr(t *testing.T) { t.Errorf("Addr.Elem.Set failed to set value") } - // Again but take address of the NewValue value. + // Again but take address of the ValueOf value. // Exercises generation of PtrTypes not present in the binary. q := &p - v = NewValue(&q).Elem() + v = ValueOf(&q).Elem() v = v.Addr() v = v.Elem() v = v.Elem() @@ -1387,7 +1387,7 @@ func TestAddr(t *testing.T) { // Starting without pointer we should get changed value // in interface. qq := p - v = NewValue(&qq).Elem() + v = ValueOf(&qq).Elem() v0 := v v = v.Addr() v = v.Elem() @@ -1422,7 +1422,7 @@ func TestAllocations(t *testing.T) { var i interface{} var v Value i = 42 + j - v = NewValue(i) + v = ValueOf(i) if int(v.Int()) != 42+j { panic("wrong int") } @@ -1431,7 +1431,7 @@ func TestAllocations(t *testing.T) { func TestSmallNegativeInt(t *testing.T) { i := int16(-1) - v := NewValue(i) + v := ValueOf(i) if v.Int() != -1 { t.Errorf("int16(-1).Int() returned %v", v.Int()) } @@ -1439,13 +1439,13 @@ func TestSmallNegativeInt(t *testing.T) { func TestSlice(t *testing.T) { xs := []int{1, 2, 3, 4, 5, 6, 7, 8} - v := NewValue(xs).Slice(3, 5).Interface().([]int) + v := ValueOf(xs).Slice(3, 5).Interface().([]int) if len(v) != 2 || v[0] != 4 || v[1] != 5 { t.Errorf("xs.Slice(3, 5) = %v", v) } xa := [7]int{10, 20, 30, 40, 50, 60, 70} - v = NewValue(&xa).Elem().Slice(2, 5).Interface().([]int) + v = ValueOf(&xa).Elem().Slice(2, 5).Interface().([]int) if len(v) != 3 || v[0] != 30 || v[1] != 40 || v[2] != 50 { t.Errorf("xa.Slice(2, 5) = %v", v) } @@ -1453,7 +1453,7 @@ func TestSlice(t *testing.T) { func TestVariadic(t *testing.T) { var b bytes.Buffer - V := NewValue + V := ValueOf b.Reset() V(fmt.Fprintf).Call([]Value{V(&b), V("%s, %d world"), V("hello"), V(42)}) diff --git a/src/pkg/reflect/deepequal.go b/src/pkg/reflect/deepequal.go index 18fed3ca1d..a483135b01 100644 --- a/src/pkg/reflect/deepequal.go +++ b/src/pkg/reflect/deepequal.go @@ -117,8 +117,8 @@ func DeepEqual(a1, a2 interface{}) bool { if a1 == nil || a2 == nil { return a1 == a2 } - v1 := NewValue(a1) - v2 := NewValue(a2) + v1 := ValueOf(a1) + v2 := ValueOf(a2) if v1.Type() != v2.Type() { return false } diff --git a/src/pkg/reflect/set_test.go b/src/pkg/reflect/set_test.go index 862d4c5dd3..8135a4cd14 100644 --- a/src/pkg/reflect/set_test.go +++ b/src/pkg/reflect/set_test.go @@ -20,82 +20,82 @@ func TestImplicitMapConversion(t *testing.T) { { // direct m := make(map[int]int) - mv := NewValue(m) - mv.SetMapIndex(NewValue(1), NewValue(2)) + mv := ValueOf(m) + mv.SetMapIndex(ValueOf(1), ValueOf(2)) x, ok := m[1] if x != 2 { t.Errorf("#1 after SetMapIndex(1,2): %d, %t (map=%v)", x, ok, m) } - if n := mv.MapIndex(NewValue(1)).Interface().(int); n != 2 { + if n := mv.MapIndex(ValueOf(1)).Interface().(int); n != 2 { t.Errorf("#1 MapIndex(1) = %d", n) } } { // convert interface key m := make(map[interface{}]int) - mv := NewValue(m) - mv.SetMapIndex(NewValue(1), NewValue(2)) + mv := ValueOf(m) + mv.SetMapIndex(ValueOf(1), ValueOf(2)) x, ok := m[1] if x != 2 { t.Errorf("#2 after SetMapIndex(1,2): %d, %t (map=%v)", x, ok, m) } - if n := mv.MapIndex(NewValue(1)).Interface().(int); n != 2 { + if n := mv.MapIndex(ValueOf(1)).Interface().(int); n != 2 { t.Errorf("#2 MapIndex(1) = %d", n) } } { // convert interface value m := make(map[int]interface{}) - mv := NewValue(m) - mv.SetMapIndex(NewValue(1), NewValue(2)) + mv := ValueOf(m) + mv.SetMapIndex(ValueOf(1), ValueOf(2)) x, ok := m[1] if x != 2 { t.Errorf("#3 after SetMapIndex(1,2): %d, %t (map=%v)", x, ok, m) } - if n := mv.MapIndex(NewValue(1)).Interface().(int); n != 2 { + if n := mv.MapIndex(ValueOf(1)).Interface().(int); n != 2 { t.Errorf("#3 MapIndex(1) = %d", n) } } { // convert both interface key and interface value m := make(map[interface{}]interface{}) - mv := NewValue(m) - mv.SetMapIndex(NewValue(1), NewValue(2)) + mv := ValueOf(m) + mv.SetMapIndex(ValueOf(1), ValueOf(2)) x, ok := m[1] if x != 2 { t.Errorf("#4 after SetMapIndex(1,2): %d, %t (map=%v)", x, ok, m) } - if n := mv.MapIndex(NewValue(1)).Interface().(int); n != 2 { + if n := mv.MapIndex(ValueOf(1)).Interface().(int); n != 2 { t.Errorf("#4 MapIndex(1) = %d", n) } } { // convert both, with non-empty interfaces m := make(map[io.Reader]io.Writer) - mv := NewValue(m) + mv := ValueOf(m) b1 := new(bytes.Buffer) b2 := new(bytes.Buffer) - mv.SetMapIndex(NewValue(b1), NewValue(b2)) + mv.SetMapIndex(ValueOf(b1), ValueOf(b2)) x, ok := m[b1] if x != b2 { t.Errorf("#5 after SetMapIndex(b1, b2): %p (!= %p), %t (map=%v)", x, b2, ok, m) } - if p := mv.MapIndex(NewValue(b1)).Elem().Pointer(); p != uintptr(unsafe.Pointer(b2)) { + if p := mv.MapIndex(ValueOf(b1)).Elem().Pointer(); p != uintptr(unsafe.Pointer(b2)) { t.Errorf("#5 MapIndex(b1) = %p want %p", p, b2) } } { // convert channel direction m := make(map[<-chan int]chan int) - mv := NewValue(m) + mv := ValueOf(m) c1 := make(chan int) c2 := make(chan int) - mv.SetMapIndex(NewValue(c1), NewValue(c2)) + mv.SetMapIndex(ValueOf(c1), ValueOf(c2)) x, ok := m[c1] if x != c2 { t.Errorf("#6 after SetMapIndex(c1, c2): %p (!= %p), %t (map=%v)", x, c2, ok, m) } - if p := mv.MapIndex(NewValue(c1)).Pointer(); p != NewValue(c2).Pointer() { + if p := mv.MapIndex(ValueOf(c1)).Pointer(); p != ValueOf(c2).Pointer() { t.Errorf("#6 MapIndex(c1) = %p want %p", p, c2) } } @@ -106,15 +106,15 @@ func TestImplicitMapConversion(t *testing.T) { // when we do that though, so MyBuffer is defined // at top level. m := make(map[*MyBuffer]*bytes.Buffer) - mv := NewValue(m) + mv := ValueOf(m) b1 := new(MyBuffer) b2 := new(bytes.Buffer) - mv.SetMapIndex(NewValue(b1), NewValue(b2)) + mv.SetMapIndex(ValueOf(b1), ValueOf(b2)) x, ok := m[b1] if x != b2 { t.Errorf("#7 after SetMapIndex(b1, b2): %p (!= %p), %t (map=%v)", x, b2, ok, m) } - if p := mv.MapIndex(NewValue(b1)).Pointer(); p != uintptr(unsafe.Pointer(b2)) { + if p := mv.MapIndex(ValueOf(b1)).Pointer(); p != uintptr(unsafe.Pointer(b2)) { t.Errorf("#7 MapIndex(b1) = %p want %p", p, b2) } } @@ -126,8 +126,8 @@ func TestImplicitSetConversion(t *testing.T) { // Just make sure conversions are being applied at all. var r io.Reader b := new(bytes.Buffer) - rv := NewValue(&r).Elem() - rv.Set(NewValue(b)) + rv := ValueOf(&r).Elem() + rv.Set(ValueOf(b)) if r != b { t.Errorf("after Set: r=%T(%v)", r, r) } @@ -136,7 +136,7 @@ func TestImplicitSetConversion(t *testing.T) { func TestImplicitSendConversion(t *testing.T) { c := make(chan io.Reader, 10) b := new(bytes.Buffer) - NewValue(c).Send(NewValue(b)) + ValueOf(c).Send(ValueOf(b)) if bb := <-c; bb != b { t.Errorf("Received %p != %p", bb, b) } @@ -144,9 +144,9 @@ func TestImplicitSendConversion(t *testing.T) { func TestImplicitCallConversion(t *testing.T) { // Arguments must be assignable to parameter types. - fv := NewValue(io.WriteString) + fv := ValueOf(io.WriteString) b := new(bytes.Buffer) - fv.Call([]Value{NewValue(b), NewValue("hello world")}) + fv.Call([]Value{ValueOf(b), ValueOf("hello world")}) if b.String() != "hello world" { t.Errorf("After call: string=%q want %q", b.String(), "hello world") } @@ -155,9 +155,9 @@ func TestImplicitCallConversion(t *testing.T) { func TestImplicitAppendConversion(t *testing.T) { // Arguments must be assignable to the slice's element type. s := []io.Reader{} - sv := NewValue(&s).Elem() + sv := ValueOf(&s).Elem() b := new(bytes.Buffer) - sv.Set(Append(sv, NewValue(b))) + sv.Set(Append(sv, ValueOf(b))) if len(s) != 1 || s[0] != b { t.Errorf("after append: s=%v want [%p]", s, b) } @@ -176,8 +176,8 @@ var implementsTests = []struct { func TestImplements(t *testing.T) { for _, tt := range implementsTests { - xv := Typeof(tt.x).Elem() - xt := Typeof(tt.t).Elem() + xv := TypeOf(tt.x).Elem() + xt := TypeOf(tt.t).Elem() if b := xv.Implements(xt); b != tt.b { t.Errorf("(%s).Implements(%s) = %v, want %v", xv.String(), xt.String(), b, tt.b) } @@ -202,8 +202,8 @@ type IntPtr1 *int func TestAssignableTo(t *testing.T) { for _, tt := range append(assignableTests, implementsTests...) { - xv := Typeof(tt.x).Elem() - xt := Typeof(tt.t).Elem() + xv := TypeOf(tt.x).Elem() + xt := TypeOf(tt.t).Elem() if b := xv.AssignableTo(xt); b != tt.b { t.Errorf("(%s).AssignableTo(%s) = %v, want %v", xv.String(), xt.String(), b, tt.b) } diff --git a/src/pkg/reflect/type.go b/src/pkg/reflect/type.go index 0ed9991a65..aef6370dbc 100644 --- a/src/pkg/reflect/type.go +++ b/src/pkg/reflect/type.go @@ -5,9 +5,9 @@ // Package reflect implements run-time reflection, allowing a program to // manipulate objects with arbitrary types. The typical use is to take a value // with static type interface{} and extract its dynamic type information by -// calling Typeof, which returns a Type. +// calling TypeOf, which returns a Type. // -// A call to NewValue returns a Value representing the run-time data. +// A call to ValueOf returns a Value representing the run-time data. // Zero takes a Type and returns a Value representing a zero value // for that type. package reflect @@ -808,8 +808,8 @@ func toType(p *runtime.Type) Type { return toCommonType(p).toType() } -// Typeof returns the reflection Type of the value in the interface{}. -func Typeof(i interface{}) Type { +// TypeOf returns the reflection Type of the value in the interface{}. +func TypeOf(i interface{}) Type { eface := *(*emptyInterface)(unsafe.Pointer(&i)) return toType(eface.typ) } diff --git a/src/pkg/reflect/value.go b/src/pkg/reflect/value.go index b0415ac739..9ee957e713 100644 --- a/src/pkg/reflect/value.go +++ b/src/pkg/reflect/value.go @@ -1611,9 +1611,9 @@ func Indirect(v Value) Value { return v.Elem() } -// NewValue returns a new Value initialized to the concrete value -// stored in the interface i. NewValue(nil) returns the zero Value. -func NewValue(i interface{}) Value { +// ValueOf returns a new Value initialized to the concrete value +// stored in the interface i. ValueOf(nil) returns the zero Value. +func ValueOf(i interface{}) Value { if i == nil { return Value{} } @@ -1626,7 +1626,7 @@ func NewValue(i interface{}) Value { // Zero returns a Value representing a zero value for the specified type. // The result is different from the zero value of the Value struct, // which represents no value at all. -// For example, Zero(Typeof(42)) returns a Value with Kind Int and value 0. +// For example, Zero(TypeOf(42)) returns a Value with Kind Int and value 0. func Zero(typ Type) Value { if typ == nil { panic("reflect: Zero(nil)") -- 2.50.0