fi-0012: Invalid type layout class {:#fi-0012}

Type declarations must specify a layout known to FIDL:

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

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

The valid layouts are bits, enum, struct, table, and union:

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

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

A layout is a parameterizable description of a FIDL type. It refers to a family of would-be types which can receive further arguments to specify their shape. For example, a struct is a kind of layout which becomes a concrete type when it has specific members defined, while an array is a layout that becomes concrete when given a type to be repeated sequentially a specified number of times.

Layouts are all built into the FIDL language - there is no means by which users can specify their own layouts, or create their own generic type templates.