fi-0019: Strict bits, enum, or union cannot be empty {:#fi-0019}

A strict bits, enum, or union is not allowed to have zero members:

{% include “docs/reference/fidl/language/error-catalog/label/_bad.md” %}

{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="tools/fidl/fidlc/tests/fidl/bad/fi-0019.test.fidl" exclude_regexp="\/\/ (Copyright 20|Use of|found in).*" %}

Instead, there must be at least one member:

{% include “docs/reference/fidl/language/error-catalog/label/_good.md” %}

{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="tools/fidl/fidlc/tests/fidl/good/fi-0019-a.test.fidl" exclude_regexp="\/\/ (Copyright 20|Use of|found in).*" %}

Alternatively, you can mark the declaration flexible instead of strict:

{% include “docs/reference/fidl/language/error-catalog/label/_good.md” %}

{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="tools/fidl/fidlc/tests/fidl/good/fi-0019-b.test.fidl" exclude_regexp="\/\/ (Copyright 20|Use of|found in).*" %}

An empty bits, enum, or union carries no information, so it should not normally be used in an API. However, flexible data types are designed for evolution, so it makes sense to define a flexible bits or enum that starts out empty, with the expectation of adding members later on. You should always think carefully about whether to use strict or flexible when defining a new data type.