diff --git a/json.zig b/json.zig index fc47d152e9cd7e977e57ddff2d47f2c7df1b4e2a..00dfbf61454cf546545d6ae4fd45eb327382ce58 100644 --- a/json.zig +++ b/json.zig @@ -27,8 +27,7 @@ pub fn parse(alloc: std.mem.Allocator, path: string, inreader: anytype, options: std.debug.assert(try p.addArray(alloc, &.{}) == .empty_array); std.debug.assert(try p.addObject(alloc, &ObjectHashMap{}) == .empty_object); - const root_err: (@TypeOf(inreader).Error || Error)!ValueIndex = @errorCast(parseElement(alloc, &p)); - const root = try root_err; + const root = try parseElementPrecise(alloc, &p, @TypeOf(inreader).Error || Error); if (p.avail() > 0) return error.MalformedJson; const data = try p.parser.data.toOwnedSlice(alloc); @@ -38,6 +37,10 @@ pub fn parse(alloc: std.mem.Allocator, path: string, inreader: anytype, options: }; } +fn parseElementPrecise(alloc: std.mem.Allocator, p: *Parser, comptime E: type) E!ValueIndex { + return @errorCast(parseElement(alloc, p)); +} + fn parseElement(alloc: std.mem.Allocator, p: *Parser) anyerror!ValueIndex { const t = tracer.trace(@src(), "", .{}); defer t.end();