aboutsummaryrefslogtreecommitdiff
path: root/core/encoding/json
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2019-12-22 12:03:48 +0000
committergingerBill <bill@gingerbill.org>2019-12-22 12:03:48 +0000
commitd1c9fd4e012e16cee73e9ef0af716caf34430d81 (patch)
tree048a9dd6ed2294d685761e31081620a924ee6ef9 /core/encoding/json
parent45937306321df28266c793b7225eb10ad3d741e2 (diff)
Implement `#complete switch` by default, replace with `#partial switch` #511
Diffstat (limited to 'core/encoding/json')
-rw-r--r--core/encoding/json/marshal.odin4
-rw-r--r--core/encoding/json/parser.odin4
-rw-r--r--core/encoding/json/types.odin2
-rw-r--r--core/encoding/json/validator.odin17
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;
}