cli icon indicating copy to clipboard operation
cli copied to clipboard

Ensure all exported structs are usable as "zero value"

Open meatballhat opened this issue 2 years ago • 2 comments

This likely overlaps with the goal described in #1774, but this issue is intended to track a lower-level list of specific types. Each of these types must have tests in place to ensure the "zero value" is usable in the way it is documented. This may require softening the rule in some places, but I'd like such places to be accompanied with documentation and good examples of happy path usage. The critical parts of what I mean by "usable" are:

  • None of the functions with the struct as receiver or argument panic
  • None of the templates that use the struct panic or otherwise result in an error

I do not expect arbitrary, undocumented, or otherwise unsupervised usage of a "zero value" struct to fulfill these requirements. The primary way I expect the above definition of "usable" to be implemented is via private methods that ensure all fields are minimally initialized such as *Command.setupDefaults.

  • [ ] Ensure Command type is usable as "zero value"
  • [ ] Ensure ValueSourceChain type is usable as "zero value"
  • [ ] Ensure MutuallyExclusiveFlags type is usable as "zero value"
  • [ ] Ensure BoolWithInverseFlag type is usable as "zero value"
  • [ ] (more TODO)

meatballhat avatar Jun 21 '23 11:06 meatballhat

@meatballhat How do you imagine e.g. a zero-valued Command to work? I mean, at least a name is required so it will display correctly in "help" and will be triggered.

bartekpacia avatar May 02 '24 15:05 bartekpacia

@bartekpacia Hello and sorry for my delay! I'll add some more details to the description 👍🏼

meatballhat avatar May 03 '24 14:05 meatballhat