message: Use raw identifiers for type fields
  This is more of a stylistic choice: [raw identifiers][ri] are a
  bit ugly, but allow us to stick closer to the syntax reference.
  [ri]:
diff: @@ -11,9 +11,8 @@ pub struct Function {
  pub name: String,
  #[serde(default, skip_serializing_if = "Vec::is_empty")]
  pub args: Vec<Argument>,
  - #[serde(rename = "type")]
  #[serde(skip_serializing_if = "Option::is_none")]
  - pub return_type: Option<Type>,
  + pub r#type: Option<Type>,
  #[serde(default, skip_serializing_if = "Vec::is_empty")]
  pub instrs: Vec<Code>,
  }
  @@ -21,8 +20,7 @@ pub struct Function {
  #[derive(Serialize, Deserialize, Debug, Clone)]
  pub struct Argument {
  pub name: String,
  - #[serde(rename = "type")]
  - pub arg_type: Type,
  + pub r#type: Type,
  }
  #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
  @@ -38,15 +36,13 @@ pub enum Instruction {
  Constant {
  op: ConstOps,
  dest: String,
  - #[serde(rename = "type")]
  - const_type: Type,
  + r#type: Type,
  value: Literal,
  },
  Value {
  op: ValueOps,
  dest: String,
  - #[serde(rename = "type")]
  - op_type: Type,
  + r#type: Type,
  #[serde(default, skip_serializing_if = "Vec::is_empty")]
  args: Vec<String>,
  #[serde(default, skip_serializing_if = "Vec::is_empty")]
  