xref: /qemu/tests/qapi-schema/qapi-schema-test.out (revision a3c45b3e62962f99338716b1347cfb0d427cea44)
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
124c0644771SMarkus Armbrusteralternate AltStrObj
125da9cb193SEric Blake    tag type
1269c51b441SEric Blake    case s: str
127c0644771SMarkus Armbruster    case o: TestStruct
128dffd8ff9SMarkus Armbrusterobject ArrayStruct
129dffd8ff9SMarkus Armbruster    member integer: intList optional=False
130dffd8ff9SMarkus Armbruster    member s8: int8List optional=False
131dffd8ff9SMarkus Armbruster    member s16: int16List optional=False
132dffd8ff9SMarkus Armbruster    member s32: int32List optional=False
133dffd8ff9SMarkus Armbruster    member s64: int64List optional=False
134dffd8ff9SMarkus Armbruster    member u8: uint8List optional=False
135dffd8ff9SMarkus Armbruster    member u16: uint16List optional=False
136dffd8ff9SMarkus Armbruster    member u32: uint32List optional=False
137dffd8ff9SMarkus Armbruster    member u64: uint64List optional=False
138dffd8ff9SMarkus Armbruster    member number: numberList optional=False
139dffd8ff9SMarkus Armbruster    member boolean: boolList optional=False
140dffd8ff9SMarkus Armbruster    member string: strList optional=False
141dffd8ff9SMarkus Armbruster    member sz: sizeList optional=True
142dffd8ff9SMarkus Armbruster    member any: anyList optional=True
143dffd8ff9SMarkus Armbruster    member user: StatusList optional=True
144709395f8SMarkus Armbrusterinclude include/sub-module.json
14505ebf841SMarkus Armbrustercommand user-def-cmd None -> None
1467b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
14705ebf841SMarkus Armbrusterobject q_obj_user-def-cmd1-arg
1488a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
14905ebf841SMarkus Armbrustercommand user-def-cmd1 q_obj_user-def-cmd1-arg -> None
1507b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
15105ebf841SMarkus Armbrusterobject q_obj_user-def-cmd2-arg
1528a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
1538a84767cSMarkus Armbruster    member ud1b: UserDefOne optional=True
15405ebf841SMarkus Armbrustercommand user-def-cmd2 q_obj_user-def-cmd2-arg -> UserDefTwo
1557b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
156ae6bf766SMarc-André Lureaucommand cmd-success-response None -> None
157ae6bf766SMarc-André Lureau    gen=True success_response=False boxed=False oob=False preconfig=False
15804f22362SKevin Wolfcommand coroutine-cmd None -> None
15904f22362SKevin Wolf    gen=True success_response=True boxed=False oob=False preconfig=False coroutine=True
1608a84767cSMarkus Armbrusterobject q_obj_guest-get-time-arg
1618a84767cSMarkus Armbruster    member a: int optional=False
1628a84767cSMarkus Armbruster    member b: int optional=True
1638a84767cSMarkus Armbrustercommand guest-get-time q_obj_guest-get-time-arg -> int
1647b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
1658a84767cSMarkus Armbrusterobject q_obj_guest-sync-arg
1668a84767cSMarkus Armbruster    member arg: any optional=False
1678a84767cSMarkus Armbrustercommand guest-sync q_obj_guest-sync-arg -> any
1687b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
1698a84767cSMarkus Armbrustercommand boxed-struct UserDefZero -> None
1707b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
1711e65e16cSMarkus Armbrustercommand boxed-union UserDefFlatUnion -> None
1727b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
173675b214bSMarkus Armbrustercommand boxed-empty Empty1 -> None
174675b214bSMarkus Armbruster    gen=True success_response=True boxed=True oob=False preconfig=False
1757b13f2c2SIgor Mammedovcommand test-flags-command None -> None
1767b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=True preconfig=True
177156402e5SMarkus Armbrusterobject UserDefOptions
178156402e5SMarkus Armbruster    member i64: intList optional=True
179156402e5SMarkus Armbruster    member u64: uint64List optional=True
180156402e5SMarkus Armbruster    member u16: uint16List optional=True
181156402e5SMarkus Armbruster    member i64x: int optional=True
182156402e5SMarkus Armbruster    member u64x: uint64 optional=True
1838a84767cSMarkus Armbrusterobject EventStructOne
1848a84767cSMarkus Armbruster    member struct1: UserDefOne optional=False
185156402e5SMarkus Armbruster    member string: str optional=False
1868a84767cSMarkus Armbruster    member enum2: EnumOne optional=True
1878a84767cSMarkus Armbrusterevent EVENT_A None
18848825ca4SEric Blake    boxed=False
1898a84767cSMarkus Armbrusterevent EVENT_B None
1908a84767cSMarkus Armbruster    boxed=False
1917599697cSEric Blakeobject q_obj_EVENT_C-arg
1927599697cSEric Blake    member a: int optional=True
1937599697cSEric Blake    member b: UserDefOne optional=True
1947599697cSEric Blake    member c: str optional=False
1958a84767cSMarkus Armbrusterevent EVENT_C q_obj_EVENT_C-arg
1968a84767cSMarkus Armbruster    boxed=False
1977599697cSEric Blakeobject q_obj_EVENT_D-arg
1987599697cSEric Blake    member a: EventStructOne optional=False
1997599697cSEric Blake    member b: str optional=False
2007599697cSEric Blake    member c: str optional=True
2017599697cSEric Blake    member enum3: EnumOne optional=True
2028a84767cSMarkus Armbrusterevent EVENT_D q_obj_EVENT_D-arg
2038a84767cSMarkus Armbruster    boxed=False
2048a84767cSMarkus Armbrusterevent EVENT_E UserDefZero
2058a84767cSMarkus Armbruster    boxed=True
206b22e8658SMarkus Armbrusterevent EVENT_F UserDefFlatUnion
2078a84767cSMarkus Armbruster    boxed=True
208675b214bSMarkus Armbrusterevent EVENT_G Empty1
209675b214bSMarkus Armbruster    boxed=True
2101e381b65SMarc-André Lureauenum __org.qemu_x-Enum
2111e381b65SMarc-André Lureau    member __org.qemu_x-value
2128a84767cSMarkus Armbrusterobject __org.qemu_x-Base
2138a84767cSMarkus Armbruster    member __org.qemu_x-member1: __org.qemu_x-Enum optional=False
2148a84767cSMarkus Armbrusterobject __org.qemu_x-Struct
2158a84767cSMarkus Armbruster    base __org.qemu_x-Base
2168a84767cSMarkus Armbruster    member __org.qemu_x-member2: str optional=False
2178a84767cSMarkus Armbruster    member wchar-t: int optional=True
218f0325536SMarkus Armbrusteralternate __org.qemu_x-Alt1
219f0325536SMarkus Armbruster    tag type
220f0325536SMarkus Armbruster    case __org.qemu_x-branch: str
221bb5821ddSMarkus Armbrusterarray __org.qemu_x-UnionList __org.qemu_x-Union
2228a84767cSMarkus Armbrusterobject __org.qemu_x-Struct2
223bb5821ddSMarkus Armbruster    member array: __org.qemu_x-UnionList optional=False
224bb5821ddSMarkus Armbrusterobject __org.qemu_x-Union
2258a84767cSMarkus Armbruster    base __org.qemu_x-Base
2268a84767cSMarkus Armbruster    tag __org.qemu_x-member1
2278a84767cSMarkus Armbruster    case __org.qemu_x-value: __org.qemu_x-Struct2
2288a84767cSMarkus Armbrusteralternate __org.qemu_x-Alt
2298a84767cSMarkus Armbruster    tag type
230f0325536SMarkus Armbruster    case __org.qemu_x-branch: __org.qemu_x-Base
2318a84767cSMarkus Armbrusterevent __ORG.QEMU_X-EVENT __org.qemu_x-Struct
2328a84767cSMarkus Armbruster    boxed=False
233ca0ac758SMarkus Armbrusterarray __org.qemu_x-EnumList __org.qemu_x-Enum
234ca0ac758SMarkus Armbrusterarray __org.qemu_x-StructList __org.qemu_x-Struct
2357599697cSEric Blakeobject q_obj___org.qemu_x-command-arg
2367599697cSEric Blake    member a: __org.qemu_x-EnumList optional=False
2377599697cSEric Blake    member b: __org.qemu_x-StructList optional=False
238bb5821ddSMarkus Armbruster    member c: __org.qemu_x-Union optional=False
2397599697cSEric Blake    member d: __org.qemu_x-Alt optional=False
240bb5821ddSMarkus Armbrustercommand __org.qemu_x-command q_obj___org.qemu_x-command-arg -> None
2417b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
242967c8851SMarc-André Lureauobject TestIfStruct
243967c8851SMarc-André Lureau    member foo: int optional=False
244ccadd6bcSMarc-André Lureau    member bar: int optional=False
2458a9f1e1dSMarc-André Lureau        if TEST_IF_STRUCT_BAR
2468a9f1e1dSMarc-André Lureau    if TEST_IF_STRUCT
2471e381b65SMarc-André Lureauenum TestIfEnum
2481e381b65SMarc-André Lureau    member foo
2491e381b65SMarc-André Lureau    member bar
2508a9f1e1dSMarc-André Lureau        if TEST_IF_ENUM_BAR
2518a9f1e1dSMarc-André Lureau    if TEST_IF_ENUM
25254501863SMarkus Armbrusterobject q_obj_TestIfUnion-base
25354501863SMarkus Armbruster    member type: TestIfEnum optional=False
2549c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
255967c8851SMarc-André Lureauobject TestIfUnion
25654501863SMarkus Armbruster    base q_obj_TestIfUnion-base
257967c8851SMarc-André Lureau    tag type
25854501863SMarkus Armbruster    case foo: TestStruct
25954501863SMarkus Armbruster    case bar: UserDefZero
26054501863SMarkus Armbruster        if TEST_IF_ENUM_BAR
2619c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
26205ebf841SMarkus Armbrusterobject q_obj_test-if-union-cmd-arg
2635aceeac0SMarkus Armbruster    member union-cmd-arg: TestIfUnion optional=False
2649c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
26505ebf841SMarkus Armbrustercommand test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
266f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
2679c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
268967c8851SMarc-André Lureaualternate TestIfAlternate
269967c8851SMarc-André Lureau    tag type
270967c8851SMarc-André Lureau    case foo: int
271967c8851SMarc-André Lureau    case bar: TestStruct
2728a9f1e1dSMarc-André Lureau        if TEST_IF_ALT_BAR
2739c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
27405ebf841SMarkus Armbrusterobject q_obj_test-if-alternate-cmd-arg
2755aceeac0SMarkus Armbruster    member alt-cmd-arg: TestIfAlternate optional=False
2769c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
27705ebf841SMarkus Armbrustercommand test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
278f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
2799c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
28005ebf841SMarkus Armbrusterobject q_obj_test-if-cmd-arg
281967c8851SMarc-André Lureau    member foo: TestIfStruct optional=False
2826cc32b0eSMarc-André Lureau    member bar: TestIfEnum optional=False
2838a9f1e1dSMarc-André Lureau        if TEST_IF_CMD_BAR
2849c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
28505ebf841SMarkus Armbrustercommand test-if-cmd q_obj_test-if-cmd-arg -> UserDefThree
286967c8851SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
2879c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
28805ebf841SMarkus Armbrustercommand test-cmd-return-def-three None -> UserDefThree
289967c8851SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
2900f20628bSMarkus Armbrusterarray TestIfEnumList TestIfEnum
2918a9f1e1dSMarc-André Lureau    if TEST_IF_ENUM
292d4f4cae8SMarkus Armbrusterobject q_obj_TEST_IF_EVENT-arg
293967c8851SMarc-André Lureau    member foo: TestIfStruct optional=False
2940f20628bSMarkus Armbruster    member bar: TestIfEnumList optional=False
2958a9f1e1dSMarc-André Lureau        if TEST_IF_EVT_BAR
2969c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
297d4f4cae8SMarkus Armbrusterevent TEST_IF_EVENT q_obj_TEST_IF_EVENT-arg
298967c8851SMarc-André Lureau    boxed=False
2999c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
300dd044023SMarkus Armbrusterevent TEST_IF_EVENT2 None
301dd044023SMarkus Armbruster    boxed=False
3029c629fa8SMarkus Armbruster    if {'not': {'any': [{'not': 'TEST_IF_EVT'}, {'not': 'TEST_IF_STRUCT'}]}}
3038aa3a33eSKevin Wolfobject FeatureStruct0
3048aa3a33eSKevin Wolf    member foo: int optional=False
3058aa3a33eSKevin Wolfobject FeatureStruct1
3068aa3a33eSKevin Wolf    member foo: int optional=False
307f965e8feSMarkus Armbruster        feature deprecated
3088aa3a33eSKevin Wolf    feature feature1
3098aa3a33eSKevin Wolfobject FeatureStruct2
3108aa3a33eSKevin Wolf    member foo: int optional=False
311*a3c45b3eSMarkus Armbruster        feature unstable
3128aa3a33eSKevin Wolf    feature feature1
3138aa3a33eSKevin Wolfobject FeatureStruct3
3148aa3a33eSKevin Wolf    member foo: int optional=False
3158aa3a33eSKevin Wolf    feature feature1
3168aa3a33eSKevin Wolf    feature feature2
3178aa3a33eSKevin Wolfobject FeatureStruct4
3188aa3a33eSKevin Wolf    member namespace-test: int optional=False
3198aa3a33eSKevin Wolf    feature namespace-test
3208aa3a33eSKevin Wolf    feature int
3218aa3a33eSKevin Wolf    feature name
3228aa3a33eSKevin Wolf    feature if
3238aa3a33eSKevin Wolfobject CondFeatureStruct1
3248aa3a33eSKevin Wolf    member foo: int optional=False
3258aa3a33eSKevin Wolf    feature feature1
3268a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3278aa3a33eSKevin Wolfobject CondFeatureStruct2
3288aa3a33eSKevin Wolf    member foo: int optional=False
3298aa3a33eSKevin Wolf    feature feature1
3308a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3318aa3a33eSKevin Wolf    feature feature2
3328a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
3338aa3a33eSKevin Wolfobject CondFeatureStruct3
3348aa3a33eSKevin Wolf    member foo: int optional=False
3358aa3a33eSKevin Wolf    feature feature1
3369c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
3373ad64edfSMarc-André Lureauobject CondFeatureStruct4
3383ad64edfSMarc-André Lureau    member foo: int optional=False
3393ad64edfSMarc-André Lureau    feature feature1
3409c629fa8SMarkus Armbruster        if {'any': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
341013b4efcSMarkus Armbrusterenum FeatureEnum1
342013b4efcSMarkus Armbruster    member eins
343013b4efcSMarkus Armbruster    member zwei
344013b4efcSMarkus Armbruster    member drei
345b6c18755SMarkus Armbruster        feature deprecated
346013b4efcSMarkus Armbruster    feature feature1
347013b4efcSMarkus Armbrusterobject q_obj_FeatureUnion1-base
348013b4efcSMarkus Armbruster    member tag: FeatureEnum1 optional=False
349013b4efcSMarkus Armbrusterobject FeatureUnion1
350013b4efcSMarkus Armbruster    base q_obj_FeatureUnion1-base
351013b4efcSMarkus Armbruster    tag tag
352013b4efcSMarkus Armbruster    case eins: FeatureStruct1
353013b4efcSMarkus Armbruster    case zwei: q_empty
354013b4efcSMarkus Armbruster    case drei: q_empty
355013b4efcSMarkus Armbruster    feature feature1
356013b4efcSMarkus Armbrusteralternate FeatureAlternate1
357013b4efcSMarkus Armbruster    tag type
358013b4efcSMarkus Armbruster    case eins: FeatureStruct1
359013b4efcSMarkus Armbruster    feature feature1
360013b4efcSMarkus Armbrusterobject q_obj_test-features0-arg
36191fa93e5SMarkus Armbruster    member fs0: FeatureStruct0 optional=True
36291fa93e5SMarkus Armbruster    member fs1: FeatureStruct1 optional=True
36391fa93e5SMarkus Armbruster    member fs2: FeatureStruct2 optional=True
36491fa93e5SMarkus Armbruster    member fs3: FeatureStruct3 optional=True
36591fa93e5SMarkus Armbruster    member fs4: FeatureStruct4 optional=True
36691fa93e5SMarkus Armbruster    member cfs1: CondFeatureStruct1 optional=True
36791fa93e5SMarkus Armbruster    member cfs2: CondFeatureStruct2 optional=True
36891fa93e5SMarkus Armbruster    member cfs3: CondFeatureStruct3 optional=True
3693ad64edfSMarc-André Lureau    member cfs4: CondFeatureStruct4 optional=True
37091fa93e5SMarkus Armbrustercommand test-features0 q_obj_test-features0-arg -> FeatureStruct1
3712e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3722e2e0df2SPeter Krempacommand test-command-features1 None -> None
3732e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
374f965e8feSMarkus Armbruster    feature deprecated
3752e2e0df2SPeter Krempacommand test-command-features3 None -> None
3762e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
377*a3c45b3eSMarkus Armbruster    feature unstable
3782e2e0df2SPeter Krempa    feature feature1
3792e2e0df2SPeter Krempa    feature feature2
3802e2e0df2SPeter Krempacommand test-command-cond-features1 None -> None
3812e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3822e2e0df2SPeter Krempa    feature feature1
3838a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3842e2e0df2SPeter Krempacommand test-command-cond-features2 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 Krempa    feature feature2
3898a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
3902e2e0df2SPeter Krempacommand test-command-cond-features3 None -> None
3912e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3922e2e0df2SPeter Krempa    feature feature1
3939c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
394d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES0 FeatureStruct1
395a291a38fSMarkus Armbruster    boxed=False
396d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES1 None
397013b4efcSMarkus Armbruster    boxed=False
398f965e8feSMarkus Armbruster    feature deprecated
399*a3c45b3eSMarkus Armbrusterevent TEST_EVENT_FEATURES2 None
400*a3c45b3eSMarkus Armbruster    boxed=False
401*a3c45b3eSMarkus Armbruster    feature unstable
4023e7fb581SMarkus Armbrustermodule include/sub-module.json
4033e7fb581SMarkus Armbrusterinclude sub-sub-module.json
4043e7fb581SMarkus Armbrusterobject SecondArrayRef
4053e7fb581SMarkus Armbruster    member s: StatusList optional=False
4063e7fb581SMarkus Armbrustermodule sub-sub-module.json
4073e7fb581SMarkus Armbrusterarray StatusList Status
4083e7fb581SMarkus Armbrusterenum Status
4093e7fb581SMarkus Armbruster    member good
4103e7fb581SMarkus Armbruster    member bad
4113e7fb581SMarkus Armbruster    member ugly
412