Files
clang-p2996/llgo/third_party/gotools/go/pointer/testdata/rtti.go
Peter Collingbourne 56109b78c7 Roll gotools to 47f2109c.
At the same time, perform a number of simplifications:

- Rename go.tools directory to gotools.

- Import only the go directory; all required Go analysis code and
  its dependencies have now been moved to this directory.

llvm-svn: 225825
2015-01-13 20:45:08 +00:00

30 lines
651 B
Go

package main
// Regression test for oracle crash
// https://code.google.com/p/go/issues/detail?id=6605
//
// Using reflection, methods may be called on types that are not the
// operand of any ssa.MakeInterface instruction. In this example,
// (Y).F is called by deriving the type Y from *Y. Prior to the fix,
// no RTTI (or method set) for type Y was included in the program, so
// the F() call would crash.
import "reflect"
var a int
type X struct{}
func (X) F() *int {
return &a
}
type I interface {
F() *int
}
func main() {
type Y struct{ X }
print(reflect.Indirect(reflect.ValueOf(new(Y))).Interface().(I).F()) // @pointsto main.a
}