diff options
| author | gingerBill <bill@gingerbill.org> | 2019-12-22 12:03:48 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2019-12-22 12:03:48 +0000 |
| commit | d1c9fd4e012e16cee73e9ef0af716caf34430d81 (patch) | |
| tree | 048a9dd6ed2294d685761e31081620a924ee6ef9 /core/encoding/json | |
| parent | 45937306321df28266c793b7225eb10ad3d741e2 (diff) | |
Implement `#complete switch` by default, replace with `#partial switch` #511
Diffstat (limited to 'core/encoding/json')
| -rw-r--r-- | core/encoding/json/marshal.odin | 4 | ||||
| -rw-r--r-- | core/encoding/json/parser.odin | 4 | ||||
| -rw-r--r-- | core/encoding/json/types.odin | 2 | ||||
| -rw-r--r-- | core/encoding/json/validator.odin | 17 |
4 files changed, 13 insertions, 14 deletions
diff --git a/core/encoding/json/marshal.odin b/core/encoding/json/marshal.odin index f3d894f3f..4e4447143 100644 --- a/core/encoding/json/marshal.odin +++ b/core/encoding/json/marshal.odin @@ -40,7 +40,7 @@ marshal_arg :: proc(b: ^strings.Builder, v: any) -> Marshal_Error { ti := type_info_base(type_info_of(v.id)); a := any{v.data, ti.id}; - switch info in ti.variant { + #partial switch info in ti.variant { case Type_Info_Named: panic("Unreachable"); @@ -282,7 +282,7 @@ marshal_arg :: proc(b: ^strings.Builder, v: any) -> Marshal_Error { return false; } t := runtime.type_info_base(ti); - switch info in t.variant { + #partial switch info in t.variant { case runtime.Type_Info_Integer: switch info.endianness { case .Platform: return false; diff --git a/core/encoding/json/parser.odin b/core/encoding/json/parser.odin index 36a68f31c..8503edd98 100644 --- a/core/encoding/json/parser.odin +++ b/core/encoding/json/parser.odin @@ -70,7 +70,7 @@ parse_value :: proc(p: ^Parser) -> (value: Value, err: Error) { defer value.end = token_end_pos(p.prev_token); token := p.curr_token; - switch token.kind { + #partial switch token.kind { case Kind.Null: value.value = Null{}; advance_token(p); @@ -105,7 +105,7 @@ parse_value :: proc(p: ^Parser) -> (value: Value, err: Error) { case: if p.spec == Specification.JSON5 { - switch token.kind { + #partial switch token.kind { case Kind.Infinity: inf: u64 = 0x7ff0000000000000; if token.text[0] == '-' { diff --git a/core/encoding/json/types.odin b/core/encoding/json/types.odin index 036fe50b4..1c106d591 100644 --- a/core/encoding/json/types.odin +++ b/core/encoding/json/types.odin @@ -56,7 +56,7 @@ Error :: enum { destroy_value :: proc(value: Value) { - switch v in value.value { + #partial switch v in value.value { case Object: for key, elem in v { delete(key); diff --git a/core/encoding/json/validator.odin b/core/encoding/json/validator.odin index 17073f102..77339bbc3 100644 --- a/core/encoding/json/validator.odin +++ b/core/encoding/json/validator.odin @@ -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; } |