[roll] Roll fuchsia [fidl] Add "external_struct_declarations" JSON IR field

There is a case where the JSON IR needs to maintain the full definition
of a struct imported from another library: when a composed protocol's
payload struct needs to be flattened in order to properly generate the
method request/response parameters. Previously, such structs were just
added into the `struct_declarations` of the importing library, as they
guaranteed to be marked `is_request_or_response`, ensuring that such
duplicate "structs" were never generated as top-level types in backend
output.

As we move to allowing use of named payload types in addition to the
anonymous ones we allow today, this will no longer fly. Composed methods
like `Foo(Bar);` will now use payload structs that may be used as both a
payload and as a regular type; if such imported structs were put into
the existing "struct_declarations" object, they would end up being
generated at least twice, with an extra generation for each library that
imports the struct via composition.

The solution presented here is to have a new top-level list in the JSON
IR, "external_struct_declarations," which is responsible for containing
the definitions of all external structs whose full declarations are
required.

This change will also facilitate a child change that will remove the
`maybe_response_success_struct` IR field, as this struct's full
definition can now be safely stored in `external_struct_declarations`.

Test: fidldev regen all
Test: fidldev test all
Original-Bug: 88344
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/613334
Original-Revision: 38d398592914872bffc2b7f1e682276d847a0bb1
GitOrigin-RevId: be6497fff579d155202aea5c28c096ba2b484b95
Change-Id: Ic1ed4a6db6be79cf40d9df9fdea641a79f3a4e0e
1 file changed
tree: d0f2d32ac1de35a5d474f518c459cb68e2a548c2
  1. infra/
  2. third_party/
  3. cts
  4. firmware
  5. flower
  6. jiri.lock
  7. minimal
  8. prebuilts
  9. README.md
  10. stem
  11. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.