2 // Copyright 2004-present Facebook. All Rights Reserved.
5 echo "================== literals ==================\n";
7 __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[]),
8 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
11 __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[1, 2, 3, 4]),
12 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
16 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
20 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
24 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
27 dict
['a' => 1, 'b' => 2, 'c' => 3],
28 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
32 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
35 keyset
['a', 'b', 'c'],
36 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
40 __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[__hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[1, 2]), __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[3, 4])]),
41 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
44 vec
[vec
[1, 2], vec
[3, 4]],
45 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
48 dict
['a' => dict
['c' => 1, 'd' => 2], 'b' => dict
['e' => 3, 'f' => 4]],
49 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
53 __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[1, vec
[2, 3, 4], __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[5, 6, 7]), keyset
[8, 9, 10], dict
['a' => 11, 'b' => 12]]),
54 JSON_FB_WARN_DICTS | JSON_FB_WARN_KEYSETS | JSON_FB_WARN_PHP_ARRAYS
58 function test($name, $options) {
59 echo "==================== $name =========================\n";
60 var_dump(json_encode(__hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[]), $options));
61 var_dump(json_encode(__hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[1, 2, 3, 4]), $options));
62 var_dump(json_encode(vec
[], $options));
63 var_dump(json_encode(vec
[1, 2, 3, 4], $options));
64 var_dump(json_encode(dict
[], $options));
65 var_dump(json_encode(dict
['a' => 1, 'b' => 2, 'c' => 3], $options));
66 var_dump(json_encode(dict
[0 => 'a', 1 => 'b', 2 => 'c'], $options));
67 var_dump(json_encode(darray
[], $options));
68 var_dump(json_encode(darray
['a' => 1, 'b' => 2, 'c' => 3], $options));
69 var_dump(json_encode(darray
[0 => 'a', 1 => 'b', 2 => 'c'], $options));
70 var_dump(json_encode(keyset
[], $options));
71 var_dump(json_encode(keyset
['a', 'b', 'c'], $options));
73 var_dump(json_encode(__hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[__hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[1, 2]), __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[3, 4])]), $options));
74 var_dump(json_encode(vec
[vec
[1, 2], vec
[3, 4]], $options));
76 dict
['a' => dict
['c' => 1, 'd' => 2], 'b' => dict
['e' => 3, 'f' => 4]],
81 __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[1, vec
[2, 3, 4], __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[5, 6, 7]), keyset
[8, 9, 10], dict
['a' => 11, 'b' => 12]]),
85 $obj = new stdclass();
86 $obj->a
= __hhvm_intrinsics\
dummy_cast_to_kindofarray(vec
[1, 2, 3]);
87 $obj->b
= vec
[1, 2, 3];
88 $obj->c
= dict
['a' => 1, 'b' => 2];
89 $obj->d
= keyset
['a', 'b', 'c'];
90 var_dump(json_encode($obj, $options));
92 var_dump(json_encode(new LateInitClass(), $options));
93 } catch (Exception
$ex) {
94 var_dump($ex->getMessage());
99 <<__LateInit
>> public string $prop;
103 function main_json_encode() {
107 test("force PHP", JSON_FB_FORCE_PHP_ARRAYS
);
108 test("dict warn", JSON_FB_WARN_DICTS
);
109 test("keyset warn", JSON_FB_WARN_KEYSETS
);
110 test("PHP warn", JSON_FB_WARN_PHP_ARRAYS
);
111 test("empty darrays", JSON_FB_WARN_EMPTY_DARRAYS
);
112 test("vec-like darrays", JSON_FB_WARN_VEC_LIKE_DARRAYS
);
113 test("dict-like darrays", JSON_FB_WARN_DICT_LIKE_DARRAYS
);
115 JSON_FB_WARN_EMPTY_DARRAYS |
116 JSON_FB_WARN_VEC_LIKE_DARRAYS |
117 JSON_FB_WARN_DICT_LIKE_DARRAYS
119 test("warn both", JSON_FB_WARN_DICTS | JSON_FB_WARN_PHP_ARRAYS
);
120 test("force + dict warn", JSON_FB_WARN_DICTS | JSON_FB_FORCE_PHP_ARRAYS
);
121 test("force + PHP warn", JSON_FB_WARN_PHP_ARRAYS | JSON_FB_FORCE_PHP_ARRAYS
);
124 JSON_FB_WARN_PHP_ARRAYS | JSON_FB_WARN_DICTS | JSON_FB_FORCE_PHP_ARRAYS
126 test("ignore lateinit", JSON_FB_IGNORE_LATEINIT
);
127 echo "==================== no repeated warnings =========================\n";
128 var_dump(json_encode(vec
[
130 darray
[0 => 'a'], darray
[0 => 'a'],
131 darray
[1 => 'a'], darray
[1 => 'a'],
132 dict
[0 => 'a'], dict
[0 => 'a'],
133 ], JSON_FB_WARN_EMPTY_DARRAYS |
134 JSON_FB_WARN_VEC_LIKE_DARRAYS |
135 JSON_FB_WARN_DICT_LIKE_DARRAYS |
136 JSON_FB_WARN_PHP_ARRAYS |