| package main | |
| import ( | |
| "os" | |
| "reflect" | |
| "runtime" | |
| "testshared/depBase" | |
| ) | |
| // Having a function declared in the main package triggered | |
| // golang.org/issue/18250 | |
| func DeclaredInMain() { | |
| } | |
| type C struct { | |
| } | |
| func F() *C { | |
| return nil | |
| } | |
| var slicePtr interface{} = &[]int{} | |
| func main() { | |
| defer depBase.ImplementedInAsm() | |
| // This code below causes various go.itab.* symbols to be generated in | |
| // the executable. Similar code in ../depBase/dep.go results in | |
| // exercising https://golang.org/issues/17594 | |
| reflect.TypeOf(os.Stdout).Elem() | |
| runtime.GC() | |
| depBase.V = depBase.F() + 1 | |
| var c *C | |
| if reflect.TypeOf(F).Out(0) != reflect.TypeOf(c) { | |
| panic("bad reflection results, see golang.org/issue/18252") | |
| } | |
| sp := reflect.New(reflect.TypeOf(slicePtr).Elem()) | |
| s := sp.Interface() | |
| if reflect.TypeOf(s) != reflect.TypeOf(slicePtr) { | |
| panic("bad reflection results, see golang.org/issue/18729") | |
| } | |
| } | |