A type that includes a handle, either directly or through the transitive inclusion of another handle-containing type, cannot be declared without that type being specified as a resource
:
{% include “docs/reference/fidl/language/error-catalog/label/_bad.md” %}
{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="tools/fidl/fidlc/tests/fidl/bad/fi-0110.test.fidl" exclude_regexp="\/\/ (Copyright 20|Use of|found in).*" %}
There are two possible solutions. The first is to annotate the offending declaration with the resource modifier:
{% include “docs/reference/fidl/language/error-catalog/label/_good.md” %}
{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="tools/fidl/fidlc/tests/fidl/good/fi-0110-a.test.fidl" exclude_regexp="\/\/ (Copyright 20|Use of|found in).*" %}
Alternatively, one could opt to remove the resource
-including type completely, thereby obviating the need for the modifier on the owning declaration:
{% include “docs/reference/fidl/language/error-catalog/label/_good.md” %}
{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="tools/fidl/fidlc/tests/fidl/good/fi-0110-b.test.fidl" exclude_regexp="\/\/ (Copyright 20|Use of|found in).*" %}
The reasoning and motivations behind the addition of the resource
modifier and the “infectious” nature of the usage pattern enforced by this error can be found in RFC-0057: Default no handles.