Implement #complete switch by default, replace with #partial switch #511

This commit is contained in:
gingerBill
2019-12-22 12:03:48 +00:00
parent 4593730632
commit d1c9fd4e01
19 changed files with 263 additions and 227 deletions
+8 -9
View File
@@ -91,28 +91,27 @@ validate_array :: proc(p: ^Parser) -> bool {
validate_value :: proc(p: ^Parser) -> bool {
token := p.curr_token;
using Kind;
switch token.kind {
case Null, False, True:
#partial switch token.kind {
case .Null, .False, .True:
advance_token(p);
return true;
case Integer, Float:
case .Integer, .Float:
advance_token(p);
return true;
case String:
case .String:
advance_token(p);
return is_valid_string_literal(token.text, p.spec);
case Open_Brace:
case .Open_Brace:
return validate_object(p);
case Open_Bracket:
case .Open_Bracket:
return validate_array(p);
case:
if p.spec == Specification.JSON5 {
switch token.kind {
case Infinity, NaN:
#partial switch token.kind {
case .Infinity, .NaN:
advance_token(p);
return true;
}