@@ -324,7 +324,9 @@ pub const StreamingParser = struct {
324324 p .complete = true ;
325325 p .state = State .TopLevelEnd ;
326326 },
327- else = > {},
327+ else = > {
328+ p .state = State .ValueEnd ;
329+ },
328330 }
329331
330332 token .* = Token .initMarker (Token .Id .ObjectEnd );
@@ -348,7 +350,9 @@ pub const StreamingParser = struct {
348350 p .complete = true ;
349351 p .state = State .TopLevelEnd ;
350352 },
351- else = > {},
353+ else = > {
354+ p .state = State .ValueEnd ;
355+ },
352356 }
353357
354358 token .* = Token .initMarker (Token .Id .ArrayEnd );
@@ -970,14 +974,18 @@ pub fn validate(s: []const u8) bool {
970974 var token1 : ? Token = undefined ;
971975 var token2 : ? Token = undefined ;
972976
973- p .feed (c , * token1 , * token2 ) catch | err | {
977+ p .feed (c , & token1 , & token2 ) catch | err | {
974978 return false ;
975979 };
976980 }
977981
978982 return p .complete ;
979983}
980984
985+ test "json validate" {
986+ debug .assert (validate ("{}" ));
987+ }
988+
981989const Allocator = std .mem .Allocator ;
982990const ArenaAllocator = std .heap .ArenaAllocator ;
983991const ArrayList = std .ArrayList ;
@@ -1230,7 +1238,7 @@ pub const Parser = struct {
12301238 _ = p .stack .pop ();
12311239 p .state = State .ObjectKey ;
12321240 },
1233- else = > {
1241+ Token . Id . ObjectEnd , Token . Id . ArrayEnd = > {
12341242 unreachable ;
12351243 },
12361244 }
@@ -1270,7 +1278,7 @@ pub const Parser = struct {
12701278 Token .Id .Null = > {
12711279 try array .append (Value .Null );
12721280 },
1273- else = > {
1281+ Token . Id . ObjectEnd = > {
12741282 unreachable ;
12751283 },
12761284 }
0 commit comments