some deletions
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201105173854-bc9fc8d8c4bc / go / pointer / testdata / arrayreflect.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/go/pointer/testdata/arrayreflect.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/go/pointer/testdata/arrayreflect.go
deleted file mode 100644 (file)
index 2b23674..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-// +build ignore
-
-package main
-
-// Test of arrays & slices with reflection.
-
-import "reflect"
-
-var a, b int
-
-type S string
-
-func reflectValueSlice() {
-       // reflect.Value contains a slice.
-       slice := make([]*int, 10) // @line slice
-       slice[0] = &a
-       rvsl := reflect.ValueOf(slice).Slice(0, 0)
-       print(rvsl.Interface())              // @types []*int
-       print(rvsl.Interface().([]*int))     // @pointsto makeslice@slice:15
-       print(rvsl.Interface().([]*int)[42]) // @pointsto main.a
-
-       // reflect.Value contains an array (non-addressable).
-       array := [10]*int{&a} // @line array
-       rvarray := reflect.ValueOf(array).Slice(0, 0)
-       print(rvarray.Interface())              // @types
-       print(rvarray.Interface().([]*int))     // @pointsto
-       print(rvarray.Interface().([]*int)[42]) // @pointsto
-
-       // reflect.Value contains a pointer-to-array
-       rvparray := reflect.ValueOf(&array).Slice(0, 0)
-       print(rvparray.Interface())              // @types []*int
-       print(rvparray.Interface().([]*int))     // @pointsto array@array:2
-       print(rvparray.Interface().([]*int)[42]) // @pointsto main.a
-
-       // reflect.Value contains a string.
-       rvstring := reflect.ValueOf("hi").Slice(0, 0)
-       print(rvstring.Interface()) // @types string
-
-       // reflect.Value contains a (named) string type.
-       rvS := reflect.ValueOf(S("hi")).Slice(0, 0)
-       print(rvS.Interface()) // @types S
-
-       // reflect.Value contains a non-array pointer.
-       rvptr := reflect.ValueOf(new(int)).Slice(0, 0)
-       print(rvptr.Interface()) // @types
-
-       // reflect.Value contains a non-string basic type.
-       rvint := reflect.ValueOf(3).Slice(0, 0)
-       print(rvint.Interface()) // @types
-}
-
-func reflectValueBytes() {
-       sl1 := make([]byte, 0) // @line ar5sl1
-       sl2 := make([]byte, 0) // @line ar5sl2
-
-       rvsl1 := reflect.ValueOf(sl1)
-       print(rvsl1.Interface())          // @types []byte
-       print(rvsl1.Interface().([]byte)) // @pointsto makeslice@ar5sl1:13
-       print(rvsl1.Bytes())              // @pointsto makeslice@ar5sl1:13
-
-       rvsl2 := reflect.ValueOf(123)
-       rvsl2.SetBytes(sl2)
-       print(rvsl2.Interface())          // @types int
-       print(rvsl2.Interface().([]byte)) // @pointsto
-       print(rvsl2.Bytes())              // @pointsto
-
-       rvsl3 := reflect.ValueOf([]byte(nil))
-       rvsl3.SetBytes(sl2)
-       print(rvsl3.Interface())          // @types []byte
-       print(rvsl3.Interface().([]byte)) // @pointsto makeslice@ar5sl2:13
-       print(rvsl3.Bytes())              // @pointsto makeslice@ar5sl2:13
-}
-
-func reflectValueIndex() {
-       slice := []*int{&a} // @line ar6slice
-       rv1 := reflect.ValueOf(slice)
-       print(rv1.Index(42).Interface())        // @types *int
-       print(rv1.Index(42).Interface().(*int)) // @pointsto main.a
-
-       array := [10]*int{&a}
-       rv2 := reflect.ValueOf(array)
-       print(rv2.Index(42).Interface())        // @types *int
-       print(rv2.Index(42).Interface().(*int)) // @pointsto main.a
-
-       rv3 := reflect.ValueOf("string")
-       print(rv3.Index(42).Interface()) // @types rune
-
-       rv4 := reflect.ValueOf(&array)
-       print(rv4.Index(42).Interface()) // @types
-
-       rv5 := reflect.ValueOf(3)
-       print(rv5.Index(42).Interface()) // @types
-}
-
-func reflectValueElem() {
-       // Interface.
-       var iface interface{} = &a
-       rv1 := reflect.ValueOf(&iface).Elem()
-       print(rv1.Interface())               // @types *int
-       print(rv1.Interface().(*int))        // @pointsto main.a
-       print(rv1.Elem().Interface())        // @types *int
-       print(rv1.Elem().Interface().(*int)) // @pointsto main.a
-
-       print(reflect.ValueOf(new(interface{})).Elem().Elem()) // @types
-
-       // Pointer.
-       ptr := &a
-       rv2 := reflect.ValueOf(&ptr)
-       print(rv2.Elem().Interface())        // @types *int
-       print(rv2.Elem().Interface().(*int)) // @pointsto main.a
-
-       // No other type works with (rV).Elem, not even those that
-       // work with (rT).Elem: slice, array, map, chan.
-
-       rv3 := reflect.ValueOf([]*int{&a})
-       print(rv3.Elem().Interface()) // @types
-
-       rv4 := reflect.ValueOf([10]*int{&a})
-       print(rv4.Elem().Interface()) // @types
-
-       rv5 := reflect.ValueOf(map[*int]*int{&a: &b})
-       print(rv5.Elem().Interface()) // @types
-
-       ch := make(chan *int)
-       ch <- &a
-       rv6 := reflect.ValueOf(ch)
-       print(rv6.Elem().Interface()) // @types
-
-       rv7 := reflect.ValueOf(3)
-       print(rv7.Elem().Interface()) // @types
-}
-
-func reflectTypeElem() {
-       rt1 := reflect.TypeOf(make([]*int, 0))
-       print(reflect.Zero(rt1.Elem())) // @types *int
-
-       rt2 := reflect.TypeOf([10]*int{})
-       print(reflect.Zero(rt2.Elem())) // @types *int
-
-       rt3 := reflect.TypeOf(map[*int]*int{})
-       print(reflect.Zero(rt3.Elem())) // @types *int
-
-       rt4 := reflect.TypeOf(make(chan *int))
-       print(reflect.Zero(rt4.Elem())) // @types *int
-
-       ptr := &a
-       rt5 := reflect.TypeOf(&ptr)
-       print(reflect.Zero(rt5.Elem())) // @types *int
-
-       rt6 := reflect.TypeOf(3)
-       print(reflect.Zero(rt6.Elem())) // @types
-}
-
-func reflectPtrTo() {
-       tInt := reflect.TypeOf(3)
-       tPtrInt := reflect.PtrTo(tInt)
-       print(reflect.Zero(tPtrInt)) // @types *int
-       tPtrPtrInt := reflect.PtrTo(tPtrInt)
-       print(reflect.Zero(tPtrPtrInt)) // @types **int
-}
-
-func reflectSliceOf() {
-       tInt := reflect.TypeOf(3)
-       tSliceInt := reflect.SliceOf(tInt)
-       print(reflect.Zero(tSliceInt)) // @types []int
-}
-
-type T struct{ x int }
-
-func reflectMakeSlice() {
-       rt := []reflect.Type{
-               reflect.TypeOf(3),
-               reflect.TypeOf([]int{}),
-               reflect.TypeOf([]T{}),
-       }[0]
-       sl := reflect.MakeSlice(rt, 0, 0)
-       print(sl)                         // @types []int | []T
-       print(sl)                         // @pointsto <alloc in reflect.MakeSlice> | <alloc in reflect.MakeSlice>
-       print(&sl.Interface().([]T)[0].x) // @pointsto <alloc in reflect.MakeSlice>[*].x
-}
-
-func main() {
-       reflectValueSlice()
-       reflectValueBytes()
-       reflectValueIndex()
-       reflectValueElem()
-       reflectTypeElem()
-       reflectPtrTo()
-       reflectSliceOf()
-       reflectMakeSlice()
-}