[fidl] Allow flexible/strict modifiers for unions

1. Rename "experimental_flexible" to just "flexible". This is required
   for removing the "xunion" keyword, which will be replaced by
   "flexible union" instead.

2. Add strictness information to unions in fidlc, and emit a "strict"
   field in the JSON IR similarly to xunions. (Note that "union"
   defaults to strict, while "xunion" defaults to flexible.)

3. Update fidlgen's IR in types.go to carry strictness information, and
   plumb the union strictness through when unions are converted to
   xunions.

4. Update grammar.md to include both strict & flexible as legal tokens.

Test: fx run-host-tests fidl-compiler-test
Test: (goldens)

Change-Id: I83591bdb3f5594baedc0327adb562f263fa77d79
32 files changed
tree: 21d7c81c210d6cf342dc036b09159b660eb1e31d
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. peridot/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .dir-locals.el
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.