This directory is a catalog of all fidlc errors. Each error has a Markdown file that describes it with “good” and “bad” example code.
Run this script, then edit the TODOs in the new files it creates:
$FUCHSIA_DIR/tools/fidl/scripts/add_errcat_entry.py {ERROR_NUMBER} \ --bad={NUMBER_OF_BAD_EXAMPLES} \ --good={NUMBER_OF_GOOD_EXAMPLES}
Follow these steps if the script doesn't work:
Create //docs/reference/fidl/language/error-catalog/_fi-NNNN.md
, replacing the NNNN
with the new error code.
Add the new error to the end of //docs/reference/fidl/language/_files.txt
:
_fi-NNNN.md
Add the new error to the end of //docs/reference/fidl/language/errcat.md
:
<<error-catalog/_fi-NNNN.md>>
Add a new entry to the end of //docs/error/_redirects.yaml
:
- from: /fuchsia-src/error/fi-NNNN to: /fuchsia-src/reference/fidl/language/errcat.md#fi-NNNN
Create at least one good example in //tools/fidl/fidlc/tests/fidl/good
. If you're creating only one, name it fi-NNNN.test.fidl
. Otherwise, name them fi-NNNN-a.test.fidl
, fi-NNNN-b.test.fidl
, etc.
Create at least one bad example in //tools/fidl/fidlc/tests/fidl/bad
. If you're creating only one, name it fi-NNNN.test.fidl
. Otherwise, name them fi-NNNN-a.test.fidl
, fi-NNNN-b.test.fidl
, etc.
Add a test case to //tools/fidl/fidlc/tests/errcat_good_tests.cc
using the “good” example.
Add or update an existing test case using the “bad” example. A good way to find existing test cases is to grep for the error name. If there are no existing test cases, add a new one somewhere in //tools/fidl/fidlc/tests
.
Delete good and bad examples:
rm tools/fidl/fidlc/tests/fidl/{good,bad}/fi-NNNN*.test.fidl
Update //docs/reference/fidl/language/error-catalog/_fi-NNNN.md
:
## fi-NNNN {:#fi-NNNN .hide-from-toc} Deprecated: This error code has been retired.
Change //tools/fidl/fidlc/src/diagnostics.h
to define the error using RetiredDef
instead of ErrorDef
. For example:
-constexpr ErrorDef<10, std::string_view> ErrInvalidIdentifier("invalid identifier '{}'"); +constexpr RetiredDef<10> ErrInvalidIdentifier;