codekingpro/portable-devtools
114k
1// errorcheck -0 -d=typeassert2 3// Copyright 2015 The Go Authors. All rights reserved.4// Use of this source code is governed by a BSD-style5// license that can be found in the LICENSE file.6 7package p8 9func assertptr(x interface{}) *int {10 return x.(*int) // ERROR "type assertion inlined"11}12 13func assertptr2(x interface{}) (*int, bool) {14 z, ok := x.(*int) // ERROR "type assertion inlined"15 return z, ok16}17 18func assertfunc(x interface{}) func() {19 return x.(func()) // ERROR "type assertion inlined"20}21 22func assertfunc2(x interface{}) (func(), bool) {23 z, ok := x.(func()) // ERROR "type assertion inlined"24 return z, ok25}26 27func assertstruct(x interface{}) struct{ *int } {28 return x.(struct{ *int }) // ERROR "type assertion inlined"29}30 31func assertstruct2(x interface{}) (struct{ *int }, bool) {32 z, ok := x.(struct{ *int }) // ERROR "type assertion inlined"33 return z, ok34}35 36func assertbig(x interface{}) complex128 {37 return x.(complex128) // ERROR "type assertion inlined"38}39 40func assertbig2(x interface{}) (complex128, bool) {41 z, ok := x.(complex128) // ERROR "type assertion inlined"42 return z, ok43}44 45func assertbig2ok(x interface{}) (complex128, bool) {46 _, ok := x.(complex128) // ERROR "type assertion inlined"47 return 0, ok48}49 50func assertslice(x interface{}) []int {51 return x.([]int) // ERROR "type assertion inlined"52}53 54func assertslice2(x interface{}) ([]int, bool) {55 z, ok := x.([]int) // ERROR "type assertion inlined"56 return z, ok57}58 59func assertslice2ok(x interface{}) ([]int, bool) {60 _, ok := x.([]int) // ERROR "type assertion inlined"61 return nil, ok62}63 64type I interface {65 foo()66}67 68func assertInter(x interface{}) I {69 return x.(I) // ERROR "type assertion not inlined"70}71func assertInter2(x interface{}) (I, bool) {72 z, ok := x.(I) // ERROR "type assertion not inlined"73 return z, ok74}75 