modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/interface/assertinline.go (about) 1 // errorcheck -0 -d=typeassert 2 3 // Copyright 2015 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 package p 8 9 func assertptr(x interface{}) *int { 10 return x.(*int) // ERROR "type assertion inlined" 11 } 12 13 func assertptr2(x interface{}) (*int, bool) { 14 z, ok := x.(*int) // ERROR "type assertion inlined" 15 return z, ok 16 } 17 18 func assertfunc(x interface{}) func() { 19 return x.(func()) // ERROR "type assertion inlined" 20 } 21 22 func assertfunc2(x interface{}) (func(), bool) { 23 z, ok := x.(func()) // ERROR "type assertion inlined" 24 return z, ok 25 } 26 27 func assertstruct(x interface{}) struct{ *int } { 28 return x.(struct{ *int }) // ERROR "type assertion inlined" 29 } 30 31 func assertstruct2(x interface{}) (struct{ *int }, bool) { 32 z, ok := x.(struct{ *int }) // ERROR "type assertion inlined" 33 return z, ok 34 } 35 36 func assertbig(x interface{}) complex128 { 37 return x.(complex128) // ERROR "type assertion inlined" 38 } 39 40 func assertbig2(x interface{}) (complex128, bool) { 41 z, ok := x.(complex128) // ERROR "type assertion inlined" 42 return z, ok 43 } 44 45 func assertbig2ok(x interface{}) (complex128, bool) { 46 _, ok := x.(complex128) // ERROR "type assertion inlined" 47 return 0, ok 48 } 49 50 func assertslice(x interface{}) []int { 51 return x.([]int) // ERROR "type assertion inlined" 52 } 53 54 func assertslice2(x interface{}) ([]int, bool) { 55 z, ok := x.([]int) // ERROR "type assertion inlined" 56 return z, ok 57 } 58 59 func assertslice2ok(x interface{}) ([]int, bool) { 60 _, ok := x.([]int) // ERROR "type assertion inlined" 61 return nil, ok 62 } 63 64 type I interface { 65 foo() 66 } 67 68 func assertInter(x interface{}) I { 69 return x.(I) // ERROR "type assertion not inlined" 70 } 71 func assertInter2(x interface{}) (I, bool) { 72 z, ok := x.(I) // ERROR "type assertion not inlined" 73 return z, ok 74 }