diff --git a/crates/dojo/core-cairo-test/Scarb.lock b/crates/dojo/core-cairo-test/Scarb.lock index 8c428deae3..6d9a3fcab9 100644 --- a/crates/dojo/core-cairo-test/Scarb.lock +++ b/crates/dojo/core-cairo-test/Scarb.lock @@ -3,14 +3,14 @@ version = 1 [[package]] name = "dojo" -version = "1.0.10" +version = "1.0.11" dependencies = [ "dojo_plugin", ] [[package]] name = "dojo_cairo_test" -version = "1.0.0-rc.0" +version = "1.0.11" dependencies = [ "dojo", ] diff --git a/crates/dojo/core-cairo-test/Scarb.toml b/crates/dojo/core-cairo-test/Scarb.toml index b7e2111a73..efd80ecaf5 100644 --- a/crates/dojo/core-cairo-test/Scarb.toml +++ b/crates/dojo/core-cairo-test/Scarb.toml @@ -3,7 +3,7 @@ cairo-version = "=2.8.4" edition = "2024_07" description = "Testing library for Dojo using Cairo test runner." name = "dojo_cairo_test" -version = "1.0.0-rc.0" +version = "1.0.11" [dependencies] starknet = "=2.8.4" diff --git a/crates/dojo/core-cairo-test/src/tests/model/model.cairo b/crates/dojo/core-cairo-test/src/tests/model/model.cairo index ff48b33192..1be07ed7e0 100644 --- a/crates/dojo/core-cairo-test/src/tests/model/model.cairo +++ b/crates/dojo/core-cairo-test/src/tests/model/model.cairo @@ -25,6 +25,17 @@ struct Foo2 { v2: u32 } +#[derive(Copy, Drop, Serde, Debug)] +#[dojo::model] +struct Foo3 { + #[key] + k1: u256, + #[key] + k2: felt252, + v1: u128, + v2: u32 +} + fn namespace_def() -> NamespaceDef { NamespaceDef { namespace: "dojo_cairo_test", resources: [ diff --git a/crates/dojo/lang/src/attribute_macros/element.rs b/crates/dojo/lang/src/attribute_macros/element.rs index 684208157e..b7adbaba94 100644 --- a/crates/dojo/lang/src/attribute_macros/element.rs +++ b/crates/dojo/lang/src/attribute_macros/element.rs @@ -1,10 +1,8 @@ use cairo_lang_defs::patcher::RewriteNode; -use cairo_lang_defs::plugin::PluginDiagnostic; -use cairo_lang_diagnostics::Severity; use cairo_lang_syntax::node::ast::Member as MemberAst; use cairo_lang_syntax::node::db::SyntaxGroup; use cairo_lang_syntax::node::helpers::QueryAttrs; -use cairo_lang_syntax::node::{Terminal, TypedStablePtr, TypedSyntaxNode}; +use cairo_lang_syntax::node::{Terminal, TypedSyntaxNode}; use dojo_types::naming::compute_bytearray_hash; use starknet_crypto::{poseidon_hash_many, Felt}; @@ -36,39 +34,13 @@ pub fn compute_unique_hash( poseidon_hash_many(&hashes) } -pub fn parse_members( - db: &dyn SyntaxGroup, - members: &[MemberAst], - diagnostics: &mut Vec, -) -> Vec { +pub fn parse_members(db: &dyn SyntaxGroup, members: &[MemberAst]) -> Vec { members .iter() - .filter_map(|member_ast| { - let member = Member { - name: member_ast.name(db).text(db).to_string(), - ty: member_ast - .type_clause(db) - .ty(db) - .as_syntax_node() - .get_text(db) - .trim() - .to_string(), - key: member_ast.has_attr(db, "key"), - }; - - // validate key member - if member.key && member.ty == "u256" { - diagnostics.push(PluginDiagnostic { - message: "Key is only supported for core types that are 1 felt long once \ - serialized. `u256` is a struct of 2 u128, hence not supported." - .into(), - stable_ptr: member_ast.name(db).stable_ptr().untyped(), - severity: Severity::Error, - }); - None - } else { - Some(member) - } + .map(|member_ast| Member { + name: member_ast.name(db).text(db).to_string(), + ty: member_ast.type_clause(db).ty(db).as_syntax_node().get_text(db).trim().to_string(), + key: member_ast.has_attr(db, "key"), }) .collect::>() } diff --git a/crates/dojo/lang/src/attribute_macros/event.rs b/crates/dojo/lang/src/attribute_macros/event.rs index 1f7762be44..fe2c1ad550 100644 --- a/crates/dojo/lang/src/attribute_macros/event.rs +++ b/crates/dojo/lang/src/attribute_macros/event.rs @@ -58,7 +58,7 @@ impl DojoEvent { } } - let members = parse_members(db, &struct_ast.members(db).elements(db), &mut diagnostics); + let members = parse_members(db, &struct_ast.members(db).elements(db)); let mut serialized_keys: Vec = vec![]; let mut serialized_values: Vec = vec![]; diff --git a/crates/dojo/lang/src/attribute_macros/model.rs b/crates/dojo/lang/src/attribute_macros/model.rs index 9987f5e8b6..e27576632d 100644 --- a/crates/dojo/lang/src/attribute_macros/model.rs +++ b/crates/dojo/lang/src/attribute_macros/model.rs @@ -72,7 +72,7 @@ impl DojoModel { let mut model_member_store_impls_processed: HashSet = HashSet::new(); let mut model_member_store_impls: Vec = vec![]; - let members = parse_members(db, &struct_ast.members(db).elements(db), &mut diagnostics); + let members = parse_members(db, &struct_ast.members(db).elements(db)); members.iter().for_each(|member| { if member.key { diff --git a/crates/torii/types-test/Scarb.lock b/crates/torii/types-test/Scarb.lock index 0198ef49a0..61a8947f0b 100644 --- a/crates/torii/types-test/Scarb.lock +++ b/crates/torii/types-test/Scarb.lock @@ -14,7 +14,7 @@ version = "2.8.4" [[package]] name = "types_test" -version = "1.0.9" +version = "1.0.11" dependencies = [ "dojo", ] diff --git a/examples/simple/Scarb.lock b/examples/simple/Scarb.lock index 09def408e1..5e54d5ab44 100644 --- a/examples/simple/Scarb.lock +++ b/examples/simple/Scarb.lock @@ -3,14 +3,14 @@ version = 1 [[package]] name = "dojo" -version = "1.0.9" +version = "1.0.11" dependencies = [ "dojo_plugin", ] [[package]] name = "dojo_cairo_test" -version = "1.0.0-rc.0" +version = "1.0.11" dependencies = [ "dojo", ] diff --git a/examples/spawn-and-move/Scarb.lock b/examples/spawn-and-move/Scarb.lock index 9ed02bb845..676fb9af26 100644 --- a/examples/spawn-and-move/Scarb.lock +++ b/examples/spawn-and-move/Scarb.lock @@ -24,14 +24,14 @@ dependencies = [ [[package]] name = "dojo_cairo_test" -version = "1.0.0-rc.0" +version = "1.0.11" dependencies = [ "dojo", ] [[package]] name = "dojo_examples" -version = "1.0.9" +version = "1.0.11" dependencies = [ "armory", "bestiary", diff --git a/scripts/rebuild_test_artifacts.sh b/scripts/rebuild_test_artifacts.sh index 5cf765499c..148b955125 100755 --- a/scripts/rebuild_test_artifacts.sh +++ b/scripts/rebuild_test_artifacts.sh @@ -34,6 +34,7 @@ cargo +nightly-2024-08-28 fmt --all -- "$@" ./target/release/sozo build --manifest-path examples/spawn-and-move/Scarb.toml ./target/release/sozo build --manifest-path examples/spawn-and-move/Scarb.toml -P release ./target/release/sozo build --manifest-path crates/torii/types-test/Scarb.toml +./target/release/sozo test --manifest-path crates/dojo/core-cairo-test/Scarb.toml # Generates the database for testing by migrating the spawn and move example. KATANA_RUNNER_BIN=./target/release/katana cargo generate-test-db diff --git a/spawn-and-move-db.tar.gz b/spawn-and-move-db.tar.gz index 7e1c595e95..e576e1b5ac 100644 Binary files a/spawn-and-move-db.tar.gz and b/spawn-and-move-db.tar.gz differ diff --git a/types-test-db.tar.gz b/types-test-db.tar.gz index 55c06fae50..b51fc6f027 100644 Binary files a/types-test-db.tar.gz and b/types-test-db.tar.gz differ