tools/pointer/testdata
Alan Donovan 94c387c610 go.tools/pointer: implement (reflect.Value).Call.
The implementation follows the basic pattern of an indirect
function call (genDynamicCall).

We use the same trick as SetFinalizer so that direct calls to
(r.V).Call, which are overwhelmingly the norm, are inlined.

Bug fix (and simplification): calling untag() to unbox a
reflect.Value is wrong for reflect.Values containing interfaces
(rare).  Now, we call untag for concrete types and typeFilter
for interface types, and we can use this pattern in all cases.
It corresponds to the ssa.TypeAssert operator, so we call
it typeAssert.  Added tests to cover this.

We also specialize reflect.{In,Out} when the operand is an int
literal.

+ Tests.

Also:
- make taggedValue() panic, not return nil, eliminating many checks.
  We call isTaggedValue for the one place that cares.
- pointer_test: recover from panics in Analyze() and dump the log.

R=crawshaw
CC=golang-dev
https://golang.org/cl/14426050
2013-10-29 21:57:53 -04:00
..
a_test.go go.tools/pointer: inclusion-based pointer analysis for Go. 2013-08-22 12:27:55 -04:00
another.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00
arrayreflect.go go.tools/pointer: fix panic in reflection. 2013-10-28 10:58:46 -04:00
arrays.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00
channels.go go.tools/ssa: fix bad type info in 'for _ = range channel'. 2013-08-27 11:18:31 -04:00
chanreflect.go go.tools/pointer: implement (reflect.Value).Call. 2013-10-29 21:57:53 -04:00
chanreflect1.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00
context.go go.tools/pointer: inclusion-based pointer analysis for Go. 2013-08-22 12:27:55 -04:00
conv.go go.tools/pointer: inclusion-based pointer analysis for Go. 2013-08-22 12:27:55 -04:00
finalizer.go go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
flow.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00
fmtexcerpt.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00
func.go go.tools/pointer: fix pointer tests (fix build partly) 2013-09-18 11:37:26 -07:00
funcreflect.go go.tools/pointer: implement (reflect.Value).Call. 2013-10-29 21:57:53 -04:00
hello.go go.tools/pointer: make os.Args point to something. 2013-10-01 09:46:33 -04:00
interfaces.go go.tools/pointer: fix pointer tests (fix build partly) 2013-09-18 11:37:26 -07:00
mapreflect.go go.tools/pointer: implement (reflect.Value).Call. 2013-10-29 21:57:53 -04:00
maps.go go.tools/pointer: fix pointer tests (fix build partly) 2013-09-18 11:37:26 -07:00
panic.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00
recur.go go.tools/pointer: inclusion-based pointer analysis for Go. 2013-08-22 12:27:55 -04:00
reflect.go go.tools/pointer: implement (reflect.Value).Call. 2013-10-29 21:57:53 -04:00
rtti.go go.tools/ssa: fix computation of set of types requiring method sets. 2013-10-23 17:07:52 -04:00
structreflect.go go.tools/pointer: fix panic in reflection. 2013-10-28 10:58:46 -04:00
structs.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00