Home | History | Annotate | Download | only in exe
      1 package main
      2 
      3 import (
      4 	"depBase"
      5 	"os"
      6 	"reflect"
      7 	"runtime"
      8 )
      9 
     10 // Having a function declared in the main package triggered
     11 // golang.org/issue/18250
     12 func DeclaredInMain() {
     13 }
     14 
     15 type C struct {
     16 }
     17 
     18 func F() *C {
     19 	return nil
     20 }
     21 
     22 var slicePtr interface{} = &[]int{}
     23 
     24 func main() {
     25 	defer depBase.ImplementedInAsm()
     26 	// This code below causes various go.itab.* symbols to be generated in
     27 	// the executable. Similar code in ../depBase/dep.go results in
     28 	// exercising https://github.com/golang/go/issues/17594
     29 	reflect.TypeOf(os.Stdout).Elem()
     30 	runtime.GC()
     31 	depBase.V = depBase.F() + 1
     32 
     33 	var c *C
     34 	if reflect.TypeOf(F).Out(0) != reflect.TypeOf(c) {
     35 		panic("bad reflection results, see golang.org/issue/18252")
     36 	}
     37 
     38 	sp := reflect.New(reflect.TypeOf(slicePtr).Elem())
     39 	s := sp.Interface()
     40 
     41 	if reflect.TypeOf(s) != reflect.TypeOf(slicePtr) {
     42 		panic("bad reflection results, see golang.org/issue/18729")
     43 	}
     44 }
     45