From 29587071de6dd3338e8eb76d4e0307af69a2d61a Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 4 Jun 2024 12:49:17 -0700 Subject: [PATCH] put the errorCast use in its own function see zig#20177 for more info --- json.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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(); -- 2.54.0