[fidlc] Add experimental_maybe_from_type_alias.test.fidl to goldens
Ths experimental_maybe_from_type_alias.test.fidl golden test verifies
that the "experimental_maybe_from_type_alias" field (currently missing
from the schema) is rendered properly.
Test: fidldev regen fidlc && fidldev test fidlc
Bug: 74400
Change-Id: I91bb7a5868b462cf2e86811d9ac700759a2bf0d9
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/517847
Commit-Queue: Alex Zaslavsky <azaslavsky@google.com>
Reviewed-by: Pascal Perez <pascallouis@google.com>
Fuchsia-Auto-Submit: Pascal Perez <pascallouis@google.com>
diff --git a/tools/fidl/fidlc/goldens/experimental_maybe_from_type_alias.json.golden b/tools/fidl/fidlc/goldens/experimental_maybe_from_type_alias.json.golden
new file mode 100644
index 0000000..f2a4b6b
--- /dev/null
+++ b/tools/fidl/fidlc/goldens/experimental_maybe_from_type_alias.json.golden
@@ -0,0 +1,1097 @@
+{
+ "version": "0.0.1",
+ "name": "fidl.test.experimentalmaybefromtypealias",
+ "library_dependencies": [],
+ "bits_declarations": [],
+ "const_declarations": [],
+ "enum_declarations": [],
+ "experimental_resource_declarations": [],
+ "interface_declarations": [
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 3,
+ "column": 10,
+ "length": 10
+ },
+ "methods": []
+ }
+ ],
+ "service_declarations": [],
+ "struct_declarations": [
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/Testing",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 17,
+ "column": 17,
+ "length": 7
+ },
+ "anonymous": false,
+ "members": [
+ {
+ "type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/U64",
+ "args": [],
+ "nullable": false
+ },
+ "name": "u1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 18,
+ "column": 9,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 0,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "maybe_element_count": 1,
+ "nullable": false
+ },
+ "name": "u2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 19,
+ "column": 19,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 8,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 1
+ },
+ "name": "u3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 20,
+ "column": 18,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 24,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "maybe_element_count": 1,
+ "nullable": false
+ },
+ "nullable": false
+ },
+ "name": "u4",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 21,
+ "column": 27,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 32,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 1
+ },
+ "nullable": false
+ },
+ "name": "u5",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 22,
+ "column": 26,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 48,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "maybe_element_count": 1,
+ "nullable": false
+ },
+ "element_count": 4
+ },
+ "name": "u6",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 23,
+ "column": 28,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 64,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 1
+ },
+ "element_count": 4
+ },
+ "name": "u7",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 24,
+ "column": 27,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 128,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "nullable": true
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/Vector",
+ "args": [],
+ "nullable": false
+ },
+ "name": "v1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 26,
+ "column": 12,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 160,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "nullable": true
+ },
+ "nullable": false
+ },
+ "name": "v2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 27,
+ "column": 20,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 176,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "nullable": true
+ },
+ "element_count": 4
+ },
+ "name": "v3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 28,
+ "column": 21,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 192,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 1
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfArray",
+ "args": [],
+ "nullable": false
+ },
+ "name": "a1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 30,
+ "column": 18,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 256,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 1
+ },
+ "nullable": false
+ },
+ "name": "a2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 31,
+ "column": 26,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 264,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 1
+ },
+ "element_count": 4
+ },
+ "name": "a3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 32,
+ "column": 27,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 280,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": false
+ },
+ "name": "p1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 34,
+ "column": 30,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 312,
+ "padding": 4
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": false
+ },
+ "nullable": false
+ },
+ "name": "p2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 35,
+ "column": 38,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 320,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": false
+ },
+ "element_count": 4
+ },
+ "name": "p3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 36,
+ "column": 39,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 336,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": true
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfRequest",
+ "args": [],
+ "nullable": false
+ },
+ "name": "r1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 38,
+ "column": 20,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 352,
+ "padding": 4
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": true
+ },
+ "nullable": false
+ },
+ "name": "r2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 39,
+ "column": 28,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 360,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": true
+ },
+ "element_count": 4
+ },
+ "name": "r3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 40,
+ "column": 29,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 376,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint8"
+ },
+ "nullable": false
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfBytes",
+ "args": [],
+ "nullable": false
+ },
+ "name": "b1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 42,
+ "column": 18,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 392,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint8"
+ },
+ "nullable": false
+ },
+ "nullable": false
+ },
+ "name": "b2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 43,
+ "column": 26,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 408,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint8"
+ },
+ "nullable": false
+ },
+ "element_count": 4
+ },
+ "name": "b3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 44,
+ "column": 27,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 424,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "string",
+ "nullable": false
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfString",
+ "args": [],
+ "nullable": false
+ },
+ "name": "s1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 46,
+ "column": 19,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 488,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "string",
+ "nullable": false
+ },
+ "nullable": false
+ },
+ "name": "s2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 47,
+ "column": 27,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 504,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "string",
+ "nullable": false
+ },
+ "element_count": 4
+ },
+ "name": "s3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 48,
+ "column": 28,
+ "length": 2
+ },
+ "field_shape_v1": {
+ "offset": 520,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "maybe_element_count": 2,
+ "nullable": false
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfVectorContainingAliasOfVector",
+ "args": [],
+ "nullable": false
+ },
+ "name": "vv1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 50,
+ "column": 42,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 584,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "maybe_element_count": 2,
+ "nullable": false
+ },
+ "maybe_element_count": 3,
+ "nullable": false
+ },
+ "name": "vv2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 51,
+ "column": 52,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 600,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "maybe_element_count": 2,
+ "nullable": false
+ },
+ "element_count": 3
+ },
+ "name": "vv3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 52,
+ "column": 51,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 616,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 2
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfArrayContainingAliasOfArray",
+ "args": [],
+ "nullable": false
+ },
+ "name": "aa1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 54,
+ "column": 40,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 664,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 2
+ },
+ "maybe_element_count": 3,
+ "nullable": false
+ },
+ "name": "aa2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 55,
+ "column": 50,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 680,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "primitive",
+ "subtype": "uint64"
+ },
+ "element_count": 2
+ },
+ "element_count": 3
+ },
+ "name": "aa3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 56,
+ "column": 49,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 696,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": false
+ },
+ "experimental_maybe_from_type_alias": {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfRequestContainingAliasOfProtocol",
+ "args": [],
+ "nullable": false
+ },
+ "name": "rr1",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 58,
+ "column": 45,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 744,
+ "padding": 4
+ }
+ },
+ {
+ "type": {
+ "kind": "vector",
+ "element_type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": false
+ },
+ "maybe_element_count": 3,
+ "nullable": false
+ },
+ "name": "rr2",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 59,
+ "column": 55,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 752,
+ "padding": 0
+ }
+ },
+ {
+ "type": {
+ "kind": "array",
+ "element_type": {
+ "kind": "request",
+ "subtype": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "nullable": false
+ },
+ "element_count": 3
+ },
+ "name": "rr3",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 60,
+ "column": 54,
+ "length": 3
+ },
+ "field_shape_v1": {
+ "offset": 768,
+ "padding": 4
+ }
+ }
+ ],
+ "resource": true,
+ "type_shape_v1": {
+ "inline_size": 784,
+ "alignment": 8,
+ "depth": 2,
+ "max_handles": 4294967295,
+ "max_out_of_line": 4294967295,
+ "has_padding": true,
+ "has_flexible_envelope": false
+ }
+ }
+ ],
+ "table_declarations": [],
+ "union_declarations": [],
+ "type_alias_declarations": [
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfBytes",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 6,
+ "column": 7,
+ "length": 12
+ },
+ "partial_type_ctor": {
+ "name": "vector",
+ "args": [],
+ "nullable": false
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfString",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 7,
+ "column": 7,
+ "length": 13
+ },
+ "partial_type_ctor": {
+ "name": "string",
+ "args": [],
+ "nullable": false
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/U64",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 8,
+ "column": 7,
+ "length": 3
+ },
+ "partial_type_ctor": {
+ "name": "uint64",
+ "args": [],
+ "nullable": false
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfProtocol",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 9,
+ "column": 7,
+ "length": 15
+ },
+ "partial_type_ctor": {
+ "name": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "args": [],
+ "nullable": false
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/Vector",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 10,
+ "column": 7,
+ "length": 6
+ },
+ "partial_type_ctor": {
+ "name": "vector",
+ "args": [
+ {
+ "name": "uint64",
+ "args": [],
+ "nullable": false
+ }
+ ],
+ "nullable": true
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfArray",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 11,
+ "column": 7,
+ "length": 12
+ },
+ "partial_type_ctor": {
+ "name": "array",
+ "args": [
+ {
+ "name": "uint64",
+ "args": [],
+ "nullable": false
+ }
+ ],
+ "nullable": false,
+ "maybe_size": {
+ "kind": "literal",
+ "value": "1",
+ "expression": "1",
+ "literal": {
+ "kind": "numeric",
+ "value": "1",
+ "expression": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfRequest",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 12,
+ "column": 7,
+ "length": 14
+ },
+ "partial_type_ctor": {
+ "name": "request",
+ "args": [
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "args": [],
+ "nullable": true
+ }
+ ],
+ "nullable": true
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfVectorContainingAliasOfVector",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 13,
+ "column": 7,
+ "length": 36
+ },
+ "partial_type_ctor": {
+ "name": "vector",
+ "args": [
+ {
+ "name": "uint64",
+ "args": [],
+ "nullable": false
+ }
+ ],
+ "nullable": false,
+ "maybe_size": {
+ "kind": "literal",
+ "value": "2",
+ "expression": "2",
+ "literal": {
+ "kind": "numeric",
+ "value": "2",
+ "expression": "2"
+ }
+ }
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfArrayContainingAliasOfArray",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 14,
+ "column": 7,
+ "length": 34
+ },
+ "partial_type_ctor": {
+ "name": "array",
+ "args": [
+ {
+ "name": "uint64",
+ "args": [],
+ "nullable": false
+ }
+ ],
+ "nullable": false,
+ "maybe_size": {
+ "kind": "literal",
+ "value": "2",
+ "expression": "2",
+ "literal": {
+ "kind": "numeric",
+ "value": "2",
+ "expression": "2"
+ }
+ }
+ }
+ },
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/AliasOfRequestContainingAliasOfProtocol",
+ "location": {
+ "filename": "../../tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl",
+ "line": 15,
+ "column": 7,
+ "length": 39
+ },
+ "partial_type_ctor": {
+ "name": "request",
+ "args": [
+ {
+ "name": "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "args": [],
+ "nullable": false
+ }
+ ],
+ "nullable": false
+ }
+ }
+ ],
+ "declaration_order": [
+ "fidl.test.experimentalmaybefromtypealias/Vector",
+ "fidl.test.experimentalmaybefromtypealias/U64",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfVectorContainingAliasOfVector",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfArrayContainingAliasOfArray",
+ "fidl.test.experimentalmaybefromtypealias/MyProtocol",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfString",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfRequestContainingAliasOfProtocol",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfRequest",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfProtocol",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfBytes",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfArray",
+ "fidl.test.experimentalmaybefromtypealias/Testing"
+ ],
+ "declarations": {
+ "fidl.test.experimentalmaybefromtypealias/MyProtocol": "interface",
+ "fidl.test.experimentalmaybefromtypealias/Testing": "struct",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfBytes": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfString": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/U64": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfProtocol": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/Vector": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfArray": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfRequest": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfVectorContainingAliasOfVector": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfArrayContainingAliasOfArray": "type_alias",
+ "fidl.test.experimentalmaybefromtypealias/AliasOfRequestContainingAliasOfProtocol": "type_alias"
+ }
+}
diff --git a/tools/fidl/fidlc/goldens/experimental_maybe_from_type_alias.tables.c.golden b/tools/fidl/fidlc/goldens/experimental_maybe_from_type_alias.tables.c.golden
new file mode 100644
index 0000000..f3e12e1
--- /dev/null
+++ b/tools/fidl/fidlc/goldens/experimental_maybe_from_type_alias.tables.c.golden
@@ -0,0 +1,102 @@
+// WARNING: This file is machine generated by fidlc.
+
+#include <lib/fidl/internal.h>
+
+
+extern const struct FidlCodedStruct fidl_test_experimentalmaybefromtypealias_TestingTable;
+
+
+static const struct FidlCodedVector Vector1nonnullable6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&fidl_internal_kUint64Table), .max_count=1u, .element_size=8u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array8_6uint64Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&fidl_internal_kUint64Table), .array_size=8u, .element_size=8u};
+
+static const struct FidlCodedVector Vector4294967295nonnullable25Vector1nonnullable6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Vector1nonnullable6uint64Table), .max_count=4294967295u, .element_size=16u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedVector Vector4294967295nonnullable14Array8_6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Array8_6uint64Table), .max_count=4294967295u, .element_size=8u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array64_25Vector1nonnullable6uint64Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Vector1nonnullable6uint64Table), .array_size=64u, .element_size=16u};
+
+static const struct FidlCodedArray Array32_14Array8_6uint64Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Array8_6uint64Table), .array_size=32u, .element_size=8u};
+
+static const struct FidlCodedVector Vector4294967295nullable6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&fidl_internal_kUint64Table), .max_count=4294967295u, .element_size=8u, .nullable=kFidlNullability_Nullable};
+
+static const struct FidlCodedVector Vector4294967295nonnullable31Vector4294967295nullable6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Vector4294967295nullable6uint64Table), .max_count=4294967295u, .element_size=16u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array64_31Vector4294967295nullable6uint64Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Vector4294967295nullable6uint64Table), .array_size=64u, .element_size=16u};
+
+static const struct FidlCodedHandle Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_CHANNEL, .handle_rights=ZX_DEFAULT_CHANNEL_RIGHTS, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedVector Vector4294967295nonnullable71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable), .max_count=4294967295u, .element_size=4u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array16_71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable), .array_size=16u, .element_size=4u};
+
+static const struct FidlCodedHandle Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_CHANNEL, .handle_rights=ZX_DEFAULT_CHANNEL_RIGHTS, .nullable=kFidlNullability_Nullable};
+
+static const struct FidlCodedVector Vector4294967295nonnullable68Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable), .max_count=4294967295u, .element_size=4u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array16_68Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable), .array_size=16u, .element_size=4u};
+
+static const struct FidlCodedVector Vector4294967295nonnullable5uint8Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&fidl_internal_kUint8Table), .max_count=4294967295u, .element_size=1u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedVector Vector4294967295nonnullable33Vector4294967295nonnullable5uint8Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Vector4294967295nonnullable5uint8Table), .max_count=4294967295u, .element_size=16u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array64_33Vector4294967295nonnullable5uint8Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Vector4294967295nonnullable5uint8Table), .array_size=64u, .element_size=16u};
+
+static const struct FidlCodedString String4294967295nonnullableTable = {.tag=kFidlTypeString, .max_size=4294967295u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedVector Vector4294967295nonnullable27String4294967295nonnullableTable = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&String4294967295nonnullableTable), .max_count=4294967295u, .element_size=16u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array64_27String4294967295nonnullableTable __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&String4294967295nonnullableTable), .array_size=64u, .element_size=16u};
+
+static const struct FidlCodedVector Vector2nonnullable6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&fidl_internal_kUint64Table), .max_count=2u, .element_size=8u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedVector Vector3nonnullable25Vector2nonnullable6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Vector2nonnullable6uint64Table), .max_count=3u, .element_size=16u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array48_25Vector2nonnullable6uint64Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Vector2nonnullable6uint64Table), .array_size=48u, .element_size=16u};
+
+static const struct FidlCodedArray Array16_6uint64Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&fidl_internal_kUint64Table), .array_size=16u, .element_size=8u};
+
+static const struct FidlCodedVector Vector3nonnullable15Array16_6uint64Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Array16_6uint64Table), .max_count=3u, .element_size=16u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array48_15Array16_6uint64Table __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Array16_6uint64Table), .array_size=48u, .element_size=16u};
+
+static const struct FidlCodedVector Vector3nonnullable71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable), .max_count=3u, .element_size=4u, .nullable=kFidlNullability_Nonnullable};
+
+static const struct FidlCodedArray Array12_71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable __attribute__((unused)) = {.tag=kFidlTypeArray, .element=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable), .array_size=12u, .element_size=4u};
+
+
+static const struct FidlStructElement Fields48fidl_test_experimentalmaybefromtypealias_Testing[] = {
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=8u, .field_type=(fidl_type_t*)(&Vector1nonnullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=32u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable25Vector1nonnullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=48u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable14Array8_6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=64u, .field_type=(fidl_type_t*)(&Array64_25Vector1nonnullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=160u, .field_type=(fidl_type_t*)(&Vector4294967295nullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=176u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable31Vector4294967295nullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=192u, .field_type=(fidl_type_t*)(&Array64_31Vector4294967295nullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=264u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable14Array8_6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=312u, .field_type=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable)}},
+ /*FidlStructPadding*/{.padding=/*FidlStructPadding*/{.offset=316u, .header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Padding32,.is_resource=kFidlIsResource_NotResource},.mask_32=4294967295u}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=320u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=336u, .field_type=(fidl_type_t*)(&Array16_71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=352u, .field_type=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable)}},
+ /*FidlStructPadding*/{.padding=/*FidlStructPadding*/{.offset=356u, .header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Padding32,.is_resource=kFidlIsResource_NotResource},.mask_32=4294967295u}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=360u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable68Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=376u, .field_type=(fidl_type_t*)(&Array16_68Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=392u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable5uint8Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=408u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable33Vector4294967295nonnullable5uint8Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=424u, .field_type=(fidl_type_t*)(&Array64_33Vector4294967295nonnullable5uint8Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=488u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=504u, .field_type=(fidl_type_t*)(&Vector4294967295nonnullable27String4294967295nonnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=520u, .field_type=(fidl_type_t*)(&Array64_27String4294967295nonnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=584u, .field_type=(fidl_type_t*)(&Vector2nonnullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=600u, .field_type=(fidl_type_t*)(&Vector3nonnullable25Vector2nonnullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=616u, .field_type=(fidl_type_t*)(&Array48_25Vector2nonnullable6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=680u, .field_type=(fidl_type_t*)(&Vector3nonnullable15Array16_6uint64Table)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=744u, .field_type=(fidl_type_t*)(&Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable)}},
+ /*FidlStructPadding*/{.padding=/*FidlStructPadding*/{.offset=748u, .header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Padding32,.is_resource=kFidlIsResource_NotResource},.mask_32=4294967295u}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=752u, .field_type=(fidl_type_t*)(&Vector3nonnullable71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable)}},
+ /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=768u, .field_type=(fidl_type_t*)(&Array12_71Request51fidl_test_experimentalmaybefromtypealias_MyProtocolnonnullableTable)}},
+ /*FidlStructPadding*/{.padding=/*FidlStructPadding*/{.offset=780u, .header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Padding32,.is_resource=kFidlIsResource_NotResource},.mask_32=4294967295u}}
+};
+const struct FidlCodedStruct fidl_test_experimentalmaybefromtypealias_TestingTable = {.tag=kFidlTypeStruct, .elements=Fields48fidl_test_experimentalmaybefromtypealias_Testing, .element_count=31u, .size=784u, .name="fidl.test.experimentalmaybefromtypealias/Testing"};
+
diff --git a/tools/fidl/fidlc/goldens/goldens.txt b/tools/fidl/fidlc/goldens/goldens.txt
index d6f32736..d8c2fea 100644
--- a/tools/fidl/fidlc/goldens/goldens.txt
+++ b/tools/fidl/fidlc/goldens/goldens.txt
@@ -24,6 +24,8 @@
error.tables.c.golden
escaping.json.golden
escaping.tables.c.golden
+experimental_maybe_from_type_alias.json.golden
+experimental_maybe_from_type_alias.tables.c.golden
foreign_type_in_response_used_through_compose.json.golden
foreign_type_in_response_used_through_compose.tables.c.golden
handles.json.golden
diff --git a/tools/fidl/fidlc/testdata/BUILD.gn b/tools/fidl/fidlc/testdata/BUILD.gn
index db5a750..85d06e5 100644
--- a/tools/fidl/fidlc/testdata/BUILD.gn
+++ b/tools/fidl/fidlc/testdata/BUILD.gn
@@ -18,6 +18,7 @@
"enum.test.fidl",
"error.test.fidl",
"escaping.test.fidl",
+ "experimental_maybe_from_type_alias.test.fidl",
"handles.test.fidl",
"handles_in_types.test.fidl",
"inheritance.test.fidl",
diff --git a/tools/fidl/fidlc/testdata/info.gni b/tools/fidl/fidlc/testdata/info.gni
index 6aad7fb..0db8a8b 100644
--- a/tools/fidl/fidlc/testdata/info.gni
+++ b/tools/fidl/fidlc/testdata/info.gni
@@ -203,6 +203,17 @@
]
},
{
+ name = "experimental_maybe_from_type_alias"
+ target = "//tools/fidl/fidlc/testdata/type_aliases:fidl.test.experimentalmaybefromtypealias"
+ denylist = [
+ # TODO(fxbug.dev/62533): Fix many issues.
+ "fidlgen_hlcpp",
+ "fidlgen_cpp",
+ "fidlgen_libfuzzer",
+ "fidlgen_llcpp",
+ ]
+ },
+ {
name = "foreign_type_in_response_used_through_compose"
target = "//tools/fidl/fidlc/testdata/foreign_type_in_response_used_through_compose:fidl.test.foreigntypeinresponseusedthroughcompose"
host_build_denylist = [
diff --git a/tools/fidl/fidlc/testdata/type_aliases/BUILD.gn b/tools/fidl/fidlc/testdata/type_aliases/BUILD.gn
index 5997c56..187c788 100644
--- a/tools/fidl/fidlc/testdata/type_aliases/BUILD.gn
+++ b/tools/fidl/fidlc/testdata/type_aliases/BUILD.gn
@@ -11,6 +11,12 @@
host_llcpp = true
}
+fidl("fidl.test.experimentalmaybefromtypealias") {
+ testonly = true
+ sources = [ "experimental_maybe_from_type_alias.test.fidl" ]
+ host_llcpp = true
+}
+
fidl("someotherlibrary") {
testonly = true
sources = [ "someotherlibrary.test.fidl" ]
diff --git a/tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl b/tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl
new file mode 100644
index 0000000..4ea4868
--- /dev/null
+++ b/tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl
@@ -0,0 +1,61 @@
+library fidl.test.experimentalmaybefromtypealias;
+
+protocol MyProtocol {
+};
+
+alias AliasOfBytes = bytes;
+alias AliasOfString = string;
+alias U64 = uint64;
+alias AliasOfProtocol = MyProtocol;
+alias Vector = vector<uint64>?;
+alias AliasOfArray = array<uint64>:1;
+alias AliasOfRequest = request<MyProtocol?>?;
+alias AliasOfVectorContainingAliasOfVector = vector<U64>:2;
+alias AliasOfArrayContainingAliasOfArray = array<U64>:2;
+alias AliasOfRequestContainingAliasOfProtocol = request<AliasOfProtocol>;
+
+resource struct Testing {
+ U64 u1;
+ vector<U64>:1 u2;
+ array<U64>:1 u3;
+ vector<vector<U64>:1> u4;
+ vector<array<U64>:1> u5;
+ array<vector<U64>:1>:4 u6;
+ array<array<U64>:1>:4 u7;
+
+ Vector v1;
+ vector<Vector> v2;
+ array<Vector>:4 v3;
+
+ AliasOfArray a1;
+ vector<AliasOfArray> a2;
+ array<AliasOfArray>:4 a3;
+
+ request<AliasOfProtocol> p1;
+ vector<request<AliasOfProtocol>> p2;
+ array<request<AliasOfProtocol>>:4 p3;
+
+ AliasOfRequest r1;
+ vector<AliasOfRequest> r2;
+ array<AliasOfRequest>:4 r3;
+
+ AliasOfBytes b1;
+ vector<AliasOfBytes> b2;
+ array<AliasOfBytes>:4 b3;
+
+ AliasOfString s1;
+ vector<AliasOfString> s2;
+ array<AliasOfString>:4 s3;
+
+ AliasOfVectorContainingAliasOfVector vv1;
+ vector<AliasOfVectorContainingAliasOfVector>:3 vv2;
+ array<AliasOfVectorContainingAliasOfVector>:3 vv3;
+
+ AliasOfArrayContainingAliasOfArray aa1;
+ vector<AliasOfArrayContainingAliasOfArray>:3 aa2;
+ array<AliasOfArrayContainingAliasOfArray>:3 aa3;
+
+ AliasOfRequestContainingAliasOfProtocol rr1;
+ vector<AliasOfRequestContainingAliasOfProtocol>:3 rr2;
+ array<AliasOfRequestContainingAliasOfProtocol>:3 rr3;
+};
diff --git a/tools/fidl/fidldoc/goldens/README.md.golden b/tools/fidl/fidldoc/goldens/README.md.golden
index b0ac296..ac1e95d 100644
--- a/tools/fidl/fidldoc/goldens/README.md.golden
+++ b/tools/fidl/fidldoc/goldens/README.md.golden
@@ -60,6 +60,10 @@
<td></td>
</tr>
<tr>
+ <td><a href="fidl.test.experimentalmaybefromtypealias/index">fidl.test.experimentalmaybefromtypealias</a></td>
+ <td></td>
+</tr>
+<tr>
<td><a href="fidl.test.foreigntypeinresponseusedthroughcompose/index">fidl.test.foreigntypeinresponseusedthroughcompose</a></td>
<td></td>
</tr>
diff --git a/tools/fidl/fidldoc/goldens/_toc.yaml.golden b/tools/fidl/fidldoc/goldens/_toc.yaml.golden
index aa828c7..615c278 100644
--- a/tools/fidl/fidldoc/goldens/_toc.yaml.golden
+++ b/tools/fidl/fidldoc/goldens/_toc.yaml.golden
@@ -29,6 +29,8 @@
path: /fidl.test.error
- title: fidl.test.escaping
path: /fidl.test.escaping
+ - title: fidl.test.experimentalmaybefromtypealias
+ path: /fidl.test.experimentalmaybefromtypealias
- title: fidl.test.foreigntypeinresponseusedthroughcompose
path: /fidl.test.foreigntypeinresponseusedthroughcompose
- title: fidl.test.handles
diff --git a/tools/fidl/fidldoc/goldens/experimental_maybe_from_type_alias.md.golden b/tools/fidl/fidldoc/goldens/experimental_maybe_from_type_alias.md.golden
new file mode 100644
index 0000000..f000a9b
--- /dev/null
+++ b/tools/fidl/fidldoc/goldens/experimental_maybe_from_type_alias.md.golden
@@ -0,0 +1,329 @@
+[TOC]
+
+# fidl.test.experimentalmaybefromtypealias
+
+
+## **PROTOCOLS**
+
+## MyProtocol {#MyProtocol}
+*Defined in [fidl.test.experimentalmaybefromtypealias/experimental_maybe_from_type_alias.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=3)*
+
+
+
+
+## **STRUCTS**
+
+### Testing {#Testing}
+*Defined in [fidl.test.experimentalmaybefromtypealias/experimental_maybe_from_type_alias.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=17)*
+
+
+
+<table>
+ <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="Testing.u1">
+ <td><code>u1</code></td>
+ <td>
+ <code><a class='link' href='#U64'>U64</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.u2">
+ <td><code>u2</code></td>
+ <td>
+ <code>vector<uint64>[1]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.u3">
+ <td><code>u3</code></td>
+ <td>
+ <code>uint64[1]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.u4">
+ <td><code>u4</code></td>
+ <td>
+ <code>vector<vector<uint64>></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.u5">
+ <td><code>u5</code></td>
+ <td>
+ <code>vector<array></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.u6">
+ <td><code>u6</code></td>
+ <td>
+ <code>[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.u7">
+ <td><code>u7</code></td>
+ <td>
+ <code>[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.v1">
+ <td><code>v1</code></td>
+ <td>
+ <code><a class='link' href='#Vector'>Vector</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.v2">
+ <td><code>v2</code></td>
+ <td>
+ <code>vector<vector<uint64>></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.v3">
+ <td><code>v3</code></td>
+ <td>
+ <code>[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.a1">
+ <td><code>a1</code></td>
+ <td>
+ <code><a class='link' href='#AliasOfArray'>AliasOfArray</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.a2">
+ <td><code>a2</code></td>
+ <td>
+ <code>vector<array></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.a3">
+ <td><code>a3</code></td>
+ <td>
+ <code>[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.p1">
+ <td><code>p1</code></td>
+ <td>
+ <code>request<<a class='link' href='#MyProtocol'>MyProtocol</a>></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.p2">
+ <td><code>p2</code></td>
+ <td>
+ <code>vector<fidl.test.experimentalmaybefromtypealias/MyProtocol></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.p3">
+ <td><code>p3</code></td>
+ <td>
+ <code>fidl.test.experimentalmaybefromtypealias/MyProtocol[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.r1">
+ <td><code>r1</code></td>
+ <td>
+ <code><a class='link' href='#AliasOfRequest'>AliasOfRequest</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.r2">
+ <td><code>r2</code></td>
+ <td>
+ <code>vector<fidl.test.experimentalmaybefromtypealias/MyProtocol></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.r3">
+ <td><code>r3</code></td>
+ <td>
+ <code>fidl.test.experimentalmaybefromtypealias/MyProtocol[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.b1">
+ <td><code>b1</code></td>
+ <td>
+ <code><a class='link' href='#AliasOfBytes'>AliasOfBytes</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.b2">
+ <td><code>b2</code></td>
+ <td>
+ <code>vector<vector<uint8>></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.b3">
+ <td><code>b3</code></td>
+ <td>
+ <code>[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.s1">
+ <td><code>s1</code></td>
+ <td>
+ <code><a class='link' href='#AliasOfString'>AliasOfString</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.s2">
+ <td><code>s2</code></td>
+ <td>
+ <code>vector<string></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.s3">
+ <td><code>s3</code></td>
+ <td>
+ <code>[4]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.vv1">
+ <td><code>vv1</code></td>
+ <td>
+ <code><a class='link' href='#AliasOfVectorContainingAliasOfVector'>AliasOfVectorContainingAliasOfVector</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.vv2">
+ <td><code>vv2</code></td>
+ <td>
+ <code>vector<vector<uint64>>[3]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.vv3">
+ <td><code>vv3</code></td>
+ <td>
+ <code>[3]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.aa1">
+ <td><code>aa1</code></td>
+ <td>
+ <code><a class='link' href='#AliasOfArrayContainingAliasOfArray'>AliasOfArrayContainingAliasOfArray</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.aa2">
+ <td><code>aa2</code></td>
+ <td>
+ <code>vector<array>[3]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.aa3">
+ <td><code>aa3</code></td>
+ <td>
+ <code>[3]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.rr1">
+ <td><code>rr1</code></td>
+ <td>
+ <code><a class='link' href='#AliasOfRequestContainingAliasOfProtocol'>AliasOfRequestContainingAliasOfProtocol</a></code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.rr2">
+ <td><code>rr2</code></td>
+ <td>
+ <code>vector<fidl.test.experimentalmaybefromtypealias/MyProtocol>[3]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr><tr id="Testing.rr3">
+ <td><code>rr3</code></td>
+ <td>
+ <code>fidl.test.experimentalmaybefromtypealias/MyProtocol[3]</code>
+ </td>
+ <td></td>
+ <td>No default</td>
+ </tr>
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+## **TYPE ALIASES**
+
+<table>
+ <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="AliasOfArray">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=11">AliasOfArray</a></td>
+ <td>
+ <code>array</code>[<code>1</code>]</td>
+ <td></td>
+ </tr><tr id="AliasOfArrayContainingAliasOfArray">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=14">AliasOfArrayContainingAliasOfArray</a></td>
+ <td>
+ <code>array</code>[<code>2</code>]</td>
+ <td></td>
+ </tr><tr id="AliasOfBytes">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=6">AliasOfBytes</a></td>
+ <td>
+ <code>vector</code></td>
+ <td></td>
+ </tr><tr id="AliasOfProtocol">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=9">AliasOfProtocol</a></td>
+ <td>
+ <code>fidl.test.experimentalmaybefromtypealias/MyProtocol</code></td>
+ <td></td>
+ </tr><tr id="AliasOfRequest">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=12">AliasOfRequest</a></td>
+ <td>
+ <code>request</code></td>
+ <td></td>
+ </tr><tr id="AliasOfRequestContainingAliasOfProtocol">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=15">AliasOfRequestContainingAliasOfProtocol</a></td>
+ <td>
+ <code>request</code></td>
+ <td></td>
+ </tr><tr id="AliasOfString">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=7">AliasOfString</a></td>
+ <td>
+ <code>string</code></td>
+ <td></td>
+ </tr><tr id="AliasOfVectorContainingAliasOfVector">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=13">AliasOfVectorContainingAliasOfVector</a></td>
+ <td>
+ <code>vector</code>[<code>2</code>]</td>
+ <td></td>
+ </tr><tr id="U64">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=8">U64</a></td>
+ <td>
+ <code>uint64</code></td>
+ <td></td>
+ </tr><tr id="Vector">
+ <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/master:tools/fidl/fidlc/testdata/type_aliases/experimental_maybe_from_type_alias.test.fidl;l=10">Vector</a></td>
+ <td>
+ <code>vector</code></td>
+ <td></td>
+ </tr></table>
+
diff --git a/tools/fidl/fidldoc/goldens/goldens.txt b/tools/fidl/fidldoc/goldens/goldens.txt
index 29bf2eb..a11ef7f 100644
--- a/tools/fidl/fidldoc/goldens/goldens.txt
+++ b/tools/fidl/fidldoc/goldens/goldens.txt
@@ -13,6 +13,7 @@
enum.md.golden
error.md.golden
escaping.md.golden
+experimental_maybe_from_type_alias.md.golden
foreign_type_in_response_used_through_compose.md.golden
handles.md.golden
handles_in_types.md.golden
diff --git a/tools/fidl/fidlgen_dart/goldens/experimental_maybe_from_type_alias_async.dart.golden b/tools/fidl/fidlgen_dart/goldens/experimental_maybe_from_type_alias_async.dart.golden
new file mode 100644
index 0000000..2156aa26
--- /dev/null
+++ b/tools/fidl/fidlgen_dart/goldens/experimental_maybe_from_type_alias_async.dart.golden
@@ -0,0 +1,607 @@
+// WARNING: This file is machine generated by fidlgen_dart.
+// @dart = 2.12
+
+library fidl_fidl_test_experimentalmaybefromtypealias_async;
+
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
+import 'dart:developer';
+import 'dart:typed_data';
+
+import 'package:fidl/fidl.dart' as $fidl;
+import 'package:meta/meta.dart';
+import 'package:zircon/zircon.dart' as $zircon;
+
+// ignore_for_file: always_specify_types
+// ignore_for_file: avoid_positional_boolean_parameters
+// ignore_for_file: avoid_returning_null
+// ignore_for_file: cascade_invocations
+// ignore_for_file: constant_identifier_names
+// ignore_for_file: one_member_abstracts
+// ignore_for_file: prefer_constructors_over_static_methods
+// ignore_for_file: prefer_single_quotes
+// ignore_for_file: public_member_api_docs
+// ignore_for_file: unused_import
+// ignore_for_file: unused_local_variable
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: library_prefixes
+// ignore_for_file: prefer_typing_uninitialized_variables
+// ignore_for_file: avoid_js_rounded_ints
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: always_put_required_named_parameters_first
+// ignore_for_file: prefer_generic_function_type_aliases
+// ignore_for_file: prefer_equal_for_default_values
+// ignore_for_file: avoid_catches_without_on_clauses
+// ignore_for_file: unused_shown_name
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: comment_references
+// ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
+
+class Testing extends $fidl.Struct {
+ const Testing({
+ required this.u1,
+ required this.u2,
+ required this.u3,
+ required this.u4,
+ required this.u5,
+ required this.u6,
+ required this.u7,
+ this.v1,
+ required this.v2,
+ required this.v3,
+ required this.a1,
+ required this.a2,
+ required this.a3,
+ required this.p1,
+ required this.p2,
+ required this.p3,
+ this.r1,
+ required this.r2,
+ required this.r3,
+ required this.b1,
+ required this.b2,
+ required this.b3,
+ required this.s1,
+ required this.s2,
+ required this.s3,
+ required this.vv1,
+ required this.vv2,
+ required this.vv3,
+ required this.aa1,
+ required this.aa2,
+ required this.aa3,
+ required this.rr1,
+ required this.rr2,
+ required this.rr3,
+ });
+ Testing.clone(
+ Testing $orig, {
+ int? u1,
+ Uint64List? u2,
+ Uint64List? u3,
+ List<Uint64List>? u4,
+ List<Uint64List>? u5,
+ List<Uint64List>? u6,
+ List<Uint64List>? u7,
+ Uint64List? v1,
+ List<Uint64List?>? v2,
+ List<Uint64List?>? v3,
+ Uint64List? a1,
+ List<Uint64List>? a2,
+ List<Uint64List>? a3,
+ $fidl.InterfaceRequest<MyProtocol>? p1,
+ List<$fidl.InterfaceRequest<MyProtocol>>? p2,
+ List<$fidl.InterfaceRequest<MyProtocol>>? p3,
+ $fidl.InterfaceRequest<MyProtocol>? r1,
+ List<$fidl.InterfaceRequest<MyProtocol>?>? r2,
+ List<$fidl.InterfaceRequest<MyProtocol>?>? r3,
+ Uint8List? b1,
+ List<Uint8List>? b2,
+ List<Uint8List>? b3,
+ String? s1,
+ List<String>? s2,
+ List<String>? s3,
+ Uint64List? vv1,
+ List<Uint64List>? vv2,
+ List<Uint64List>? vv3,
+ Uint64List? aa1,
+ List<Uint64List>? aa2,
+ List<Uint64List>? aa3,
+ $fidl.InterfaceRequest<MyProtocol>? rr1,
+ List<$fidl.InterfaceRequest<MyProtocol>>? rr2,
+ List<$fidl.InterfaceRequest<MyProtocol>>? rr3,
+ }) : this(
+ u1: u1 ?? $orig.u1,
+ u2: u2 ?? $orig.u2,
+ u3: u3 ?? $orig.u3,
+ u4: u4 ?? $orig.u4,
+ u5: u5 ?? $orig.u5,
+ u6: u6 ?? $orig.u6,
+ u7: u7 ?? $orig.u7,
+ v1: v1 ?? $orig.v1,
+ v2: v2 ?? $orig.v2,
+ v3: v3 ?? $orig.v3,
+ a1: a1 ?? $orig.a1,
+ a2: a2 ?? $orig.a2,
+ a3: a3 ?? $orig.a3,
+ p1: p1 ?? $orig.p1,
+ p2: p2 ?? $orig.p2,
+ p3: p3 ?? $orig.p3,
+ r1: r1 ?? $orig.r1,
+ r2: r2 ?? $orig.r2,
+ r3: r3 ?? $orig.r3,
+ b1: b1 ?? $orig.b1,
+ b2: b2 ?? $orig.b2,
+ b3: b3 ?? $orig.b3,
+ s1: s1 ?? $orig.s1,
+ s2: s2 ?? $orig.s2,
+ s3: s3 ?? $orig.s3,
+ vv1: vv1 ?? $orig.vv1,
+ vv2: vv2 ?? $orig.vv2,
+ vv3: vv3 ?? $orig.vv3,
+ aa1: aa1 ?? $orig.aa1,
+ aa2: aa2 ?? $orig.aa2,
+ aa3: aa3 ?? $orig.aa3,
+ rr1: rr1 ?? $orig.rr1,
+ rr2: rr2 ?? $orig.rr2,
+ rr3: rr3 ?? $orig.rr3,
+ );
+
+ Testing.cloneWithout(
+ Testing $orig, {
+ bool v1 = false,
+ bool r1 = false,
+ }) : this(
+ u1: $orig.u1,
+ u2: $orig.u2,
+ u3: $orig.u3,
+ u4: $orig.u4,
+ u5: $orig.u5,
+ u6: $orig.u6,
+ u7: $orig.u7,
+ v1: v1 ? null : $orig.v1,
+ v2: $orig.v2,
+ v3: $orig.v3,
+ a1: $orig.a1,
+ a2: $orig.a2,
+ a3: $orig.a3,
+ p1: $orig.p1,
+ p2: $orig.p2,
+ p3: $orig.p3,
+ r1: r1 ? null : $orig.r1,
+ r2: $orig.r2,
+ r3: $orig.r3,
+ b1: $orig.b1,
+ b2: $orig.b2,
+ b3: $orig.b3,
+ s1: $orig.s1,
+ s2: $orig.s2,
+ s3: $orig.s3,
+ vv1: $orig.vv1,
+ vv2: $orig.vv2,
+ vv3: $orig.vv3,
+ aa1: $orig.aa1,
+ aa2: $orig.aa2,
+ aa3: $orig.aa3,
+ rr1: $orig.rr1,
+ rr2: $orig.rr2,
+ rr3: $orig.rr3,
+ );
+
+ final int u1;
+ final Uint64List u2;
+ final Uint64List u3;
+ final List<Uint64List> u4;
+ final List<Uint64List> u5;
+ final List<Uint64List> u6;
+ final List<Uint64List> u7;
+ final Uint64List? v1;
+ final List<Uint64List?> v2;
+ final List<Uint64List?> v3;
+ final Uint64List a1;
+ final List<Uint64List> a2;
+ final List<Uint64List> a3;
+ final $fidl.InterfaceRequest<MyProtocol> p1;
+ final List<$fidl.InterfaceRequest<MyProtocol>> p2;
+ final List<$fidl.InterfaceRequest<MyProtocol>> p3;
+ final $fidl.InterfaceRequest<MyProtocol>? r1;
+ final List<$fidl.InterfaceRequest<MyProtocol>?> r2;
+ final List<$fidl.InterfaceRequest<MyProtocol>?> r3;
+ final Uint8List b1;
+ final List<Uint8List> b2;
+ final List<Uint8List> b3;
+ final String s1;
+ final List<String> s2;
+ final List<String> s3;
+ final Uint64List vv1;
+ final List<Uint64List> vv2;
+ final List<Uint64List> vv3;
+ final Uint64List aa1;
+ final List<Uint64List> aa2;
+ final List<Uint64List> aa3;
+ final $fidl.InterfaceRequest<MyProtocol> rr1;
+ final List<$fidl.InterfaceRequest<MyProtocol>> rr2;
+ final List<$fidl.InterfaceRequest<MyProtocol>> rr3;
+
+ @override
+ List<Object?> get $fields {
+ return <Object?>[
+ u1,
+ u2,
+ u3,
+ u4,
+ u5,
+ u6,
+ u7,
+ v1,
+ v2,
+ v3,
+ a1,
+ a2,
+ a3,
+ p1,
+ p2,
+ p3,
+ r1,
+ r2,
+ r3,
+ b1,
+ b2,
+ b3,
+ s1,
+ s2,
+ s3,
+ vv1,
+ vv2,
+ vv3,
+ aa1,
+ aa2,
+ aa3,
+ rr1,
+ rr2,
+ rr3,
+ ];
+ }
+
+ static const $fieldType0 = $fidl.Uint64Type();
+ static const $fieldType1 = $fidl.VectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: 1);
+ static const $fieldType2 = $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 1);
+ static const $fieldType3 = $fidl.VectorType<Uint64List, List<Uint64List>>(
+ element: $fidl.VectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: 1),
+ maybeElementCount: null);
+ static const $fieldType4 = $fidl.VectorType<Uint64List, List<Uint64List>>(
+ element: $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 1),
+ maybeElementCount: null);
+ static const $fieldType5 = $fidl.ArrayType<Uint64List, List<Uint64List>>(
+ element: $fidl.VectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: 1),
+ elementCount: 4);
+ static const $fieldType6 = $fidl.ArrayType<Uint64List, List<Uint64List>>(
+ element: $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 1),
+ elementCount: 4);
+ static const $fieldType7 = $fidl.NullableVectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: null);
+ static const $fieldType8 = $fidl.VectorType<Uint64List?, List<Uint64List?>>(
+ element: $fidl.NullableVectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: null),
+ maybeElementCount: null);
+ static const $fieldType9 = $fidl.ArrayType<Uint64List?, List<Uint64List?>>(
+ element: $fidl.NullableVectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: null),
+ elementCount: 4);
+ static const $fieldType10 = $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 1);
+ static const $fieldType11 = $fidl.VectorType<Uint64List, List<Uint64List>>(
+ element: $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 1),
+ maybeElementCount: null);
+ static const $fieldType12 = $fidl.ArrayType<Uint64List, List<Uint64List>>(
+ element: $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 1),
+ elementCount: 4);
+ static const $fieldType13 = $fidl.InterfaceRequestType<MyProtocol>();
+ static const $fieldType14 = $fidl.VectorType<
+ $fidl.InterfaceRequest<MyProtocol>,
+ List<$fidl.InterfaceRequest<MyProtocol>>>(
+ element: $fidl.InterfaceRequestType<MyProtocol>(),
+ maybeElementCount: null);
+ static const $fieldType15 = $fidl.ArrayType<
+ $fidl.InterfaceRequest<MyProtocol>,
+ List<$fidl.InterfaceRequest<MyProtocol>>>(
+ element: $fidl.InterfaceRequestType<MyProtocol>(), elementCount: 4);
+ static const $fieldType16 = $fidl.NullableInterfaceRequestType<MyProtocol>();
+ static const $fieldType17 = $fidl.VectorType<
+ $fidl.InterfaceRequest<MyProtocol>?,
+ List<$fidl.InterfaceRequest<MyProtocol>?>>(
+ element: $fidl.NullableInterfaceRequestType<MyProtocol>(),
+ maybeElementCount: null);
+ static const $fieldType18 = $fidl.ArrayType<
+ $fidl.InterfaceRequest<MyProtocol>?,
+ List<$fidl.InterfaceRequest<MyProtocol>?>>(
+ element: $fidl.NullableInterfaceRequestType<MyProtocol>(),
+ elementCount: 4);
+ static const $fieldType19 = $fidl.VectorType<int, Uint8List>(
+ element: $fidl.Uint8Type(), maybeElementCount: null);
+ static const $fieldType20 = $fidl.VectorType<Uint8List, List<Uint8List>>(
+ element: $fidl.VectorType<int, Uint8List>(
+ element: $fidl.Uint8Type(), maybeElementCount: null),
+ maybeElementCount: null);
+ static const $fieldType21 = $fidl.ArrayType<Uint8List, List<Uint8List>>(
+ element: $fidl.VectorType<int, Uint8List>(
+ element: $fidl.Uint8Type(), maybeElementCount: null),
+ elementCount: 4);
+ static const $fieldType22 = $fidl.StringType(maybeElementCount: null);
+ static const $fieldType23 = $fidl.VectorType<String, List<String>>(
+ element: $fidl.StringType(maybeElementCount: null),
+ maybeElementCount: null);
+ static const $fieldType24 = $fidl.ArrayType<String, List<String>>(
+ element: $fidl.StringType(maybeElementCount: null), elementCount: 4);
+ static const $fieldType25 = $fidl.VectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: 2);
+ static const $fieldType26 = $fidl.VectorType<Uint64List, List<Uint64List>>(
+ element: $fidl.VectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: 2),
+ maybeElementCount: 3);
+ static const $fieldType27 = $fidl.ArrayType<Uint64List, List<Uint64List>>(
+ element: $fidl.VectorType<int, Uint64List>(
+ element: $fidl.Uint64Type(), maybeElementCount: 2),
+ elementCount: 3);
+ static const $fieldType28 = $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 2);
+ static const $fieldType29 = $fidl.VectorType<Uint64List, List<Uint64List>>(
+ element: $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 2),
+ maybeElementCount: 3);
+ static const $fieldType30 = $fidl.ArrayType<Uint64List, List<Uint64List>>(
+ element: $fidl.ArrayType<int, Uint64List>(
+ element: $fidl.Uint64Type(), elementCount: 2),
+ elementCount: 3);
+ static const $fieldType31 = $fidl.InterfaceRequestType<MyProtocol>();
+ static const $fieldType32 = $fidl.VectorType<
+ $fidl.InterfaceRequest<MyProtocol>,
+ List<$fidl.InterfaceRequest<MyProtocol>>>(
+ element: $fidl.InterfaceRequestType<MyProtocol>(), maybeElementCount: 3);
+ static const $fieldType33 = $fidl.ArrayType<
+ $fidl.InterfaceRequest<MyProtocol>,
+ List<$fidl.InterfaceRequest<MyProtocol>>>(
+ element: $fidl.InterfaceRequestType<MyProtocol>(), elementCount: 3);
+
+ @override
+ void $encode($fidl.Encoder $encoder, int $offset, int $depth) {
+ $fieldType0.encode($encoder, u1, $offset + 0, $depth);
+ $fieldType1.encode($encoder, u2, $offset + 8, $depth);
+ $fieldType2.encode($encoder, u3, $offset + 24, $depth);
+ $fieldType3.encode($encoder, u4, $offset + 32, $depth);
+ $fieldType4.encode($encoder, u5, $offset + 48, $depth);
+ $fieldType5.encode($encoder, u6, $offset + 64, $depth);
+ $fieldType6.encode($encoder, u7, $offset + 128, $depth);
+ $fieldType7.encode($encoder, v1, $offset + 160, $depth);
+ $fieldType8.encode($encoder, v2, $offset + 176, $depth);
+ $fieldType9.encode($encoder, v3, $offset + 192, $depth);
+ $fieldType10.encode($encoder, a1, $offset + 256, $depth);
+ $fieldType11.encode($encoder, a2, $offset + 264, $depth);
+ $fieldType12.encode($encoder, a3, $offset + 280, $depth);
+ $fieldType13.encode($encoder, p1, $offset + 312, $depth);
+ $fieldType14.encode($encoder, p2, $offset + 320, $depth);
+ $fieldType15.encode($encoder, p3, $offset + 336, $depth);
+ $fieldType16.encode($encoder, r1, $offset + 352, $depth);
+ $fieldType17.encode($encoder, r2, $offset + 360, $depth);
+ $fieldType18.encode($encoder, r3, $offset + 376, $depth);
+ $fieldType19.encode($encoder, b1, $offset + 392, $depth);
+ $fieldType20.encode($encoder, b2, $offset + 408, $depth);
+ $fieldType21.encode($encoder, b3, $offset + 424, $depth);
+ $fieldType22.encode($encoder, s1, $offset + 488, $depth);
+ $fieldType23.encode($encoder, s2, $offset + 504, $depth);
+ $fieldType24.encode($encoder, s3, $offset + 520, $depth);
+ $fieldType25.encode($encoder, vv1, $offset + 584, $depth);
+ $fieldType26.encode($encoder, vv2, $offset + 600, $depth);
+ $fieldType27.encode($encoder, vv3, $offset + 616, $depth);
+ $fieldType28.encode($encoder, aa1, $offset + 664, $depth);
+ $fieldType29.encode($encoder, aa2, $offset + 680, $depth);
+ $fieldType30.encode($encoder, aa3, $offset + 696, $depth);
+ $fieldType31.encode($encoder, rr1, $offset + 744, $depth);
+ $fieldType32.encode($encoder, rr2, $offset + 752, $depth);
+ $fieldType33.encode($encoder, rr3, $offset + 768, $depth);
+ }
+
+ @override
+ String toString() {
+ return r'Testing' r'(u1: ' +
+ u1.toString() +
+ r', u2: ' +
+ u2.toString() +
+ r', u3: ' +
+ u3.toString() +
+ r', u4: ' +
+ u4.toString() +
+ r', u5: ' +
+ u5.toString() +
+ r', u6: ' +
+ u6.toString() +
+ r', u7: ' +
+ u7.toString() +
+ r', v1: ' +
+ v1.toString() +
+ r', v2: ' +
+ v2.toString() +
+ r', v3: ' +
+ v3.toString() +
+ r', a1: ' +
+ a1.toString() +
+ r', a2: ' +
+ a2.toString() +
+ r', a3: ' +
+ a3.toString() +
+ r', p1: ' +
+ p1.toString() +
+ r', p2: ' +
+ p2.toString() +
+ r', p3: ' +
+ p3.toString() +
+ r', r1: ' +
+ r1.toString() +
+ r', r2: ' +
+ r2.toString() +
+ r', r3: ' +
+ r3.toString() +
+ r', b1: ' +
+ b1.toString() +
+ r', b2: ' +
+ b2.toString() +
+ r', b3: ' +
+ b3.toString() +
+ r', s1: ' +
+ s1.toString() +
+ r', s2: ' +
+ s2.toString() +
+ r', s3: ' +
+ s3.toString() +
+ r', vv1: ' +
+ vv1.toString() +
+ r', vv2: ' +
+ vv2.toString() +
+ r', vv3: ' +
+ vv3.toString() +
+ r', aa1: ' +
+ aa1.toString() +
+ r', aa2: ' +
+ aa2.toString() +
+ r', aa3: ' +
+ aa3.toString() +
+ r', rr1: ' +
+ rr1.toString() +
+ r', rr2: ' +
+ rr2.toString() +
+ r', rr3: ' +
+ rr3.toString() +
+ r')';
+ }
+
+ static Testing _structDecode(
+ $fidl.Decoder $decoder, int $offset, int $depth) {
+ return Testing(
+ u1: $fieldType0.decode($decoder, $offset + 0, $depth),
+ u2: $fieldType1.decode($decoder, $offset + 8, $depth),
+ u3: $fieldType2.decode($decoder, $offset + 24, $depth),
+ u4: $fieldType3.decode($decoder, $offset + 32, $depth),
+ u5: $fieldType4.decode($decoder, $offset + 48, $depth),
+ u6: $fieldType5.decode($decoder, $offset + 64, $depth),
+ u7: $fieldType6.decode($decoder, $offset + 128, $depth),
+ v1: $fieldType7.decode($decoder, $offset + 160, $depth),
+ v2: $fieldType8.decode($decoder, $offset + 176, $depth),
+ v3: $fieldType9.decode($decoder, $offset + 192, $depth),
+ a1: $fieldType10.decode($decoder, $offset + 256, $depth),
+ a2: $fieldType11.decode($decoder, $offset + 264, $depth),
+ a3: $fieldType12.decode($decoder, $offset + 280, $depth),
+ p1: $fieldType13.decode($decoder, $offset + 312, $depth),
+ p2: $fieldType14.decode($decoder, $offset + 320, $depth),
+ p3: $fieldType15.decode($decoder, $offset + 336, $depth),
+ r1: $fieldType16.decode($decoder, $offset + 352, $depth),
+ r2: $fieldType17.decode($decoder, $offset + 360, $depth),
+ r3: $fieldType18.decode($decoder, $offset + 376, $depth),
+ b1: $fieldType19.decode($decoder, $offset + 392, $depth),
+ b2: $fieldType20.decode($decoder, $offset + 408, $depth),
+ b3: $fieldType21.decode($decoder, $offset + 424, $depth),
+ s1: $fieldType22.decode($decoder, $offset + 488, $depth),
+ s2: $fieldType23.decode($decoder, $offset + 504, $depth),
+ s3: $fieldType24.decode($decoder, $offset + 520, $depth),
+ vv1: $fieldType25.decode($decoder, $offset + 584, $depth),
+ vv2: $fieldType26.decode($decoder, $offset + 600, $depth),
+ vv3: $fieldType27.decode($decoder, $offset + 616, $depth),
+ aa1: $fieldType28.decode($decoder, $offset + 664, $depth),
+ aa2: $fieldType29.decode($decoder, $offset + 680, $depth),
+ aa3: $fieldType30.decode($decoder, $offset + 696, $depth),
+ rr1: $fieldType31.decode($decoder, $offset + 744, $depth),
+ rr2: $fieldType32.decode($decoder, $offset + 752, $depth),
+ rr3: $fieldType33.decode($decoder, $offset + 768, $depth));
+ }
+}
+
+// See fxbug.dev/7644:
+// ignore: recursive_compile_time_constant
+const $fidl.StructType<Testing> kTesting_Type = $fidl.StructType<Testing>(
+ inlineSize: 784,
+ structDecode: Testing._structDecode,
+);
+
+// ignore: unused_element, avoid_private_typedef_functions
+typedef _VoidCallback = void Function();
+
+abstract class MyProtocol {
+ $fidl.ServiceData? get $serviceData => MyProtocolData();
+}
+
+// TODO: Remove ServiceData for non-service
+class MyProtocolData implements $fidl.ServiceData<MyProtocol> {
+ const MyProtocolData();
+
+ @override
+ String getName() {
+ return "";
+ }
+
+ @override
+ $fidl.AsyncBinding getBinding() {
+ return MyProtocolBinding();
+ }
+}
+
+class MyProtocolProxy extends $fidl.AsyncProxy<MyProtocol>
+ implements MyProtocol {
+ MyProtocolProxy()
+ : super($fidl.AsyncProxyController<MyProtocol>(
+ $interfaceName: r'MyProtocol')) {
+ ctrl.onResponse = _handleResponse;
+ }
+ @override
+ Null get $serviceData => null;
+
+ void _handleEvent($fidl.IncomingMessage $message) {
+ switch ($message.ordinal) {
+ default:
+ ctrl.proxyError(
+ $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
+ ctrl.close();
+ break;
+ }
+ }
+
+ void _handleResponse($fidl.IncomingMessage $message) {
+ final int $txid = $message.txid;
+ if ($txid == 0) {
+ _handleEvent($message);
+ return;
+ }
+ final $async.Completer? $completer = ctrl.getCompleter($txid);
+ if ($completer == null) {
+ $message.closeHandles();
+ return;
+ }
+ switch ($message.ordinal) {
+ default:
+ ctrl.proxyError(
+ $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
+ ctrl.close();
+ break;
+ }
+ }
+}
+
+class MyProtocolBinding extends $fidl.AsyncBinding<MyProtocol> {
+ MyProtocolBinding() : super(r"MyProtocol");
+
+ @override
+ void handleMessage(
+ $fidl.IncomingMessage $message, $fidl.OutgoingMessageSink $respond) {
+ switch ($message.ordinal) {
+ default:
+ throw $fidl.FidlError(r'Unexpected message name for MyProtocolBinding');
+ }
+ }
+}
diff --git a/tools/fidl/fidlgen_dart/goldens/experimental_maybe_from_type_alias_test.dart.golden b/tools/fidl/fidlgen_dart/goldens/experimental_maybe_from_type_alias_test.dart.golden
new file mode 100644
index 0000000..532a29c
--- /dev/null
+++ b/tools/fidl/fidlgen_dart/goldens/experimental_maybe_from_type_alias_test.dart.golden
@@ -0,0 +1,24 @@
+// WARNING: This file is machine generated by fidlgen_dart.
+// @dart = 2.12
+
+library fidl_fidl_test_experimentalmaybefromtypealias_test;
+
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
+import 'dart:typed_data';
+
+import 'package:fidl/fidl.dart' as $fidl;
+import 'package:meta/meta.dart';
+import 'package:zircon/zircon.dart' as $zircon;
+
+import './fidl_async.dart';
+
+// ignore_for_file: always_specify_types
+// ignore_for_file: constant_identifier_names
+// ignore_for_file: one_member_abstracts
+// ignore_for_file: public_member_api_docs
+// ignore_for_file: unused_import
+// ignore_for_file: library_prefixes
+// ignore_for_file: unused_shown_name
+
+class MyProtocol$TestBase extends MyProtocol {}
diff --git a/tools/fidl/fidlgen_dart/goldens/goldens.txt b/tools/fidl/fidlgen_dart/goldens/goldens.txt
index 3380c99..4a79922 100644
--- a/tools/fidl/fidlgen_dart/goldens/goldens.txt
+++ b/tools/fidl/fidlgen_dart/goldens/goldens.txt
@@ -22,6 +22,8 @@
error_test.dart.golden
escaping_async.dart.golden
escaping_test.dart.golden
+experimental_maybe_from_type_alias_async.dart.golden
+experimental_maybe_from_type_alias_test.dart.golden
foreign_type_in_response_used_through_compose_async.dart.golden
foreign_type_in_response_used_through_compose_test.dart.golden
handles_async.dart.golden
diff --git a/tools/fidl/fidlgen_go/goldens/experimental_maybe_from_type_alias.go.golden b/tools/fidl/fidlgen_go/goldens/experimental_maybe_from_type_alias.go.golden
new file mode 100644
index 0000000..54f5eb6
--- /dev/null
+++ b/tools/fidl/fidlgen_go/goldens/experimental_maybe_from_type_alias.go.golden
@@ -0,0 +1,79 @@
+// Code generated by fidlgen; DO NOT EDIT.
+
+package experimentalmaybefromtypealias
+
+import (
+ _bindings "syscall/zx/fidl"
+)
+
+type Testing struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"784" fidl_alignment_v1:"8"`
+ U1 uint64 `fidl_offset_v1:"0"`
+ U2 []uint64 `fidl_offset_v1:"8" fidl_bounds:"1"`
+ U3 [1]uint64 `fidl_offset_v1:"24"`
+ U4 [][]uint64 `fidl_offset_v1:"32" fidl_bounds:",1"`
+ U5 [][1]uint64 `fidl_offset_v1:"48" fidl_bounds:""`
+ U6 [4][]uint64 `fidl_offset_v1:"64" fidl_bounds:"1"`
+ U7 [4][1]uint64 `fidl_offset_v1:"128"`
+ V1 *[]uint64 `fidl_offset_v1:"160" fidl_bounds:""`
+ V2 []*[]uint64 `fidl_offset_v1:"176" fidl_bounds:""`
+ V3 [4]*[]uint64 `fidl_offset_v1:"192" fidl_bounds:""`
+ A1 [1]uint64 `fidl_offset_v1:"256"`
+ A2 [][1]uint64 `fidl_offset_v1:"264" fidl_bounds:""`
+ A3 [4][1]uint64 `fidl_offset_v1:"280"`
+ P1 MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"312" fidl_handle_subtype:"4" fidl_bounds:"0"`
+ P2 []MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"320" fidl_handle_subtype:"4" fidl_bounds:",0"`
+ P3 [4]MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"336" fidl_handle_subtype:"4" fidl_bounds:"0"`
+ R1 MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"352" fidl_handle_subtype:"4" fidl_bounds:"1"`
+ R2 []MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"360" fidl_handle_subtype:"4" fidl_bounds:",1"`
+ R3 [4]MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"376" fidl_handle_subtype:"4" fidl_bounds:"1"`
+ B1 []uint8 `fidl_offset_v1:"392" fidl_bounds:""`
+ B2 [][]uint8 `fidl_offset_v1:"408" fidl_bounds:""`
+ B3 [4][]uint8 `fidl_offset_v1:"424" fidl_bounds:""`
+ S1 string `fidl_offset_v1:"488" fidl_bounds:""`
+ S2 []string `fidl_offset_v1:"504" fidl_bounds:""`
+ S3 [4]string `fidl_offset_v1:"520" fidl_bounds:""`
+ Vv1 []uint64 `fidl_offset_v1:"584" fidl_bounds:"2"`
+ Vv2 [][]uint64 `fidl_offset_v1:"600" fidl_bounds:"3,2"`
+ Vv3 [3][]uint64 `fidl_offset_v1:"616" fidl_bounds:"2"`
+ Aa1 [2]uint64 `fidl_offset_v1:"664"`
+ Aa2 [][2]uint64 `fidl_offset_v1:"680" fidl_bounds:"3"`
+ Aa3 [3][2]uint64 `fidl_offset_v1:"696"`
+ Rr1 MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"744" fidl_handle_subtype:"4" fidl_bounds:"0"`
+ Rr2 []MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"752" fidl_handle_subtype:"4" fidl_bounds:"3,0"`
+ Rr3 [3]MyProtocolWithCtxInterfaceRequest `fidl_offset_v1:"768" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mTesting = _bindings.CreateLazyMarshaler(Testing{})
+
+func (msg *Testing) Marshaler() _bindings.Marshaler {
+ return _mTesting
+}
+
+const ()
+
+type MyProtocolWithCtxInterface _bindings.ChannelProxy
+
+type MyProtocolWithCtx interface {
+}
+
+type MyProtocolWithCtxTransitionalBase struct{}
+
+type MyProtocolWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewMyProtocolWithCtxInterfaceRequest() (MyProtocolWithCtxInterfaceRequest, *MyProtocolWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return MyProtocolWithCtxInterfaceRequest(req), (*MyProtocolWithCtxInterface)(cli), err
+}
+
+type MyProtocolWithCtxStub struct {
+ Impl MyProtocolWithCtx
+}
+
+func (s_ *MyProtocolWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type MyProtocolEventProxy _bindings.ChannelProxy
diff --git a/tools/fidl/fidlgen_go/goldens/goldens.txt b/tools/fidl/fidlgen_go/goldens/goldens.txt
index d19658e..385c0ec 100644
--- a/tools/fidl/fidlgen_go/goldens/goldens.txt
+++ b/tools/fidl/fidlgen_go/goldens/goldens.txt
@@ -10,6 +10,7 @@
enum.go.golden
error.go.golden
escaping.go.golden
+experimental_maybe_from_type_alias.go.golden
foreign_type_in_response_used_through_compose.go.golden
handles.go.golden
handles_in_types.go.golden
diff --git a/tools/fidl/fidlgen_rust/goldens/experimental_maybe_from_type_alias.rs.golden b/tools/fidl/fidlgen_rust/goldens/experimental_maybe_from_type_alias.rs.golden
new file mode 100644
index 0000000..ae67575
--- /dev/null
+++ b/tools/fidl/fidlgen_rust/goldens/experimental_maybe_from_type_alias.rs.golden
@@ -0,0 +1,539 @@
+// WARNING: This file is machine generated by fidlgen.
+
+#![allow(
+ unused_parens, // one-element-tuple-case is not a tuple
+ unused_mut, // not all args require mutation, but many do
+ nonstandard_style, // auto-caps does its best, but is not always successful
+)]
+#![recursion_limit = "512"]
+
+#[cfg(target_os = "fuchsia")]
+#[allow(unused_imports)]
+use fuchsia_zircon as zx;
+
+#[allow(unused_imports)]
+use {
+ bitflags::bitflags,
+ fidl::{
+ client::{decode_transaction_body_fut, QueryResponseFut},
+ encoding::{Decodable as _, Encodable as _},
+ fidl_empty_struct, fidl_flexible_bits, fidl_flexible_enum, fidl_strict_bits,
+ fidl_strict_enum, fidl_struct, fidl_struct_copy, fidl_table, fidl_xunion,
+ wrap_handle_metadata,
+ },
+ fuchsia_zircon_status as zx_status,
+ futures::future::{self, MaybeDone, TryFutureExt},
+};
+
+const _FIDL_TRACE_BINDINGS_RUST: u32 = 6;
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+pub struct Testing {
+ pub u1: u64,
+ pub u2: Vec<u64>,
+ pub u3: [u64; 1],
+ pub u4: Vec<Vec<u64>>,
+ pub u5: Vec<[u64; 1]>,
+ pub u6: [Vec<u64>; 4],
+ pub u7: [[u64; 1]; 4],
+ pub v1: Option<Vec<u64>>,
+ pub v2: Vec<Option<Vec<u64>>>,
+ pub v3: [Option<Vec<u64>>; 4],
+ pub a1: [u64; 1],
+ pub a2: Vec<[u64; 1]>,
+ pub a3: [[u64; 1]; 4],
+ pub p1: fidl::endpoints::ServerEnd<MyProtocolMarker>,
+ pub p2: Vec<fidl::endpoints::ServerEnd<MyProtocolMarker>>,
+ pub p3: [fidl::endpoints::ServerEnd<MyProtocolMarker>; 4],
+ pub r1: Option<fidl::endpoints::ServerEnd<MyProtocolMarker>>,
+ pub r2: Vec<Option<fidl::endpoints::ServerEnd<MyProtocolMarker>>>,
+ pub r3: [Option<fidl::endpoints::ServerEnd<MyProtocolMarker>>; 4],
+ pub b1: Vec<u8>,
+ pub b2: Vec<Vec<u8>>,
+ pub b3: [Vec<u8>; 4],
+ pub s1: String,
+ pub s2: Vec<String>,
+ pub s3: [String; 4],
+ pub vv1: Vec<u64>,
+ pub vv2: Vec<Vec<u64>>,
+ pub vv3: [Vec<u64>; 3],
+ pub aa1: [u64; 2],
+ pub aa2: Vec<[u64; 2]>,
+ pub aa3: [[u64; 2]; 3],
+ pub rr1: fidl::endpoints::ServerEnd<MyProtocolMarker>,
+ pub rr2: Vec<fidl::endpoints::ServerEnd<MyProtocolMarker>>,
+ pub rr3: [fidl::endpoints::ServerEnd<MyProtocolMarker>; 3],
+}
+
+fidl_struct! {
+ name: Testing,
+ members: [
+ u1 {
+ ty: u64,
+ offset_v1: 0,
+ },
+ u2 {
+ ty: Vec<u64>,
+ offset_v1: 8,
+ },
+ u3 {
+ ty: [u64; 1],
+ offset_v1: 24,
+ },
+ u4 {
+ ty: Vec<Vec<u64>>,
+ offset_v1: 32,
+ },
+ u5 {
+ ty: Vec<[u64; 1]>,
+ offset_v1: 48,
+ },
+ u6 {
+ ty: [Vec<u64>; 4],
+ offset_v1: 64,
+ },
+ u7 {
+ ty: [[u64; 1]; 4],
+ offset_v1: 128,
+ },
+ v1 {
+ ty: Option<Vec<u64>>,
+ offset_v1: 160,
+ },
+ v2 {
+ ty: Vec<Option<Vec<u64>>>,
+ offset_v1: 176,
+ },
+ v3 {
+ ty: [Option<Vec<u64>>; 4],
+ offset_v1: 192,
+ },
+ a1 {
+ ty: [u64; 1],
+ offset_v1: 256,
+ },
+ a2 {
+ ty: Vec<[u64; 1]>,
+ offset_v1: 264,
+ },
+ a3 {
+ ty: [[u64; 1]; 4],
+ offset_v1: 280,
+ },
+ p1 {
+ ty: fidl::endpoints::ServerEnd<MyProtocolMarker>,
+ offset_v1: 312,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ p2 {
+ ty: Vec<fidl::endpoints::ServerEnd<MyProtocolMarker>>,
+ offset_v1: 320,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ p3 {
+ ty: [fidl::endpoints::ServerEnd<MyProtocolMarker>; 4],
+ offset_v1: 336,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ r1 {
+ ty: Option<fidl::endpoints::ServerEnd<MyProtocolMarker>>,
+ offset_v1: 352,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ r2 {
+ ty: Vec<Option<fidl::endpoints::ServerEnd<MyProtocolMarker>>>,
+ offset_v1: 360,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ r3 {
+ ty: [Option<fidl::endpoints::ServerEnd<MyProtocolMarker>>; 4],
+ offset_v1: 376,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ b1 {
+ ty: Vec<u8>,
+ offset_v1: 392,
+ },
+ b2 {
+ ty: Vec<Vec<u8>>,
+ offset_v1: 408,
+ },
+ b3 {
+ ty: [Vec<u8>; 4],
+ offset_v1: 424,
+ },
+ s1 {
+ ty: String,
+ offset_v1: 488,
+ },
+ s2 {
+ ty: Vec<String>,
+ offset_v1: 504,
+ },
+ s3 {
+ ty: [String; 4],
+ offset_v1: 520,
+ },
+ vv1 {
+ ty: Vec<u64>,
+ offset_v1: 584,
+ },
+ vv2 {
+ ty: Vec<Vec<u64>>,
+ offset_v1: 600,
+ },
+ vv3 {
+ ty: [Vec<u64>; 3],
+ offset_v1: 616,
+ },
+ aa1 {
+ ty: [u64; 2],
+ offset_v1: 664,
+ },
+ aa2 {
+ ty: Vec<[u64; 2]>,
+ offset_v1: 680,
+ },
+ aa3 {
+ ty: [[u64; 2]; 3],
+ offset_v1: 696,
+ },
+ rr1 {
+ ty: fidl::endpoints::ServerEnd<MyProtocolMarker>,
+ offset_v1: 744,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ rr2 {
+ ty: Vec<fidl::endpoints::ServerEnd<MyProtocolMarker>>,
+ offset_v1: 752,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ rr3 {
+ ty: [fidl::endpoints::ServerEnd<MyProtocolMarker>; 3],
+ offset_v1: 768,
+ handle_metadata: {
+ handle_subtype: fidl::ObjectType::CHANNEL,
+ handle_rights: fidl::Rights::CHANNEL_DEFAULT,
+ },
+ },
+ ],
+ padding: [
+ {
+ ty: u64,
+ offset: 312,
+ mask: 0xffffffff00000000u64,
+ },
+ {
+ ty: u64,
+ offset: 352,
+ mask: 0xffffffff00000000u64,
+ },
+ {
+ ty: u64,
+ offset: 744,
+ mask: 0xffffffff00000000u64,
+ },
+ {
+ ty: u64,
+ offset: 776,
+ mask: 0xffffffff00000000u64,
+ },],
+ size_v1: 784,
+ align_v1: 8,
+}
+
+#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
+pub struct MyProtocolMarker;
+
+impl fidl::endpoints::ServiceMarker for MyProtocolMarker {
+ type Proxy = MyProtocolProxy;
+ type RequestStream = MyProtocolRequestStream;
+ const DEBUG_NAME: &'static str = "(anonymous) MyProtocol";
+}
+
+pub trait MyProtocolProxyInterface: Send + Sync {}
+
+#[derive(Debug)]
+#[cfg(target_os = "fuchsia")]
+pub struct MyProtocolSynchronousProxy {
+ client: fidl::client::sync::Client,
+}
+
+#[cfg(target_os = "fuchsia")]
+impl MyProtocolSynchronousProxy {
+ pub fn new(channel: fidl::Channel) -> Self {
+ let service_name = <MyProtocolMarker as fidl::endpoints::ServiceMarker>::DEBUG_NAME;
+ Self { client: fidl::client::sync::Client::new(channel, service_name) }
+ }
+
+ pub fn into_channel(self) -> fidl::Channel {
+ self.client.into_channel()
+ }
+}
+
+#[derive(Debug, Clone)]
+pub struct MyProtocolProxy {
+ client: fidl::client::Client,
+}
+
+impl fidl::endpoints::Proxy for MyProtocolProxy {
+ type Service = MyProtocolMarker;
+
+ fn from_channel(inner: fidl::AsyncChannel) -> Self {
+ Self::new(inner)
+ }
+
+ fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
+ self.client.into_channel().map_err(|client| Self { client })
+ }
+
+ fn as_channel(&self) -> &::fidl::AsyncChannel {
+ self.client.as_channel()
+ }
+}
+
+impl MyProtocolProxy {
+ /// Create a new Proxy for MyProtocol
+ pub fn new(channel: fidl::AsyncChannel) -> Self {
+ let service_name = <MyProtocolMarker as fidl::endpoints::ServiceMarker>::DEBUG_NAME;
+ Self { client: fidl::client::Client::new(channel, service_name) }
+ }
+
+ /// Get a Stream of events from the remote end of the MyProtocol protocol
+ ///
+ /// # Panics
+ ///
+ /// Panics if the event stream was already taken.
+ pub fn take_event_stream(&self) -> MyProtocolEventStream {
+ MyProtocolEventStream { event_receiver: self.client.take_event_receiver() }
+ }
+}
+
+impl MyProtocolProxyInterface for MyProtocolProxy {}
+
+pub struct MyProtocolEventStream {
+ event_receiver: fidl::client::EventReceiver,
+}
+
+impl std::marker::Unpin for MyProtocolEventStream {}
+
+impl futures::stream::FusedStream for MyProtocolEventStream {
+ fn is_terminated(&self) -> bool {
+ self.event_receiver.is_terminated()
+ }
+}
+
+impl futures::Stream for MyProtocolEventStream {
+ type Item = Result<MyProtocolEvent, fidl::Error>;
+
+ fn poll_next(
+ mut self: std::pin::Pin<&mut Self>,
+ cx: &mut std::task::Context<'_>,
+ ) -> std::task::Poll<Option<Self::Item>> {
+ let mut buf = match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
+ &mut self.event_receiver,
+ cx
+ )?) {
+ Some(buf) => buf,
+ None => return std::task::Poll::Ready(None),
+ };
+ let (bytes, _handles) = buf.split_mut();
+ let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
+
+ std::task::Poll::Ready(Some(match tx_header.ordinal() {
+ _ => Err(fidl::Error::UnknownOrdinal {
+ ordinal: tx_header.ordinal(),
+ service_name: <MyProtocolMarker as fidl::endpoints::ServiceMarker>::DEBUG_NAME,
+ }),
+ }))
+ }
+}
+
+#[derive(Debug)]
+pub enum MyProtocolEvent {}
+
+impl MyProtocolEvent {}
+
+/// A type which can be used to send responses and events into a borrowed channel.
+///
+/// Note: this should only be used when the channel must be temporarily
+/// borrowed. For a typical sending of events, use the send_ methods
+/// on the ControlHandle types, which can be acquired through a
+/// RequestStream or Responder type.
+#[deprecated(note = "Use MyProtocolRequestStream / Responder instead")]
+pub struct MyProtocolServerSender<'a> {
+ // Some protocols don't define events which would render this channel unused.
+ #[allow(dead_code)]
+ channel: &'a fidl::Channel,
+}
+
+#[allow(deprecated)]
+impl<'a> MyProtocolServerSender<'a> {
+ pub fn new(channel: &'a fidl::Channel) -> Self {
+ Self { channel }
+ }
+}
+
+/// A Stream of incoming requests for MyProtocol
+pub struct MyProtocolRequestStream {
+ inner: std::sync::Arc<fidl::ServeInner>,
+ is_terminated: bool,
+}
+
+impl std::marker::Unpin for MyProtocolRequestStream {}
+
+impl futures::stream::FusedStream for MyProtocolRequestStream {
+ fn is_terminated(&self) -> bool {
+ self.is_terminated
+ }
+}
+
+impl fidl::endpoints::RequestStream for MyProtocolRequestStream {
+ type Service = MyProtocolMarker;
+
+ /// Consume a channel to make a MyProtocolRequestStream
+ fn from_channel(channel: fidl::AsyncChannel) -> Self {
+ Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
+ }
+
+ /// ControlHandle for the remote connection
+ type ControlHandle = MyProtocolControlHandle;
+
+ /// ControlHandle for the remote connection
+ fn control_handle(&self) -> Self::ControlHandle {
+ MyProtocolControlHandle { inner: self.inner.clone() }
+ }
+
+ fn into_inner(self) -> (::std::sync::Arc<fidl::ServeInner>, bool) {
+ (self.inner, self.is_terminated)
+ }
+
+ fn from_inner(inner: std::sync::Arc<fidl::ServeInner>, is_terminated: bool) -> Self {
+ Self { inner, is_terminated }
+ }
+}
+
+impl futures::Stream for MyProtocolRequestStream {
+ type Item = Result<MyProtocolRequest, fidl::Error>;
+
+ fn poll_next(
+ mut self: std::pin::Pin<&mut Self>,
+ cx: &mut std::task::Context<'_>,
+ ) -> std::task::Poll<Option<Self::Item>> {
+ let this = &mut *self;
+ if this.inner.poll_shutdown(cx) {
+ this.is_terminated = true;
+ return std::task::Poll::Ready(None);
+ }
+ if this.is_terminated {
+ panic!("polled MyProtocolRequestStream after completion");
+ }
+ fidl::encoding::with_tls_decode_buf(|bytes, handles| {
+ match this.inner.channel().read_etc(cx, bytes, handles) {
+ std::task::Poll::Ready(Ok(())) => {}
+ std::task::Poll::Pending => return std::task::Poll::Pending,
+ std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
+ this.is_terminated = true;
+ return std::task::Poll::Ready(None);
+ }
+ std::task::Poll::Ready(Err(e)) => {
+ return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(e))))
+ }
+ }
+
+ // A message has been received from the channel
+ let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
+ if !header.is_compatible() {
+ return std::task::Poll::Ready(Some(Err(fidl::Error::IncompatibleMagicNumber(
+ header.magic_number(),
+ ))));
+ }
+
+ std::task::Poll::Ready(Some(match header.ordinal() {
+ _ => Err(fidl::Error::UnknownOrdinal {
+ ordinal: header.ordinal(),
+ service_name: <MyProtocolMarker as fidl::endpoints::ServiceMarker>::DEBUG_NAME,
+ }),
+ }))
+ })
+ }
+}
+
+/// Represents a single request.
+/// RequestMessages should only be used for manual deserialization when higher level
+/// structs such as RequestStream cannot be used. One usually would only encounter
+/// such scenarios when working with legacy FIDL code (prior to FIDL generated client/server bindings).
+#[derive(Debug)]
+#[deprecated(note = "Use MyProtocolRequest instead")]
+pub enum MyProtocolRequestMessage {}
+
+#[allow(deprecated)]
+impl MyProtocolRequestMessage {
+ pub fn decode(
+ bytes: &[u8],
+ _handles: &mut [fidl::HandleInfo],
+ ) -> Result<MyProtocolRequestMessage, fidl::Error> {
+ let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
+
+ match header.ordinal() {
+ _ => Err(fidl::Error::UnknownOrdinal {
+ ordinal: header.ordinal(),
+ service_name: <MyProtocolMarker as fidl::endpoints::ServiceMarker>::DEBUG_NAME,
+ }),
+ }
+ }
+}
+#[derive(Debug)]
+pub enum MyProtocolRequest {}
+
+impl MyProtocolRequest {
+ /// Name of the method defined in FIDL
+ pub fn method_name(&self) -> &'static str {
+ match *self {}
+ }
+}
+
+pub struct MyProtocolEncoder;
+
+impl MyProtocolEncoder {}
+
+#[derive(Debug, Clone)]
+pub struct MyProtocolControlHandle {
+ inner: std::sync::Arc<fidl::ServeInner>,
+}
+
+impl MyProtocolControlHandle {
+ /// Set the server to shutdown. The underlying channel is only closed the
+ /// next time the stream is polled.
+ pub fn shutdown(&self) {
+ self.inner.shutdown()
+ }
+
+ pub fn shutdown_with_epitaph(&self, status: zx_status::Status) {
+ self.inner.shutdown_with_epitaph(status)
+ }
+}
diff --git a/tools/fidl/fidlgen_rust/goldens/goldens.txt b/tools/fidl/fidlgen_rust/goldens/goldens.txt
index 258118d..cd3e3ca 100644
--- a/tools/fidl/fidlgen_rust/goldens/goldens.txt
+++ b/tools/fidl/fidlgen_rust/goldens/goldens.txt
@@ -10,6 +10,7 @@
enum.rs.golden
error.rs.golden
escaping.rs.golden
+experimental_maybe_from_type_alias.rs.golden
foreign_type_in_response_used_through_compose.rs.golden
handles.rs.golden
handles_in_types.rs.golden
diff --git a/tools/fidl/fidlgen_syzkaller/goldens/experimental_maybe_from_type_alias.syz.txt.golden b/tools/fidl/fidlgen_syzkaller/goldens/experimental_maybe_from_type_alias.syz.txt.golden
new file mode 100644
index 0000000..ce6a761a
--- /dev/null
+++ b/tools/fidl/fidlgen_syzkaller/goldens/experimental_maybe_from_type_alias.syz.txt.golden
@@ -0,0 +1,85 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
+#
+# WARNING: This file is machine generated by fidlgen.
+
+include <fidl/test/experimentalmaybefromtypealias/c/fidl.h>
+fidl_test_experimentalmaybefromtypealias_TestingInLine {
+ u1 int64
+ u2InLine fidl_vector
+ u3InLine array[int64, 1]
+ u4InLine fidl_vector
+ u5InLine fidl_vector
+ u6InLine array[fidl_vector, 4]
+ u7InLine array[array[int64, 1], 4]
+ v1InLine fidl_vector
+ v2InLine fidl_vector
+ v3InLine array[fidl_vector, 4]
+ a1InLine array[int64, 1]
+ a2InLine fidl_vector
+ a3InLine array[array[int64, 1], 4]
+ p1 flags[fidl_handle_presence, int32]
+ p2InLine fidl_vector
+ p3InLine array[flags[fidl_handle_presence, int32], 4]
+ r1 flags[fidl_handle_presence, int32]
+ r2InLine fidl_vector
+ r3InLine array[flags[fidl_handle_presence, int32], 4]
+ b1InLine fidl_vector
+ b2InLine fidl_vector
+ b3InLine array[fidl_vector, 4]
+ s1InLine fidl_string
+ s2InLine fidl_vector
+ s3InLine array[fidl_string, 4]
+ vv1InLine fidl_vector
+ vv2InLine fidl_vector
+ vv3InLine array[fidl_vector, 3]
+ aa1InLine array[int64, 2]
+ aa2InLine fidl_vector
+ aa3InLine array[array[int64, 2], 3]
+ rr1 flags[fidl_handle_presence, int32]
+ rr2InLine fidl_vector
+ rr3InLine array[flags[fidl_handle_presence, int32], 3]
+} [packed]
+fidl_test_experimentalmaybefromtypealias_TestingOutOfLine {
+ u2OutOfLine array[int64]
+ u4OutOfLine parallel_array[fidl_vector, array[int64]]
+ u5OutOfLine array[array[int64, 1]]
+ u6OutOfLine array[array[int64], 4]
+ v1OutOfLine array[int64]
+ v2OutOfLine parallel_array[fidl_vector, array[int64]]
+ v3OutOfLine array[array[int64], 4]
+ a2OutOfLine array[array[int64, 1]]
+ p2OutOfLine array[flags[fidl_handle_presence, int32]]
+ r2OutOfLine array[flags[fidl_handle_presence, int32]]
+ b1OutOfLine array[int8]
+ b2OutOfLine parallel_array[fidl_vector, array[int8]]
+ b3OutOfLine array[array[int8], 4]
+ s1OutOfLine fidl_aligned[stringnoz]
+ s2OutOfLine parallel_array[fidl_string, fidl_aligned[stringnoz]]
+ s3OutOfLine array[fidl_aligned[stringnoz], 4]
+ vv1OutOfLine array[int64]
+ vv2OutOfLine parallel_array[fidl_vector, array[int64]]
+ vv3OutOfLine array[array[int64], 3]
+ aa2OutOfLine array[array[int64, 2]]
+ rr2OutOfLine array[flags[fidl_handle_presence, int32]]
+} [packed]
+fidl_test_experimentalmaybefromtypealias_TestingHandles {
+ p1 zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server
+ p2 array[zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server]
+ p3Handles array[zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server, 4]
+ r1 zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server
+ r2 array[zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server]
+ r3Handles array[zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server, 4]
+ rr1 zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server
+ rr2 array[zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server]
+ rr3Handles array[zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server, 3]
+} [packed]
+
+
+
+resource zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_client[zx_chan]
+resource zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server[zx_chan]
+
+zx_channel_create$fidl_test_experimentalmaybefromtypealias_MyProtocol(options const[0], out0 ptr[out, zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_client], out1 ptr[out, zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server])
+fdio_service_connect$fidl_test_experimentalmaybefromtypealias_MyProtocol(path ptr[in, string["/svc/"]], handle zx_chan_fidl_test_experimentalmaybefromtypealias_MyProtocol_server)
+
diff --git a/tools/fidl/fidlgen_syzkaller/goldens/goldens.txt b/tools/fidl/fidlgen_syzkaller/goldens/goldens.txt
index cd01390..85d07aa 100644
--- a/tools/fidl/fidlgen_syzkaller/goldens/goldens.txt
+++ b/tools/fidl/fidlgen_syzkaller/goldens/goldens.txt
@@ -11,6 +11,7 @@
enum.syz.txt.golden
error.syz.txt.golden
escaping.syz.txt.golden
+experimental_maybe_from_type_alias.syz.txt.golden
foreign_type_in_response_used_through_compose.syz.txt.golden
handles.syz.txt.golden
handles_in_types.syz.txt.golden