_linters/src/honnef.co/go/tools/unused/unused.go
func isNoCopyType(typ types.Type) bool {
	st, ok := typ.Underlying().(*types.Struct)
	if !ok {
		return false
	}
	if st.NumFields() != 0 {
		return false
	}

	named, ok := typ.(*types.Named)
	if !ok {
		return false
	}
	if named.NumMethods() != 1 {
		return false
	}
	meth := named.Method(0)
	if meth.Name() != "Lock" {
		return false
	}
	sig := meth.Type().(*types.Signature)
	if sig.Params().Len() != 0 || sig.Results().Len() != 0 {
		return false
	}
	return true
}
func isNoCopyType(typ types.Type) bool {
	st, ok := typ.Underlying().(*types.Struct)
	if !ok {
		return false
	}
	if st.NumFields() != 0 {
		return false
	}

	named, ok := typ.(*types.Named)
	if !ok {
		return false
	}
	if named.NumMethods() != 1 {
		return false
	}
	meth := named.Method(0)
	if meth.Name() != "Lock" {
		return false
	}
	sig := meth.Type().(*types.Signature)
	if sig.Params().Len() != 0 || sig.Results().Len() != 0 {
		return false
	}
	return true
}
func isNoCopyType ( typ types . Type ) bool { st , ok := typ . Underlying ( ) . ( * types . Struct ) if ! ok { return false } if st . NumFields ( ) != 0 { return false } named , ok := typ . ( * types . Named ) if ! ok { return false } if named . NumMethods ( ) != 1 { return false } meth := named . Method ( 0 ) if meth . Name ( ) != " " { return false } sig := meth . Type ( ) . ( * types . Signature ) if sig . Params ( ) . Len ( ) != 0 || sig . Results ( ) . Len ( ) != 0 { return false } return true }
// isNoCopyType reports whether a type represents the NoCopy sentinel
// type. The NoCopy type is a named struct with no fields and exactly
// one method `func Lock()` that is empty.
//
// FIXME(dh): currently we're not checking that the function body is
// empty.
isNoCopyType reports whether a type represents the NoCopy sentinel type . The NoCopy type is a named struct with no fields and exactly one method func Lock () that is empty . FIXME ( dh ) : currently we re not checking that the function body is empty .