| ... | ... | @@ -1188,7 +1188,7 @@ pub const Parser = struct { |
| 1188 | 1188 | } |
| 1189 | 1189 | |
| 1190 | 1190 | var value = p.stack.pop(); |
| 1191 | | try p.pushToParent(value); |
| 1191 | try p.pushToParent(&value); |
| 1192 | 1192 | }, |
| 1193 | 1193 | Token.Id.String => { |
| 1194 | 1194 | try p.stack.append(try p.parseString(allocator, token, input, i)); |
| ... | ... | @@ -1251,7 +1251,7 @@ pub const Parser = struct { |
| 1251 | 1251 | } |
| 1252 | 1252 | |
| 1253 | 1253 | var value = p.stack.pop(); |
| 1254 | | try p.pushToParent(value); |
| 1254 | try p.pushToParent(&value); |
| 1255 | 1255 | }, |
| 1256 | 1256 | Token.Id.ObjectBegin => { |
| 1257 | 1257 | try p.stack.append(Value{ .Object = ObjectMap.init(allocator) }); |
| ... | ... | @@ -1312,20 +1312,19 @@ pub const Parser = struct { |
| 1312 | 1312 | } |
| 1313 | 1313 | } |
| 1314 | 1314 | |
| 1315 | | fn pushToParent(p: *Parser, value: Value) !void { |
| 1316 | | switch (p.stack.at(p.stack.len - 1)) { |
| 1315 | fn pushToParent(p: *Parser, value: *const Value) !void { |
| 1316 | switch (p.stack.toSlice()[p.stack.len - 1]) { |
| 1317 | 1317 | // Object Parent -> [ ..., object, <key>, value ] |
| 1318 | 1318 | Value.String => |key| { |
| 1319 | 1319 | _ = p.stack.pop(); |
| 1320 | 1320 | |
| 1321 | 1321 | var object = &p.stack.items[p.stack.len - 1].Object; |
| 1322 | | _ = try object.put(key, value); |
| 1322 | _ = try object.put(key, value.*); |
| 1323 | 1323 | p.state = State.ObjectKey; |
| 1324 | 1324 | }, |
| 1325 | 1325 | // Array Parent -> [ ..., <array>, value ] |
| 1326 | | Value.Array => { |
| 1327 | | var array = &p.stack.items[p.stack.len - 1].Array; |
| 1328 | | try array.append(value); |
| 1326 | Value.Array => |*array| { |
| 1327 | try array.append(value.*); |
| 1329 | 1328 | p.state = State.ArrayValue; |
| 1330 | 1329 | }, |
| 1331 | 1330 | else => { |