ndtypes 0.2.0dev5 → 0.2.0dev6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +12 -0
- data/Rakefile +8 -0
- data/ext/ruby_ndtypes/GPATH +0 -0
- data/ext/ruby_ndtypes/GRTAGS +0 -0
- data/ext/ruby_ndtypes/GTAGS +0 -0
- data/ext/ruby_ndtypes/extconf.rb +1 -1
- data/ext/ruby_ndtypes/include/ndtypes.h +231 -122
- data/ext/ruby_ndtypes/include/ruby_ndtypes.h +1 -1
- data/ext/ruby_ndtypes/lib/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/lib/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/Makefile +87 -0
- data/ext/ruby_ndtypes/ndtypes/config.h +68 -0
- data/ext/ruby_ndtypes/ndtypes/config.log +477 -0
- data/ext/ruby_ndtypes/ndtypes/config.status +1027 -0
- data/ext/ruby_ndtypes/ndtypes/doc/_static/style.css +7 -0
- data/ext/ruby_ndtypes/ndtypes/doc/_templates/layout.html +2 -0
- data/ext/ruby_ndtypes/ndtypes/doc/conf.py +40 -4
- data/ext/ruby_ndtypes/ndtypes/doc/images/xndlogo.png +0 -0
- data/ext/ruby_ndtypes/ndtypes/doc/ndtypes/types.rst +1 -1
- data/ext/ruby_ndtypes/ndtypes/doc/requirements.txt +2 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile +287 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile.in +20 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile.vc +22 -3
- data/ext/ruby_ndtypes/ndtypes/libndtypes/alloc.c +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/alloc.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/attr.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/Makefile +73 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.c +246 -229
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.h +15 -11
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.y +38 -28
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.c +91 -91
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.l +4 -3
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/export.c +8 -7
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/export.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/import.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/import.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/context.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/copy.c +263 -182
- data/ext/ruby_ndtypes/ndtypes/libndtypes/copy.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/encodings.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/equal.c +67 -7
- data/ext/ruby_ndtypes/ndtypes/libndtypes/equal.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.c +1112 -1000
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.h +69 -58
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.y +150 -99
- data/ext/ruby_ndtypes/ndtypes/libndtypes/io.c +185 -15
- data/ext/ruby_ndtypes/ndtypes/libndtypes/io.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.c +301 -276
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.l +9 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so +1 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so.0 +1 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/match.c +729 -228
- data/ext/ruby_ndtypes/ndtypes/libndtypes/match.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.c +768 -403
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.h +1002 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.h.in +231 -122
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.c +176 -84
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.h +26 -14
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parser.c +57 -35
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parser.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/primitive.c +420 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/primitive.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.c +8 -8
- data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/Makefile +48 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/deserialize.c +200 -116
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/deserialize.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/serialize.c +46 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/serialize.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.c +58 -27
- data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.c +3 -5
- data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.h +12 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile +55 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile.in +8 -8
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile.vc +5 -5
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/runtest.c +274 -172
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test.h +24 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_array.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_buffer.c +14 -14
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_match.c +32 -30
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse.c +37 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_error.c +36 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_roundtrip.c +16 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_record.c +5 -5
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_typecheck.c +706 -253
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_unify.c +132 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/unify.c +703 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/unify.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/util.c +335 -127
- data/ext/ruby_ndtypes/ndtypes/libndtypes/util.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/values.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/libndtypes/values.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndt_randtype.py +88 -71
- data/ext/ruby_ndtypes/ndtypes/python/ndt_support.py +0 -1
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/__init__.py +10 -13
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/_ndtypes.c +395 -314
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so +1 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so.0 +1 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/ndtypes.h +1002 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/pyndtypes.h +15 -33
- data/ext/ruby_ndtypes/ndtypes/python/test_ndtypes.py +340 -132
- data/ext/ruby_ndtypes/ndtypes/setup.py +11 -2
- data/ext/ruby_ndtypes/ruby_ndtypes.c +364 -241
- data/ext/ruby_ndtypes/ruby_ndtypes.h +1 -1
- data/ext/ruby_ndtypes/ruby_ndtypes_internal.h +0 -1
- data/lib/ndtypes.rb +11 -0
- data/lib/ndtypes/version.rb +2 -2
- data/lib/ruby_ndtypes.so +0 -0
- data/ndtypes.gemspec +3 -0
- data/spec/ndtypes_spec.rb +6 -0
- metadata +98 -4
- data/ext/ruby_ndtypes/gc_guard.c +0 -36
- data/ext/ruby_ndtypes/gc_guard.h +0 -12
@@ -38,6 +38,13 @@
|
|
38
38
|
#include "ndtypes.h"
|
39
39
|
|
40
40
|
|
41
|
+
|
42
|
+
#define XSTRINGIZE(v) #v
|
43
|
+
#define STRINGIZE(v) XSTRINGIZE(v)
|
44
|
+
|
45
|
+
#define loc() __FILE__ ":" STRINGIZE(__LINE__)
|
46
|
+
|
47
|
+
|
41
48
|
typedef struct {
|
42
49
|
const char *input;
|
43
50
|
const char *indented;
|
@@ -50,12 +57,24 @@ typedef struct {
|
|
50
57
|
} match_testcase_t;
|
51
58
|
|
52
59
|
typedef struct {
|
60
|
+
const char *t1;
|
61
|
+
const char *t2;
|
62
|
+
const char *expected;
|
63
|
+
} unify_testcase_t;
|
64
|
+
|
65
|
+
typedef struct {
|
66
|
+
const char *loc;
|
67
|
+
bool success;
|
68
|
+
|
53
69
|
const char *signature;
|
54
|
-
const char *
|
55
|
-
const char *
|
56
|
-
|
70
|
+
const char *args[NDT_MAX_ARGS];
|
71
|
+
const char *kwargs[NDT_MAX_ARGS];
|
72
|
+
|
57
73
|
int outer_dims;
|
58
|
-
|
74
|
+
int nin;
|
75
|
+
int nout;
|
76
|
+
int nargs;
|
77
|
+
const char *types[NDT_MAX_ARGS];
|
59
78
|
} typecheck_testcase_t;
|
60
79
|
|
61
80
|
typedef struct {
|
@@ -72,6 +91,7 @@ extern const indent_testcase_t indent_tests[];
|
|
72
91
|
extern const char *typedef_tests[];
|
73
92
|
extern const char *typedef_error_tests[];
|
74
93
|
extern const match_testcase_t match_tests[];
|
94
|
+
extern const unify_testcase_t unify_tests[];
|
75
95
|
extern const typecheck_testcase_t typecheck_tests[];
|
76
96
|
extern const numba_testcase_t numba_tests[];
|
77
97
|
extern const char *buffer_tests[];
|
@@ -75,7 +75,7 @@ int
|
|
75
75
|
test_array(void)
|
76
76
|
{
|
77
77
|
ndt_context_t *ctx;
|
78
|
-
ndt_t *t;
|
78
|
+
const ndt_t *t;
|
79
79
|
|
80
80
|
ctx = ndt_context_new();
|
81
81
|
if (ctx == NULL) {
|
@@ -105,7 +105,7 @@ test_array(void)
|
|
105
105
|
fprintf(stderr, "test_array (1 test case)\n");
|
106
106
|
}
|
107
107
|
|
108
|
-
|
108
|
+
ndt_decref(t);
|
109
109
|
ndt_context_del(ctx);
|
110
110
|
|
111
111
|
return 0;
|
@@ -42,7 +42,7 @@ const char *buffer_tests[] = {
|
|
42
42
|
"H", "I", "L", "Q",
|
43
43
|
"n", "N",
|
44
44
|
"e", "f", "d",
|
45
|
-
"
|
45
|
+
"Ze", "Zf", "Zd",
|
46
46
|
"s", "100s",
|
47
47
|
"T{b:a:100s:b:}",
|
48
48
|
|
@@ -52,21 +52,21 @@ const char *buffer_tests[] = {
|
|
52
52
|
"(2,3)b",
|
53
53
|
"(0,2,0)B",
|
54
54
|
"(1,2,3,4)h",
|
55
|
-
"(2,3,10)
|
56
|
-
"(20,2,100)
|
55
|
+
"(2,3,10)Zf",
|
56
|
+
"(20,2,100)Zd",
|
57
57
|
"(10,2)s",
|
58
58
|
"(10,2)100s",
|
59
59
|
"(10,2)T{b:a:100s:b:}",
|
60
60
|
"(10,2)T{b:a:100s:b:}",
|
61
61
|
|
62
|
-
"T{T{
|
62
|
+
"T{T{Zf:foo:(2,3)L:bar:}:a:100s:b:}",
|
63
63
|
|
64
64
|
"f -> f",
|
65
65
|
"ff -> f",
|
66
66
|
"fc -> f",
|
67
|
-
"
|
67
|
+
"Zf -> Q",
|
68
68
|
|
69
|
-
"T{b:a:100s:b:} -> T{T{
|
69
|
+
"T{b:a:100s:b:} -> T{T{Zf:foo:(2,3)L:bar:}:a:100s:b:}",
|
70
70
|
|
71
71
|
NULL
|
72
72
|
};
|
@@ -83,9 +83,9 @@ const char *buffer_roundtrip_tests[] = {
|
|
83
83
|
"=e", "<e", ">e",
|
84
84
|
"=f", "<f", ">f",
|
85
85
|
"=d", "<d", ">d",
|
86
|
-
"=
|
87
|
-
"=
|
88
|
-
"=
|
86
|
+
"=Ze", "<Ze", ">Ze",
|
87
|
+
"=Zf", "<Zf", ">Zf",
|
88
|
+
"=Zd", "<Zd", ">Zd",
|
89
89
|
|
90
90
|
"(2)=Q",
|
91
91
|
"(2)<Q",
|
@@ -98,16 +98,16 @@ const char *buffer_roundtrip_tests[] = {
|
|
98
98
|
"(2,3,4)>Q",
|
99
99
|
|
100
100
|
"T{=b:a:100s:b:}",
|
101
|
-
"T{T{=
|
101
|
+
"T{T{=Zf:foo:(2,3)=I:bar:}:a:100s:b:}",
|
102
102
|
|
103
103
|
NULL
|
104
104
|
};
|
105
105
|
|
106
106
|
const char *buffer_error_tests[] = {
|
107
107
|
"&",
|
108
|
-
"
|
109
|
-
"
|
110
|
-
"
|
108
|
+
"E",
|
109
|
+
"F",
|
110
|
+
"D",
|
111
111
|
"O", "O",
|
112
112
|
"T{O:a:100O:b:}",
|
113
113
|
|
@@ -131,7 +131,7 @@ const char *buffer_error_tests[] = {
|
|
131
131
|
"(10,2)T{b:a:100s:b:{",
|
132
132
|
"(10,2)T{b:a:100s:b:}}",
|
133
133
|
|
134
|
-
"T{T{
|
134
|
+
"T{T{Zf:foo:(2,3)%:bar:}:a:100s:b:}",
|
135
135
|
|
136
136
|
NULL
|
137
137
|
};
|
@@ -177,23 +177,23 @@ const match_testcase_t match_tests[] = {
|
|
177
177
|
"?bool",
|
178
178
|
1 },
|
179
179
|
|
180
|
-
{ "10 *
|
181
|
-
"10 *
|
180
|
+
{ "10 * signed",
|
181
|
+
"10 * signed",
|
182
182
|
0 },
|
183
183
|
|
184
|
-
{ "10 *
|
184
|
+
{ "10 * signed",
|
185
185
|
"10 * int32",
|
186
186
|
1 },
|
187
187
|
|
188
|
-
{ "
|
189
|
-
"
|
188
|
+
{ "signed",
|
189
|
+
"signed",
|
190
190
|
0 },
|
191
191
|
|
192
|
-
{ "
|
192
|
+
{ "signed",
|
193
193
|
"int64",
|
194
194
|
1 },
|
195
195
|
|
196
|
-
{ "?
|
196
|
+
{ "?signed",
|
197
197
|
"?int16",
|
198
198
|
1 },
|
199
199
|
|
@@ -206,7 +206,7 @@ const match_testcase_t match_tests[] = {
|
|
206
206
|
1 },
|
207
207
|
|
208
208
|
{ "?int8",
|
209
|
-
"?
|
209
|
+
"?signed",
|
210
210
|
0 },
|
211
211
|
|
212
212
|
{ "10 * int16",
|
@@ -245,20 +245,20 @@ const match_testcase_t match_tests[] = {
|
|
245
245
|
"?int64",
|
246
246
|
1 },
|
247
247
|
|
248
|
-
{ "10 *
|
248
|
+
{ "10 * unsigned",
|
249
249
|
"10 * uint16",
|
250
250
|
1 },
|
251
251
|
|
252
|
-
{ "10 *
|
252
|
+
{ "10 * unsigned",
|
253
253
|
"10 * uint8",
|
254
254
|
1 },
|
255
255
|
|
256
|
-
{ "
|
257
|
-
"
|
256
|
+
{ "unsigned",
|
257
|
+
"unsigned",
|
258
258
|
0 },
|
259
259
|
|
260
|
-
{ "?
|
261
|
-
"?
|
260
|
+
{ "?unsigned",
|
261
|
+
"?unsigned",
|
262
262
|
0 },
|
263
263
|
|
264
264
|
{ "10 * uint8",
|
@@ -309,11 +309,11 @@ const match_testcase_t match_tests[] = {
|
|
309
309
|
"?uint64",
|
310
310
|
1 },
|
311
311
|
|
312
|
-
{ "10 *
|
313
|
-
"10 *
|
312
|
+
{ "10 * float",
|
313
|
+
"10 * float",
|
314
314
|
0 },
|
315
315
|
|
316
|
-
{ "10 *
|
316
|
+
{ "10 * float",
|
317
317
|
"10 * float64",
|
318
318
|
1 },
|
319
319
|
|
@@ -325,30 +325,22 @@ const match_testcase_t match_tests[] = {
|
|
325
325
|
"?float64",
|
326
326
|
1 },
|
327
327
|
|
328
|
-
{ "10 *
|
328
|
+
{ "10 * complex",
|
329
329
|
"10 * complex128",
|
330
330
|
1 },
|
331
331
|
|
332
|
-
{ "10 *
|
332
|
+
{ "10 * complex",
|
333
333
|
"10 * complex64",
|
334
334
|
1 },
|
335
335
|
|
336
|
-
{ "
|
337
|
-
"
|
336
|
+
{ "complex",
|
337
|
+
"complex",
|
338
338
|
0 },
|
339
339
|
|
340
|
-
{ "
|
340
|
+
{ "complex",
|
341
341
|
"complex128",
|
342
342
|
1 },
|
343
343
|
|
344
|
-
{ "?Complex",
|
345
|
-
"?X",
|
346
|
-
0 },
|
347
|
-
|
348
|
-
{ "?X",
|
349
|
-
"?Complex",
|
350
|
-
0 },
|
351
|
-
|
352
344
|
{ "10 * complex64",
|
353
345
|
"10 * complex64",
|
354
346
|
1 },
|
@@ -2391,6 +2383,16 @@ const match_testcase_t match_tests[] = {
|
|
2391
2383
|
{ "... * F[N * 2 * float64]",
|
2392
2384
|
"!10 * 3 * 2 * float64", 0 },
|
2393
2385
|
|
2386
|
+
/* array... */
|
2387
|
+
{ "array... of float64",
|
2388
|
+
"2 * 3 * float64", 0 },
|
2389
|
+
|
2390
|
+
{ "array... of float64",
|
2391
|
+
"array of float64", 1 },
|
2392
|
+
|
2393
|
+
{ "array... of float64",
|
2394
|
+
"array of array of float64", 1 },
|
2395
|
+
|
2394
2396
|
/* END MANUALLY GENERATED */
|
2395
2397
|
|
2396
2398
|
{ NULL, NULL, 0 }
|
@@ -45,6 +45,8 @@ const char *parse_tests[] = {
|
|
45
45
|
"10 * L * Any",
|
46
46
|
"10 * 10 * L * Any",
|
47
47
|
"var * Any",
|
48
|
+
"array of Any",
|
49
|
+
"array of array of Any",
|
48
50
|
"... * Any",
|
49
51
|
"10 * Any",
|
50
52
|
"Any",
|
@@ -210,6 +212,8 @@ const char *parse_tests[] = {
|
|
210
212
|
"10 * (Any, ...)",
|
211
213
|
"(Any, ...)",
|
212
214
|
"10 * {...}",
|
215
|
+
"10 * Float of float64",
|
216
|
+
"10 * Float of float64 | Int of int8",
|
213
217
|
"{...}",
|
214
218
|
"10 * {a: Any}",
|
215
219
|
"{a: Any}",
|
@@ -255,19 +259,26 @@ const char *parse_tests[] = {
|
|
255
259
|
"1286044356 * LbR6JPFI * 2096958782 * uint8",
|
256
260
|
"categorical(-507014936.36, -25910, 'xM3Mys0XqH', 4265882500)",
|
257
261
|
"var * var * FixedBytesKind",
|
262
|
+
"array of FixedBytesKind",
|
263
|
+
"array of array of FixedBytesKind",
|
258
264
|
"var * var * var * fixed_bytes(size=2816010912, align=16)",
|
265
|
+
"array of fixed_bytes(size=2816010912, align=16)",
|
259
266
|
"36 * 16 * fixed_bytes(size=912328236, align=2)",
|
260
267
|
"var * var * float64",
|
268
|
+
"array of float64",
|
261
269
|
"var * var * var * ZcTmBXnKPi",
|
270
|
+
"array of ZcTmBXnKPi",
|
262
271
|
"categorical('omhwkoWVWw', 43, 946986991)",
|
263
272
|
"var * float32",
|
264
273
|
"var * var * var * uint16",
|
265
274
|
"var * var * var * ScalarKind",
|
275
|
+
"array of ScalarKind",
|
266
276
|
"fixed_bytes(size=280180380, align=2)",
|
267
277
|
"fixed_string(1901614748, 'utf-32')",
|
268
278
|
"var * M7",
|
269
279
|
"var * bytes(align=2)",
|
270
280
|
"var * var * ULy8(char)",
|
281
|
+
"array of ULy8(char)",
|
271
282
|
"fixed_bytes(size=1882259744, align=16)",
|
272
283
|
"categorical(-136747211.015, -58, -83)",
|
273
284
|
"3739637665 * 1476113530 * 1701021063 * IKd * 450514382 * WXn",
|
@@ -275,6 +286,7 @@ const char *parse_tests[] = {
|
|
275
286
|
"var * R8KFFEabJ",
|
276
287
|
"var * QoFb",
|
277
288
|
"var * fixed_string(1233383142, 'utf-32')",
|
289
|
+
"array of fixed_string(1233383142, 'utf-32')",
|
278
290
|
"fixed_bytes(size=2882797968, align=4)",
|
279
291
|
"fixed_bytes(size=1233209904, align=8)",
|
280
292
|
"WhRsMHHXYp(categorical(145))",
|
@@ -299,6 +311,7 @@ const char *parse_tests[] = {
|
|
299
311
|
"(int32, float64) -> int32",
|
300
312
|
"int32, float64 -> int32",
|
301
313
|
"(...) -> int32",
|
314
|
+
"void -> float32",
|
302
315
|
|
303
316
|
"10 * defined_t",
|
304
317
|
"defined_t",
|
@@ -306,6 +319,12 @@ const char *parse_tests[] = {
|
|
306
319
|
"10 * foo_t",
|
307
320
|
"foo_t",
|
308
321
|
|
322
|
+
/* bfloat16 */
|
323
|
+
"10 * bfloat16",
|
324
|
+
|
325
|
+
/* bcomplex32 */
|
326
|
+
"10 * bcomplex32",
|
327
|
+
|
309
328
|
/* Half-float */
|
310
329
|
"10 * float16",
|
311
330
|
"10 * complex32",
|
@@ -326,6 +345,14 @@ const char *parse_tests[] = {
|
|
326
345
|
"var(offsets=[0,10]) * var(offsets=[0,1,3,6,10,15,21,28,36,45,55]) * float64",
|
327
346
|
"var(offsets=[0,2]) * var(offsets=[0,3,7]) * var(offsets=[0,5,11,18,26,35,45,56]) * float64",
|
328
347
|
|
348
|
+
/* Tagged unions */
|
349
|
+
"2 * 3 * ThisRecord of {first: (int64, complex128), second: string}",
|
350
|
+
"2 * 3 * ThisRecord of {first: (int64, complex128), second: string} | ThatTuple of (bytes, string)",
|
351
|
+
"2 * 3 * Int of int64 | ThisRecord of {first: (int64, complex128), second: string} | ThatTuple of (bytes, string)",
|
352
|
+
"array of Int of int64 | ThisRecord of {first: (int64, complex128), second: uint8} | ThatTuple of (float64, float64)",
|
353
|
+
|
354
|
+
"fixed(shape=10) * complex128",
|
355
|
+
|
329
356
|
/* Short ref notation */
|
330
357
|
"&float64",
|
331
358
|
"&2 * 10 * {a: (&int64, &float64)}",
|
@@ -334,14 +361,24 @@ const char *parse_tests[] = {
|
|
334
361
|
"!2 * 10 * float16",
|
335
362
|
"!2 * 10 * {a: !2 * 10 * float16}",
|
336
363
|
"!2 * 10 * {a: !2 * 10 * float16}",
|
364
|
+
"!2 * 10 * bfloat16",
|
365
|
+
"!2 * 10 * {a: !2 * 10 * bfloat16}",
|
366
|
+
"!2 * 10 * {a: !2 * 10 * bfloat16}",
|
337
367
|
"!2 * 10 * {a: !2 * 10 * (int64, string)}",
|
338
368
|
|
369
|
+
/* Nested variable dimensions */
|
370
|
+
"var(offsets=[0, 2]) * var(offsets=[0,4,10]) * (var(offsets=[0,2]) * var(offsets=[0,3,5]) * float32, int64)",
|
371
|
+
|
339
372
|
"2 * N * {a: !2 * 10 * (int64, string)}",
|
340
373
|
|
341
374
|
/* Overflow */
|
342
375
|
"9223372036854775807 * uint8",
|
343
376
|
"1 * 1 * 9223372036854775807 * uint8",
|
344
377
|
|
378
|
+
/* var..., array... */
|
379
|
+
"var... * (int8, int64)",
|
380
|
+
"array... of (int8, int64)",
|
381
|
+
|
345
382
|
/* END MANUALLY GENERATED */
|
346
383
|
|
347
384
|
NULL
|
@@ -396,6 +396,7 @@ const char *parse_error_tests[] = {
|
|
396
396
|
"?[10 * 10 $ X * Any$",
|
397
397
|
"?[10 * 10 $ X * Any$",
|
398
398
|
"$var * Any",
|
399
|
+
"$array of Any",
|
399
400
|
"=var * Any",
|
400
401
|
"$[var * Any]",
|
401
402
|
"xxx[var * Any]",
|
@@ -15925,6 +15926,17 @@ const char *parse_error_tests[] = {
|
|
15925
15926
|
"?=10 * {x: int64$ a: Any}]",
|
15926
15927
|
"?[10 * {x: int64$ a: Any}$",
|
15927
15928
|
"?[10 * {x: int64$ a: Any}$",
|
15929
|
+
"?10 * $Tag of int64",
|
15930
|
+
"?10 * Tag $of int64",
|
15931
|
+
"?10 * Tag of $int64",
|
15932
|
+
"?10 * Tag of int64$",
|
15933
|
+
"?10 * Tag of int64$",
|
15934
|
+
"?10 * A of int64 $| B of float64",
|
15935
|
+
"?10 * A of int64 | $B of float64",
|
15936
|
+
"?10 * A of int64 | B $of float64",
|
15937
|
+
"?10 * A of int64 | B of $float64",
|
15938
|
+
"?10 * A of int64 | B of float64$",
|
15939
|
+
"?10 * A of int64 | B of float64$",
|
15928
15940
|
"{x: int64$ a: Any}",
|
15929
15941
|
"?{x: int64$ a: Any}",
|
15930
15942
|
"?({x: int64$ a: Any})",
|
@@ -27736,10 +27748,13 @@ const char *parse_error_tests[] = {
|
|
27736
27748
|
"fixed_bytes(1342281638, align=xxx)",
|
27737
27749
|
"Y5vtk * var * 905934102 * 1310846899 * fixed[3359714476] * LKgwlEDf * 2822334059 * ; PKI_8Ob8(fixed_string(795133707))",
|
27738
27750
|
"?(E00Lr_HMM * ... * UAzC * var * M4nJaK * , var * var * 1002912577 * PZPD)",
|
27751
|
+
"?(E00Lr_HMM * ... * UAzC * array of M4nJaK * , array of array of 1002912577 * PZPD)",
|
27739
27752
|
"?ref(fixed_string(3865363101, 'ucs-10'))",
|
27740
27753
|
"fixed[3622391868] * SUc9IusL * CaPaWth4m * CEwSPY_6Z * HPW * SbvgP * 29709a97707 * 1300296096 * Fixed * VA8O",
|
27741
27754
|
"fixed[1603107638)] * 2764230114 * IRXLe * Odlw6RSx * ... * Fixed * var * 2484716214 * ScalarKind",
|
27755
|
+
"fixed[1603107638)] * 2764230114 * IRXLe * Odlw6RSx * ... * Fixed * array of 2484716214 * ScalarKind",
|
27742
27756
|
"ZmQxcy * var * 1098824011 * var * var * (,,,)",
|
27757
|
+
"ZmQxcy * array of 1098824011 of array of array * (,,,)",
|
27743
27758
|
"ref(?x1869144321 * Y3_Dm0 * int32)",
|
27744
27759
|
"categorical[\"a\", 1619552300, 490620000000000000000000000000000000000000, 18772, -84, 'l']",
|
27745
27760
|
"?fixed[2889099917] * ... * var * JgdIXy5M * var * Wr2[categorical['gLsA7BM43V', 16460]]",
|
@@ -27747,6 +27762,7 @@ const char *parse_error_tests[] = {
|
|
27747
27762
|
"?var * Fixed * FdN_HERKv * 4204012258 * var * fixed[233758212000000000000000000000000000] * Fixed * FixedBytesKind",
|
27748
27763
|
"?categorical[30987, -16536, -270032755.642, -189, -823800099]",
|
27749
27764
|
"?Fixed * 1998811088 * var * var * var * var * bytes(align=-58)",
|
27765
|
+
"?Fixed * 1998811088 * array of array of array of array of bytes(align=-58)",
|
27750
27766
|
"257051452 * QRgi * Fixed * 4147849906 * var * P4h8i8 * var * 3924618173 * fixed[207255421] * int100",
|
27751
27767
|
"categorical[408786241.474, 2840608325, 44038, 1763886348, \"jOt', 24]",
|
27752
27768
|
"?[OQ78AW32d[categorical[49]%]",
|
@@ -27833,6 +27849,26 @@ const char *parse_error_tests[] = {
|
|
27833
27849
|
"10 * 2 * (Dims... * int64)",
|
27834
27850
|
"(Dims... * M * N * T, Dims... * N * P * T)",
|
27835
27851
|
|
27852
|
+
/* Nested variable dimensions */
|
27853
|
+
"var(offsets=[0,2]) * var(offsets=[0,4,10]) * (var(offsets=[0,2]) * var(offsets=[0,3]) * float32, int64)",
|
27854
|
+
"var(offsets=[0,2]) * var(offsets=[0,4,10]) * (var(offsets=[0,1]) * var(offsets=[0,3,5]) * float32, int64)",
|
27855
|
+
"var(offsets=[0,2]) * var(offsets=[0,4]) * (var(offsets=[0,2]) * var(offsets=[0,3,5]) * float32, int64)",
|
27856
|
+
"var(offsets=[0,1]) * var(offsets=[0,4,10]) * (var(offsets=[0,2]) * var(offsets=[0,3,5]) * float32, int64)",
|
27857
|
+
"var(offsets=[0,2]) * var(offsets=[0,4,10]) * (var(offsets=[0,2]) * var(offsets=[0,3,5]) * float32, intXX)",
|
27858
|
+
"var(offsets=[0,2]) * var(offsets=[0,4,10]) * (var(offsets=[0,2]) * var(offsets=[0,3,5)) * float32, int64)",
|
27859
|
+
"var(offsets=[0,2]) * var(offsets=[0,4,10]) * (var(offsets=(0,2]) * var(offsets=[0,3,5]) * float32, int64)",
|
27860
|
+
|
27861
|
+
/* Unions */
|
27862
|
+
"2 * 3 * []",
|
27863
|
+
"Array of 2 * 3 * int64 | $Record of { s: int64 }",
|
27864
|
+
"Array of 2 * 3 * int64 | Record of { s: int64XX }",
|
27865
|
+
"This of int64 | Array of 2 * 3 * (float64, ref(int64))",
|
27866
|
+
|
27867
|
+
/* var... and array... */
|
27868
|
+
"var... of float64",
|
27869
|
+
"var... * (int64, str)",
|
27870
|
+
"array... * float64",
|
27871
|
+
"array... * (int64, str)",
|
27836
27872
|
/* END MANUALLY GENERATED */
|
27837
27873
|
|
27838
27874
|
NULL
|