@@ -9,7 +9,6 @@ definitions = '''
9
9
10
10
[cases ]
11
11
[cases .char_int64_1 ]
12
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
13
12
param_types = [" const std::variant<char, int64_t>&" ]
14
13
setup = " return 'a';"
15
14
expect_json = ''' [{
@@ -22,8 +21,17 @@ definitions = '''
22
21
"members":[
23
22
{"typeName":"int8_t", "staticSize":1, "exclusiveSize":1, "dynamicSize":0}
24
23
]}]'''
24
+ expect_json_v2 = ''' [{
25
+ "size":16,
26
+ "staticSize":16,
27
+ "exclusiveSize":15,
28
+ "length":1,
29
+ "capacity":1,
30
+ "members":[
31
+ {"typeNames":["int8_t"], "size":1, "staticSize":1, "exclusiveSize":1}
32
+ ]
33
+ }]'''
25
34
[cases .char_int64_2 ]
26
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
27
35
param_types = [" const std::variant<char, int64_t>&" ]
28
36
setup = " return 1234;"
29
37
expect_json = ''' [{
@@ -36,9 +44,18 @@ definitions = '''
36
44
"members":[
37
45
{"typeName":"int64_t", "staticSize":8, "exclusiveSize":8, "dynamicSize":0}
38
46
]}]'''
47
+ expect_json_v2 = ''' [{
48
+ "size":16,
49
+ "staticSize":16,
50
+ "exclusiveSize":8,
51
+ "length":1,
52
+ "capacity":1,
53
+ "members":[
54
+ {"typeNames":["int64_t"], "size":8, "staticSize":8, "exclusiveSize":8}
55
+ ]
56
+ }]'''
39
57
40
58
[cases .vector_int_1 ]
41
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
42
59
param_types = [" const std::variant<std::vector<int>, int>&" ]
43
60
setup = " return std::vector<int>{1,2,3};"
44
61
expect_json = ''' [{
@@ -59,8 +76,21 @@ definitions = '''
59
76
"elementStaticSize":4
60
77
}
61
78
]}]'''
79
+ expect_json_v2 = ''' [{
80
+ "size":44,
81
+ "staticSize":32,
82
+ "exclusiveSize":8,
83
+ "length":1,
84
+ "capacity":1,
85
+ "members":[
86
+ {"typeNames":["std::vector<int32_t, std::allocator<int32_t>>"], "size":36, "staticSize":24, "exclusiveSize":24, "members":[
87
+ {"typeNames":["int32_t"], "size":4, "staticSize":4, "exclusiveSize":4},
88
+ {"typeNames":["int32_t"], "size":4, "staticSize":4, "exclusiveSize":4},
89
+ {"typeNames":["int32_t"], "size":4, "staticSize":4, "exclusiveSize":4}
90
+ ]}
91
+ ]
92
+ }]'''
62
93
[cases .vector_int_2 ]
63
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
64
94
param_types = [" const std::variant<std::vector<int>, int>&" ]
65
95
setup = " return 123;"
66
96
expect_json = ''' [{
@@ -76,9 +106,18 @@ definitions = '''
76
106
"dynamicSize":0
77
107
}
78
108
]}]'''
109
+ expect_json_v2 = ''' [{
110
+ "size":32,
111
+ "staticSize":32,
112
+ "exclusiveSize":28,
113
+ "length":1,
114
+ "capacity":1,
115
+ "members":[
116
+ {"typeNames":["int32_t"], "size":4, "staticSize":4, "exclusiveSize":4}
117
+ ]
118
+ }]'''
79
119
80
120
[cases .optional ]
81
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
82
121
# This test case ensures that the alignment of std::variant is set
83
122
# correctly, as otherwise the size of the std::optional would be wrong
84
123
param_types = [" const std::optional<std::variant<char, int64_t>>&" ]
@@ -103,9 +142,25 @@ definitions = '''
103
142
]
104
143
}
105
144
]}]'''
145
+ expect_json_v2 = ''' [{
146
+ "size":24,
147
+ "staticSize":24,
148
+ "exclusiveSize":8,
149
+ "length":1,
150
+ "capacity":1,
151
+ "members":[{
152
+ "size":16,
153
+ "staticSize":16,
154
+ "exclusiveSize":8,
155
+ "length":1,
156
+ "capacity":1,
157
+ "members":[
158
+ {"typeNames":["int64_t"], "size":8, "staticSize":8, "exclusiveSize":8}
159
+ ]
160
+ }]
161
+ }]'''
106
162
107
163
[cases .empty ]
108
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
109
164
# https://en.cppreference.com/w/cpp/utility/variant/valueless_by_exception
110
165
param_types = [" const std::variant<int, Thrower>&" ]
111
166
setup = '''
@@ -127,13 +182,20 @@ definitions = '''
127
182
"elementStaticSize":4,
128
183
"NOT":"members"
129
184
}]'''
185
+ expect_json_v2 = ''' [{
186
+ "size":8,
187
+ "staticSize":8,
188
+ "exclusiveSize":8,
189
+ "length":0,
190
+ "capacity":1,
191
+ "members":[]
192
+ }]'''
130
193
131
194
# With less than 256 options, parameter indexes are stored in a uint8_t and
132
195
# the invalid index value is 0xff. These tests check that we regonise that
133
196
# 0xff can be a valid index if there are at least 256 parameters, and that
134
197
# the invalid index value is raised to 0xffff.
135
198
[cases .256_params_256 ]
136
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
137
199
param_types = ["const std::variant<Thrower,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,char>&"]
138
200
setup = " return 'a';"
139
201
expect_json = ''' [{
@@ -146,8 +208,17 @@ definitions = '''
146
208
"members":[
147
209
{"typeName":"int8_t", "staticSize":1, "exclusiveSize":1, "dynamicSize":0}
148
210
]}]'''
211
+ expect_json_v2 = ''' [{
212
+ "size":8,
213
+ "staticSize":8,
214
+ "exclusiveSize":7,
215
+ "length":1,
216
+ "capacity":1,
217
+ "members":[
218
+ {"typeNames":["int8_t"], "size":1, "staticSize":1, "exclusiveSize":1}
219
+ ]
220
+ }]'''
149
221
[cases .256_params_empty ]
150
- oil_skip = " std::variant is not implemented for treebuilder v2" # https://github.com/facebookexperimental/object-introspection/issues/298
151
222
param_types = ["const std::variant<Thrower,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,char>&"]
152
223
setup = '''
153
224
std::variant<Thrower,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,char> var{'a'};
@@ -167,3 +238,11 @@ definitions = '''
167
238
"elementStaticSize":4,
168
239
"NOT":"members"
169
240
}]'''
241
+ expect_json_v2 = ''' [{
242
+ "size":8,
243
+ "staticSize":8,
244
+ "exclusiveSize":8,
245
+ "length":0,
246
+ "capacity":1,
247
+ "members":[]
248
+ }]'''
0 commit comments