func (r *Rule) IsEmpty(info KindInfo) bool {
	if info.NonEmptyAttrs == nil {
		return false
	}
	for k := range info.NonEmptyAttrs {
		if _, ok := r.attrs[k]; ok {
			return false
		}
	}
	return true
}
func (r *Rule) IsEmpty(info KindInfo) bool {
	if info.NonEmptyAttrs == nil {
		return false
	}
	for k := range info.NonEmptyAttrs {
		if _, ok := r.attrs[k]; ok {
			return false
		}
	}
	return true
}
func ( r * Rule ) IsEmpty ( info KindInfo ) bool { if info . NonEmptyAttrs == nil { return false } for k := range info . NonEmptyAttrs { if _ , ok := r . attrs [ k ] ; ok { return false } } return true }
// IsEmpty returns true when the rule contains none of the attributes in attrs
// for its kind. attrs should contain attributes that make the rule buildable
// like srcs or deps and not descriptive attributes like name or visibility.
IsEmpty returns true when the rule contains none of the attributes in attrs for its kind . attrs should contain attributes that make the rule buildable like srcs or deps and not descriptive attributes like name or visibility .