jsonbuilder: add debug_validate to state

If debug validation is enabled, panic on invalid state errors.

For example, calling close on an already closed jsonbuilder
object.
pull/5115/head
Jason Ish 5 years ago committed by Victor Julien
parent ca6b70ea1b
commit 07e88a7479

@ -164,7 +164,10 @@ impl JsonBuilder {
self.pop_state(); self.pop_state();
Ok(self) Ok(self)
} }
_ => Err(JsonError::InvalidState), State::None => {
debug_validate_fail!("invalid state");
Err(JsonError::InvalidState)
},
} }
} }
@ -226,6 +229,7 @@ impl JsonBuilder {
self.buf.push_str(",\""); self.buf.push_str(",\"");
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -247,6 +251,7 @@ impl JsonBuilder {
self.buf.push(','); self.buf.push(',');
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -268,6 +273,7 @@ impl JsonBuilder {
self.buf.push(','); self.buf.push(',');
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -292,7 +298,10 @@ impl JsonBuilder {
self.encode_string(val)?; self.encode_string(val)?;
Ok(self) Ok(self)
} }
_ => Err(JsonError::InvalidState), _ => {
debug_validate_fail!("invalid state");
Err(JsonError::InvalidState)
}
} }
} }
@ -313,6 +322,7 @@ impl JsonBuilder {
self.buf.push(','); self.buf.push(',');
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -329,6 +339,7 @@ impl JsonBuilder {
self.set_state(State::ObjectNth); self.set_state(State::ObjectNth);
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -352,6 +363,7 @@ impl JsonBuilder {
self.buf.push(','); self.buf.push(',');
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -365,7 +377,10 @@ impl JsonBuilder {
match self.current_state() { match self.current_state() {
State::ObjectNth => self.buf.push(','), State::ObjectNth => self.buf.push(','),
State::ObjectFirst => self.set_state(State::ObjectNth), State::ObjectFirst => self.set_state(State::ObjectNth),
_ => return Err(JsonError::InvalidState), _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState);
}
} }
self.buf.push('"'); self.buf.push('"');
self.buf.push_str(key); self.buf.push_str(key);
@ -395,6 +410,7 @@ impl JsonBuilder {
self.set_state(State::ObjectNth); self.set_state(State::ObjectNth);
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -414,6 +430,7 @@ impl JsonBuilder {
self.set_state(State::ObjectNth); self.set_state(State::ObjectNth);
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -439,6 +456,7 @@ impl JsonBuilder {
self.set_state(State::ObjectNth); self.set_state(State::ObjectNth);
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }
@ -458,6 +476,7 @@ impl JsonBuilder {
self.set_state(State::ObjectNth); self.set_state(State::ObjectNth);
} }
_ => { _ => {
debug_validate_fail!("invalid state");
return Err(JsonError::InvalidState); return Err(JsonError::InvalidState);
} }
} }

Loading…
Cancel
Save