xref: /qemu/tests/qapi-schema/qapi-schema-test.out (revision fa32eb909524486834c85f06ebaf5b9aa3f4b11f)
1e2bbc4eaSJohn Snowmodule ./builtin
28a84767cSMarkus Armbrusterobject q_empty
31e381b65SMarc-André Lureauenum QType
48a84767cSMarkus Armbruster    prefix QTYPE
51e381b65SMarc-André Lureau    member none
61e381b65SMarc-André Lureau    member qnull
71e381b65SMarc-André Lureau    member qnum
81e381b65SMarc-André Lureau    member qstring
91e381b65SMarc-André Lureau    member qdict
101e381b65SMarc-André Lureau    member qlist
111e381b65SMarc-André Lureau    member qbool
12cf40a0a5SMarkus Armbrustermodule qapi-schema-test.json
138a84767cSMarkus Armbrusterobject TestStruct
148a84767cSMarkus Armbruster    member integer: int optional=False
158a84767cSMarkus Armbruster    member boolean: bool optional=False
168a84767cSMarkus Armbruster    member string: str optional=False
178a84767cSMarkus Armbrusterobject NestedEnumsOne
188a84767cSMarkus Armbruster    member enum1: EnumOne optional=False
198a84767cSMarkus Armbruster    member enum2: EnumOne optional=True
208a84767cSMarkus Armbruster    member enum3: EnumOne optional=False
218a84767cSMarkus Armbruster    member enum4: EnumOne optional=True
221e381b65SMarc-André Lureauenum MyEnum
238a84767cSMarkus Armbrusterobject Empty1
248a84767cSMarkus Armbrusterobject Empty2
258a84767cSMarkus Armbruster    base Empty1
260ced9531SMarkus Armbrusterobject q_obj_Union-base
270ced9531SMarkus Armbruster    member type: EnumOne optional=False
280ced9531SMarkus Armbrusterobject Union
290ced9531SMarkus Armbruster    base q_obj_Union-base
300ced9531SMarkus Armbruster    tag type
310ced9531SMarkus Armbruster    case value1: q_empty
320ced9531SMarkus Armbruster    case value2: q_empty
330ced9531SMarkus Armbruster    case value3: q_empty
340ced9531SMarkus Armbruster    case value4: q_empty
3505ebf841SMarkus Armbrustercommand user-def-cmd0 Empty2 -> Empty2
367b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
371e381b65SMarc-André Lureauenum QEnumTwo
388a84767cSMarkus Armbruster    prefix QENUM_TWO
391e381b65SMarc-André Lureau    member value1
401e381b65SMarc-André Lureau    member value2
418a84767cSMarkus Armbrusterobject UserDefOne
428a84767cSMarkus Armbruster    base UserDefZero
438a84767cSMarkus Armbruster    member string: str optional=False
448a84767cSMarkus Armbruster    member enum1: EnumOne optional=True
451e381b65SMarc-André Lureauenum EnumOne
461e381b65SMarc-André Lureau    member value1
471e381b65SMarc-André Lureau    member value2
481e381b65SMarc-André Lureau    member value3
491e381b65SMarc-André Lureau    member value4
508a84767cSMarkus Armbrusterobject UserDefZero
518a84767cSMarkus Armbruster    member integer: int optional=False
528a84767cSMarkus Armbrusterobject UserDefTwoDictDict
538a84767cSMarkus Armbruster    member userdef: UserDefOne optional=False
548a84767cSMarkus Armbruster    member string: str optional=False
558a84767cSMarkus Armbrusterobject UserDefTwoDict
568a84767cSMarkus Armbruster    member string1: str optional=False
578a84767cSMarkus Armbruster    member dict2: UserDefTwoDictDict optional=False
588a84767cSMarkus Armbruster    member dict3: UserDefTwoDictDict optional=True
598a84767cSMarkus Armbrusterobject UserDefTwo
608a84767cSMarkus Armbruster    member string0: str optional=False
618a84767cSMarkus Armbruster    member dict1: UserDefTwoDict optional=False
62967c8851SMarc-André Lureauobject UserDefThree
63967c8851SMarc-André Lureau    member string0: str optional=False
64ca0ac758SMarkus Armbrusterarray UserDefOneList UserDefOne
65ca0ac758SMarkus Armbrusterarray UserDefTwoList UserDefTwo
66ca0ac758SMarkus Armbrusterarray TestStructList TestStruct
678a84767cSMarkus Armbrusterobject ForceArrays
688a84767cSMarkus Armbruster    member unused1: UserDefOneList optional=False
698a84767cSMarkus Armbruster    member unused2: UserDefTwoList optional=False
708a84767cSMarkus Armbruster    member unused3: TestStructList optional=False
718a84767cSMarkus Armbrusterobject UserDefA
728a84767cSMarkus Armbruster    member boolean: bool optional=False
738a84767cSMarkus Armbruster    member a_b: int optional=True
748a84767cSMarkus Armbrusterobject UserDefB
758a84767cSMarkus Armbruster    member intb: int optional=False
768a84767cSMarkus Armbruster    member a-b: bool optional=True
778a84767cSMarkus Armbrusterobject UserDefFlatUnion
788a84767cSMarkus Armbruster    base UserDefUnionBase
798a84767cSMarkus Armbruster    tag enum1
808a84767cSMarkus Armbruster    case value1: UserDefA
818a84767cSMarkus Armbruster    case value2: UserDefB
828a84767cSMarkus Armbruster    case value3: UserDefB
83800877bbSAnton Nefedov    case value4: q_empty
848a84767cSMarkus Armbrusterobject UserDefUnionBase
858a84767cSMarkus Armbruster    base UserDefZero
868a84767cSMarkus Armbruster    member string: str optional=False
878a84767cSMarkus Armbruster    member enum1: EnumOne optional=False
888a84767cSMarkus Armbrusterobject q_obj_UserDefFlatUnion2-base
898a84767cSMarkus Armbruster    member integer: int optional=True
908a84767cSMarkus Armbruster    member string: str optional=False
918a84767cSMarkus Armbruster    member enum1: QEnumTwo optional=False
928a84767cSMarkus Armbrusterobject UserDefFlatUnion2
938a84767cSMarkus Armbruster    base q_obj_UserDefFlatUnion2-base
948a84767cSMarkus Armbruster    tag enum1
958a84767cSMarkus Armbruster    case value1: UserDefC
968a84767cSMarkus Armbruster    case value2: UserDefB
978a84767cSMarkus Armbrusterobject WrapAlternate
988a84767cSMarkus Armbruster    member alt: UserDefAlternate optional=False
998a84767cSMarkus Armbrusteralternate UserDefAlternate
1008a84767cSMarkus Armbruster    tag type
1018a84767cSMarkus Armbruster    case udfu: UserDefFlatUnion
1028a84767cSMarkus Armbruster    case e: EnumOne
1038a84767cSMarkus Armbruster    case i: int
1048a84767cSMarkus Armbruster    case n: null
1058a84767cSMarkus Armbrusterobject UserDefC
1068a84767cSMarkus Armbruster    member string1: str optional=False
1078a84767cSMarkus Armbruster    member string2: str optional=False
1088168ca8eSMarkus Armbrusteralternate AltEnumBool
1098168ca8eSMarkus Armbruster    tag type
1108168ca8eSMarkus Armbruster    case e: EnumOne
1118168ca8eSMarkus Armbruster    case b: bool
1128168ca8eSMarkus Armbrusteralternate AltEnumNum
1138168ca8eSMarkus Armbruster    tag type
1148168ca8eSMarkus Armbruster    case e: EnumOne
1158168ca8eSMarkus Armbruster    case n: number
1168168ca8eSMarkus Armbrusteralternate AltNumEnum
1178168ca8eSMarkus Armbruster    tag type
1188168ca8eSMarkus Armbruster    case n: number
1198168ca8eSMarkus Armbruster    case e: EnumOne
1208a84767cSMarkus Armbrusteralternate AltEnumInt
1218a84767cSMarkus Armbruster    tag type
1228a84767cSMarkus Armbruster    case e: EnumOne
1238a84767cSMarkus Armbruster    case i: int
12479db9948SPaolo Bonzinialternate AltListInt
12579db9948SPaolo Bonzini    tag type
12679db9948SPaolo Bonzini    case l: intList
12779db9948SPaolo Bonzini    case i: int
128c0644771SMarkus Armbrusteralternate AltStrObj
129da9cb193SEric Blake    tag type
1309c51b441SEric Blake    case s: str
131c0644771SMarkus Armbruster    case o: TestStruct
132dffd8ff9SMarkus Armbrusterobject ArrayStruct
133dffd8ff9SMarkus Armbruster    member integer: intList optional=False
134dffd8ff9SMarkus Armbruster    member s8: int8List optional=False
135dffd8ff9SMarkus Armbruster    member s16: int16List optional=False
136dffd8ff9SMarkus Armbruster    member s32: int32List optional=False
137dffd8ff9SMarkus Armbruster    member s64: int64List optional=False
138dffd8ff9SMarkus Armbruster    member u8: uint8List optional=False
139dffd8ff9SMarkus Armbruster    member u16: uint16List optional=False
140dffd8ff9SMarkus Armbruster    member u32: uint32List optional=False
141dffd8ff9SMarkus Armbruster    member u64: uint64List optional=False
142dffd8ff9SMarkus Armbruster    member number: numberList optional=False
143dffd8ff9SMarkus Armbruster    member boolean: boolList optional=False
144dffd8ff9SMarkus Armbruster    member string: strList optional=False
145dffd8ff9SMarkus Armbruster    member sz: sizeList optional=True
146dffd8ff9SMarkus Armbruster    member any: anyList optional=True
147dffd8ff9SMarkus Armbruster    member user: StatusList optional=True
148709395f8SMarkus Armbrusterinclude include/sub-module.json
14905ebf841SMarkus Armbrustercommand user-def-cmd None -> None
1507b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
15105ebf841SMarkus Armbrusterobject q_obj_user-def-cmd1-arg
1528a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
15305ebf841SMarkus Armbrustercommand user-def-cmd1 q_obj_user-def-cmd1-arg -> None
1547b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
15505ebf841SMarkus Armbrusterobject q_obj_user-def-cmd2-arg
1568a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
1578a84767cSMarkus Armbruster    member ud1b: UserDefOne optional=True
15805ebf841SMarkus Armbrustercommand user-def-cmd2 q_obj_user-def-cmd2-arg -> UserDefTwo
1597b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
160ae6bf766SMarc-André Lureaucommand cmd-success-response None -> None
161ae6bf766SMarc-André Lureau    gen=True success_response=False boxed=False oob=False preconfig=False
16204f22362SKevin Wolfcommand coroutine-cmd None -> None
16304f22362SKevin Wolf    gen=True success_response=True boxed=False oob=False preconfig=False coroutine=True
1648a84767cSMarkus Armbrusterobject q_obj_guest-get-time-arg
1658a84767cSMarkus Armbruster    member a: int optional=False
1668a84767cSMarkus Armbruster    member b: int optional=True
1678a84767cSMarkus Armbrustercommand guest-get-time q_obj_guest-get-time-arg -> int
1687b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
1698a84767cSMarkus Armbrusterobject q_obj_guest-sync-arg
1708a84767cSMarkus Armbruster    member arg: any optional=False
1718a84767cSMarkus Armbrustercommand guest-sync q_obj_guest-sync-arg -> any
1727b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
1738a84767cSMarkus Armbrustercommand boxed-struct UserDefZero -> None
1747b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
1751e65e16cSMarkus Armbrustercommand boxed-union UserDefFlatUnion -> None
1767b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
177675b214bSMarkus Armbrustercommand boxed-empty Empty1 -> None
178675b214bSMarkus Armbruster    gen=True success_response=True boxed=True oob=False preconfig=False
1797b13f2c2SIgor Mammedovcommand test-flags-command None -> None
1807b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=True preconfig=True
181156402e5SMarkus Armbrusterobject UserDefOptions
182156402e5SMarkus Armbruster    member i64: intList optional=True
183156402e5SMarkus Armbruster    member u64: uint64List optional=True
184156402e5SMarkus Armbruster    member u16: uint16List optional=True
185156402e5SMarkus Armbruster    member i64x: int optional=True
186156402e5SMarkus Armbruster    member u64x: uint64 optional=True
1878a84767cSMarkus Armbrusterobject EventStructOne
1888a84767cSMarkus Armbruster    member struct1: UserDefOne optional=False
189156402e5SMarkus Armbruster    member string: str optional=False
1908a84767cSMarkus Armbruster    member enum2: EnumOne optional=True
1918a84767cSMarkus Armbrusterevent EVENT_A None
19248825ca4SEric Blake    boxed=False
1938a84767cSMarkus Armbrusterevent EVENT_B None
1948a84767cSMarkus Armbruster    boxed=False
1957599697cSEric Blakeobject q_obj_EVENT_C-arg
1967599697cSEric Blake    member a: int optional=True
1977599697cSEric Blake    member b: UserDefOne optional=True
1987599697cSEric Blake    member c: str optional=False
1998a84767cSMarkus Armbrusterevent EVENT_C q_obj_EVENT_C-arg
2008a84767cSMarkus Armbruster    boxed=False
2017599697cSEric Blakeobject q_obj_EVENT_D-arg
2027599697cSEric Blake    member a: EventStructOne optional=False
2037599697cSEric Blake    member b: str optional=False
2047599697cSEric Blake    member c: str optional=True
2057599697cSEric Blake    member enum3: EnumOne optional=True
2068a84767cSMarkus Armbrusterevent EVENT_D q_obj_EVENT_D-arg
2078a84767cSMarkus Armbruster    boxed=False
2088a84767cSMarkus Armbrusterevent EVENT_E UserDefZero
2098a84767cSMarkus Armbruster    boxed=True
210b22e8658SMarkus Armbrusterevent EVENT_F UserDefFlatUnion
2118a84767cSMarkus Armbruster    boxed=True
212675b214bSMarkus Armbrusterevent EVENT_G Empty1
213675b214bSMarkus Armbruster    boxed=True
2141e381b65SMarc-André Lureauenum __org.qemu_x-Enum
2151e381b65SMarc-André Lureau    member __org.qemu_x-value
2168a84767cSMarkus Armbrusterobject __org.qemu_x-Base
2178a84767cSMarkus Armbruster    member __org.qemu_x-member1: __org.qemu_x-Enum optional=False
2188a84767cSMarkus Armbrusterobject __org.qemu_x-Struct
2198a84767cSMarkus Armbruster    base __org.qemu_x-Base
2208a84767cSMarkus Armbruster    member __org.qemu_x-member2: str optional=False
2218a84767cSMarkus Armbruster    member wchar-t: int optional=True
222f0325536SMarkus Armbrusteralternate __org.qemu_x-Alt1
223f0325536SMarkus Armbruster    tag type
224f0325536SMarkus Armbruster    case __org.qemu_x-branch: str
225bb5821ddSMarkus Armbrusterarray __org.qemu_x-UnionList __org.qemu_x-Union
2268a84767cSMarkus Armbrusterobject __org.qemu_x-Struct2
227bb5821ddSMarkus Armbruster    member array: __org.qemu_x-UnionList optional=False
228bb5821ddSMarkus Armbrusterobject __org.qemu_x-Union
2298a84767cSMarkus Armbruster    base __org.qemu_x-Base
2308a84767cSMarkus Armbruster    tag __org.qemu_x-member1
2318a84767cSMarkus Armbruster    case __org.qemu_x-value: __org.qemu_x-Struct2
2328a84767cSMarkus Armbrusteralternate __org.qemu_x-Alt
2338a84767cSMarkus Armbruster    tag type
234f0325536SMarkus Armbruster    case __org.qemu_x-branch: __org.qemu_x-Base
2358a84767cSMarkus Armbrusterevent __ORG.QEMU_X-EVENT __org.qemu_x-Struct
2368a84767cSMarkus Armbruster    boxed=False
237ca0ac758SMarkus Armbrusterarray __org.qemu_x-EnumList __org.qemu_x-Enum
238ca0ac758SMarkus Armbrusterarray __org.qemu_x-StructList __org.qemu_x-Struct
2397599697cSEric Blakeobject q_obj___org.qemu_x-command-arg
2407599697cSEric Blake    member a: __org.qemu_x-EnumList optional=False
2417599697cSEric Blake    member b: __org.qemu_x-StructList optional=False
242bb5821ddSMarkus Armbruster    member c: __org.qemu_x-Union optional=False
2437599697cSEric Blake    member d: __org.qemu_x-Alt optional=False
244bb5821ddSMarkus Armbrustercommand __org.qemu_x-command q_obj___org.qemu_x-command-arg -> None
2457b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
246967c8851SMarc-André Lureauobject TestIfStruct
247967c8851SMarc-André Lureau    member foo: int optional=False
248ccadd6bcSMarc-André Lureau    member bar: int optional=False
24940e350f0SMarkus Armbruster        if TEST_IF_STRUCT_MEMBER
250*fa32eb90SMarkus Armbruster    member baz: str optional=True
251*fa32eb90SMarkus Armbruster        if TEST_IF_STRUCT_MEMBER
2528a9f1e1dSMarc-André Lureau    if TEST_IF_STRUCT
2531e381b65SMarc-André Lureauenum TestIfEnum
2541e381b65SMarc-André Lureau    member foo
2551e381b65SMarc-André Lureau    member bar
25640e350f0SMarkus Armbruster        if TEST_IF_ENUM_MEMBER
25739d2cc8eSMarkus Armbruster    if TEST_IF_UNION
25854501863SMarkus Armbrusterobject q_obj_TestIfUnion-base
25954501863SMarkus Armbruster    member type: TestIfEnum optional=False
2609c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
261967c8851SMarc-André Lureauobject TestIfUnion
26254501863SMarkus Armbruster    base q_obj_TestIfUnion-base
263967c8851SMarc-André Lureau    tag type
26454501863SMarkus Armbruster    case foo: TestStruct
26554501863SMarkus Armbruster    case bar: UserDefZero
26640e350f0SMarkus Armbruster        if TEST_IF_ENUM_MEMBER
2679c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
26805ebf841SMarkus Armbrusterobject q_obj_test-if-union-cmd-arg
2695aceeac0SMarkus Armbruster    member union-cmd-arg: TestIfUnion optional=False
2709c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
27105ebf841SMarkus Armbrustercommand test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
272f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
2739c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
274967c8851SMarc-André Lureaualternate TestIfAlternate
275967c8851SMarc-André Lureau    tag type
276967c8851SMarc-André Lureau    case foo: int
277967c8851SMarc-André Lureau    case bar: TestStruct
27840e350f0SMarkus Armbruster        if TEST_IF_ALT_MEMBER
2799c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
28005ebf841SMarkus Armbrusterobject q_obj_test-if-alternate-cmd-arg
2815aceeac0SMarkus Armbruster    member alt-cmd-arg: TestIfAlternate optional=False
2829c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
28305ebf841SMarkus Armbrustercommand test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
284f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
2859c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
28605ebf841SMarkus Armbrusterobject q_obj_test-if-cmd-arg
287967c8851SMarc-André Lureau    member foo: TestIfStruct optional=False
28839d2cc8eSMarkus Armbruster    member bar: str optional=False
28940e350f0SMarkus Armbruster        if TEST_IF_CMD_ARG
2909c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
29105ebf841SMarkus Armbrustercommand test-if-cmd q_obj_test-if-cmd-arg -> UserDefThree
292967c8851SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
2939c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
29405ebf841SMarkus Armbrustercommand test-cmd-return-def-three None -> UserDefThree
295967c8851SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
296d4f4cae8SMarkus Armbrusterobject q_obj_TEST_IF_EVENT-arg
297967c8851SMarc-André Lureau    member foo: TestIfStruct optional=False
29839d2cc8eSMarkus Armbruster    member bar: strList optional=False
29940e350f0SMarkus Armbruster        if TEST_IF_EVT_ARG
3009c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
301d4f4cae8SMarkus Armbrusterevent TEST_IF_EVENT q_obj_TEST_IF_EVENT-arg
302967c8851SMarc-André Lureau    boxed=False
3039c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
304dd044023SMarkus Armbrusterevent TEST_IF_EVENT2 None
305dd044023SMarkus Armbruster    boxed=False
3069c629fa8SMarkus Armbruster    if {'not': {'any': [{'not': 'TEST_IF_EVT'}, {'not': 'TEST_IF_STRUCT'}]}}
3078aa3a33eSKevin Wolfobject FeatureStruct0
3088aa3a33eSKevin Wolf    member foo: int optional=False
3098aa3a33eSKevin Wolfobject FeatureStruct1
3108aa3a33eSKevin Wolf    member foo: int optional=False
311f965e8feSMarkus Armbruster        feature deprecated
3128aa3a33eSKevin Wolf    feature feature1
3138aa3a33eSKevin Wolfobject FeatureStruct2
3148aa3a33eSKevin Wolf    member foo: int optional=False
315a3c45b3eSMarkus Armbruster        feature unstable
3168aa3a33eSKevin Wolf    feature feature1
3178aa3a33eSKevin Wolfobject FeatureStruct3
3188aa3a33eSKevin Wolf    member foo: int optional=False
3198aa3a33eSKevin Wolf    feature feature1
3208aa3a33eSKevin Wolf    feature feature2
3218aa3a33eSKevin Wolfobject FeatureStruct4
3228aa3a33eSKevin Wolf    member namespace-test: int optional=False
3238aa3a33eSKevin Wolf    feature namespace-test
3248aa3a33eSKevin Wolf    feature int
3258aa3a33eSKevin Wolf    feature name
3268aa3a33eSKevin Wolf    feature if
3278aa3a33eSKevin Wolfobject CondFeatureStruct1
3288aa3a33eSKevin Wolf    member foo: int optional=False
3298aa3a33eSKevin Wolf    feature feature1
3308a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3318aa3a33eSKevin Wolfobject CondFeatureStruct2
3328aa3a33eSKevin Wolf    member foo: int optional=False
3338aa3a33eSKevin Wolf    feature feature1
3348a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3358aa3a33eSKevin Wolf    feature feature2
3368a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
3378aa3a33eSKevin Wolfobject CondFeatureStruct3
3388aa3a33eSKevin Wolf    member foo: int optional=False
3398aa3a33eSKevin Wolf    feature feature1
3409c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
3413ad64edfSMarc-André Lureauobject CondFeatureStruct4
3423ad64edfSMarc-André Lureau    member foo: int optional=False
3433ad64edfSMarc-André Lureau    feature feature1
3449c629fa8SMarkus Armbruster        if {'any': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
345013b4efcSMarkus Armbrusterenum FeatureEnum1
346013b4efcSMarkus Armbruster    member eins
347013b4efcSMarkus Armbruster    member zwei
348013b4efcSMarkus Armbruster    member drei
349b6c18755SMarkus Armbruster        feature deprecated
350013b4efcSMarkus Armbruster    feature feature1
351013b4efcSMarkus Armbrusterobject q_obj_FeatureUnion1-base
352013b4efcSMarkus Armbruster    member tag: FeatureEnum1 optional=False
353013b4efcSMarkus Armbrusterobject FeatureUnion1
354013b4efcSMarkus Armbruster    base q_obj_FeatureUnion1-base
355013b4efcSMarkus Armbruster    tag tag
356013b4efcSMarkus Armbruster    case eins: FeatureStruct1
357013b4efcSMarkus Armbruster    case zwei: q_empty
358013b4efcSMarkus Armbruster    case drei: q_empty
359013b4efcSMarkus Armbruster    feature feature1
360013b4efcSMarkus Armbrusteralternate FeatureAlternate1
361013b4efcSMarkus Armbruster    tag type
362013b4efcSMarkus Armbruster    case eins: FeatureStruct1
363013b4efcSMarkus Armbruster    feature feature1
364013b4efcSMarkus Armbrusterobject q_obj_test-features0-arg
36591fa93e5SMarkus Armbruster    member fs0: FeatureStruct0 optional=True
36691fa93e5SMarkus Armbruster    member fs1: FeatureStruct1 optional=True
36791fa93e5SMarkus Armbruster    member fs2: FeatureStruct2 optional=True
36891fa93e5SMarkus Armbruster    member fs3: FeatureStruct3 optional=True
36991fa93e5SMarkus Armbruster    member fs4: FeatureStruct4 optional=True
37091fa93e5SMarkus Armbruster    member cfs1: CondFeatureStruct1 optional=True
37191fa93e5SMarkus Armbruster    member cfs2: CondFeatureStruct2 optional=True
37291fa93e5SMarkus Armbruster    member cfs3: CondFeatureStruct3 optional=True
3733ad64edfSMarc-André Lureau    member cfs4: CondFeatureStruct4 optional=True
37491fa93e5SMarkus Armbrustercommand test-features0 q_obj_test-features0-arg -> FeatureStruct1
3752e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3762e2e0df2SPeter Krempacommand test-command-features1 None -> None
3772e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
378f965e8feSMarkus Armbruster    feature deprecated
3792e2e0df2SPeter Krempacommand test-command-features3 None -> None
3802e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
381a3c45b3eSMarkus Armbruster    feature unstable
3822e2e0df2SPeter Krempa    feature feature1
3832e2e0df2SPeter Krempa    feature feature2
3842e2e0df2SPeter Krempacommand test-command-cond-features1 None -> None
3852e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3862e2e0df2SPeter Krempa    feature feature1
3878a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3882e2e0df2SPeter Krempacommand test-command-cond-features2 None -> None
3892e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3902e2e0df2SPeter Krempa    feature feature1
3918a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3922e2e0df2SPeter Krempa    feature feature2
3938a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
3942e2e0df2SPeter Krempacommand test-command-cond-features3 None -> None
3952e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3962e2e0df2SPeter Krempa    feature feature1
3979c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
398d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES0 FeatureStruct1
399a291a38fSMarkus Armbruster    boxed=False
400d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES1 None
401013b4efcSMarkus Armbruster    boxed=False
402f965e8feSMarkus Armbruster    feature deprecated
403a3c45b3eSMarkus Armbrusterevent TEST_EVENT_FEATURES2 None
404a3c45b3eSMarkus Armbruster    boxed=False
405a3c45b3eSMarkus Armbruster    feature unstable
4063e7fb581SMarkus Armbrustermodule include/sub-module.json
4073e7fb581SMarkus Armbrusterinclude sub-sub-module.json
4083e7fb581SMarkus Armbrusterobject SecondArrayRef
4093e7fb581SMarkus Armbruster    member s: StatusList optional=False
4103e7fb581SMarkus Armbrustermodule sub-sub-module.json
4113e7fb581SMarkus Armbrusterarray StatusList Status
4123e7fb581SMarkus Armbrusterenum Status
4133e7fb581SMarkus Armbruster    member good
4143e7fb581SMarkus Armbruster    member bad
4153e7fb581SMarkus Armbruster    member ugly
416