diff options
Diffstat (limited to 'test/interface/assertinline.go')
| -rw-r--r-- | test/interface/assertinline.go | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/test/interface/assertinline.go b/test/interface/assertinline.go index c3f3624570..324316b79d 100644 --- a/test/interface/assertinline.go +++ b/test/interface/assertinline.go @@ -24,44 +24,51 @@ func assertfunc2(x interface{}) (func(), bool) { return z, ok } -// TODO(rsc): struct{*int} is stored directly in the interface -// and should be possible to fetch back out of the interface, -// but more of the general data movement code needs to -// realize that before we can inline the assertion. - func assertstruct(x interface{}) struct{ *int } { - return x.(struct{ *int }) // ERROR "type assertion not inlined" + return x.(struct{ *int }) // ERROR "type assertion inlined" } func assertstruct2(x interface{}) (struct{ *int }, bool) { - z, ok := x.(struct{ *int }) // ERROR "type assertion not inlined" + z, ok := x.(struct{ *int }) // ERROR "type assertion inlined" return z, ok } func assertbig(x interface{}) complex128 { - return x.(complex128) // ERROR "type assertion not inlined" + return x.(complex128) // ERROR "type assertion inlined" } func assertbig2(x interface{}) (complex128, bool) { - z, ok := x.(complex128) // ERROR "type assertion .scalar result. inlined" + z, ok := x.(complex128) // ERROR "type assertion inlined" return z, ok } func assertbig2ok(x interface{}) (complex128, bool) { - _, ok := x.(complex128) // ERROR "type assertion [(]ok only[)] inlined" + _, ok := x.(complex128) // ERROR "type assertion inlined" return 0, ok } func assertslice(x interface{}) []int { - return x.([]int) // ERROR "type assertion not inlined" + return x.([]int) // ERROR "type assertion inlined" } func assertslice2(x interface{}) ([]int, bool) { - z, ok := x.([]int) // ERROR "type assertion not inlined" + z, ok := x.([]int) // ERROR "type assertion inlined" return z, ok } func assertslice2ok(x interface{}) ([]int, bool) { - _, ok := x.([]int) // ERROR "type assertion [(]ok only[)] inlined" + _, ok := x.([]int) // ERROR "type assertion inlined" return nil, ok } + +type I interface { + foo() +} + +func assertInter(x interface{}) I { + return x.(I) // ERROR "type assertion not inlined" +} +func assertInter2(x interface{}) (I, bool) { + z, ok := x.(I) // ERROR "type assertion not inlined" + return z, ok +} |
