diff --git a/packages/coln-flir-rs/src/ir/mod.rs b/packages/coln-flir-rs/src/ir/mod.rs index 7d3570b1..5a146e15 100644 --- a/packages/coln-flir-rs/src/ir/mod.rs +++ b/packages/coln-flir-rs/src/ir/mod.rs @@ -36,8 +36,8 @@ impl Serialize for BuiltinTy { S: Serializer, { match self { - BuiltinTy::BuiltinInt => serializer.serialize_str("int"), - BuiltinTy::BuiltinStr => serializer.serialize_str("string"), + BuiltinTy::BuiltinInt => serializer.serialize_str("builtinInt"), + BuiltinTy::BuiltinStr => serializer.serialize_str("builtinString"), } } } @@ -49,9 +49,12 @@ impl<'de> Deserialize<'de> for BuiltinTy { { let s = String::deserialize(deserializer)?; match s.as_str() { - "int" => Ok(BuiltinTy::BuiltinInt), - "string" => Ok(BuiltinTy::BuiltinStr), - _ => Err(DeError::unknown_variant(&s, &["int", "string"])), + "builtinInt" => Ok(BuiltinTy::BuiltinInt), + "builtinString" => Ok(BuiltinTy::BuiltinStr), + _ => Err(DeError::unknown_variant( + &s, + &["builtinInt", "builtinString"], + )), } } } @@ -59,8 +62,14 @@ impl<'de> Deserialize<'de> for BuiltinTy { #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(tag = "tag", rename_all = "camelCase")] pub enum ColType { - RowId { path: Path }, - BuiltinTy { builtin_ty: BuiltinTy }, + RowId { + path: Path, + }, + #[serde(rename = "builtin")] + BuiltinTy { + #[serde(rename = "type")] + builtin_ty: BuiltinTy, + }, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] diff --git a/packages/coln-flir-rs/tests/data/Prim.json b/packages/coln-flir-rs/tests/data/Prim.json new file mode 100644 index 00000000..dd64b14a --- /dev/null +++ b/packages/coln-flir-rs/tests/data/Prim.json @@ -0,0 +1 @@ +{"entities":[{"path":[["T"],["N"]],"value":{"entityVariant":{"tag":"table"},"columns":[{"path":[["a"]],"type":{"tag":"builtin","type":"builtinInt"}}],"primaryKey":null}},{"path":[["T"],["S"]],"value":{"entityVariant":{"tag":"table"},"columns":[{"path":[["a"]],"type":{"tag":"builtin","type":"builtinString"}}],"primaryKey":null}}],"rules":[{"path":[["T"],["N"],["foreignKey"]],"value":{"ruleVariant":"enforced","varNames":[[["a"]]],"varTypes":[{"tag":"builtin","type":"builtinInt"}],"antecedents":[{"tag":"atom","atom":{"entity":[["T"],["N"]],"rowId":null,"values":[{"column":0,"term":{"tag":"var","index":0}}]}}],"consequents":[]}},{"path":[["T"],["S"],["foreignKey"]],"value":{"ruleVariant":"enforced","varNames":[[["a"]]],"varTypes":[{"tag":"builtin","type":"builtinString"}],"antecedents":[{"tag":"atom","atom":{"entity":[["T"],["S"]],"rowId":null,"values":[{"column":0,"term":{"tag":"var","index":0}}]}}],"consequents":[]}}]} \ No newline at end of file diff --git a/packages/coln-flir-rs/tests/test_theory.rs b/packages/coln-flir-rs/tests/test_theory.rs index 0e9ee129..21f75d2a 100644 --- a/packages/coln-flir-rs/tests/test_theory.rs +++ b/packages/coln-flir-rs/tests/test_theory.rs @@ -7,7 +7,7 @@ mod common; use coln_flir_rs::ir::Path; // TODO add more theory json files -const THEORY_FIXTURES: &[&str] = &["Graph.json"]; +const THEORY_FIXTURES: &[&str] = &["Graph.json", "Prim.json"]; #[test] fn deserialises_all_theory_fixtures() {