summaryrefslogtreecommitdiff
path: root/tests/features/test_move_semantics.zc
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-20 11:16:11 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-20 11:16:11 +0000
commitdb690b368f7e05b242f2e775f620f35ab0df5bc3 (patch)
treec70d8e82bf81515e48b7bd2701595d6e62ce93e3 /tests/features/test_move_semantics.zc
parentf027a812707d68ca0690b7544175b9f302dd57ad (diff)
Smart derives...
Diffstat (limited to 'tests/features/test_move_semantics.zc')
-rw-r--r--tests/features/test_move_semantics.zc41
1 files changed, 16 insertions, 25 deletions
diff --git a/tests/features/test_move_semantics.zc b/tests/features/test_move_semantics.zc
index 70390c2..bf0d717 100644
--- a/tests/features/test_move_semantics.zc
+++ b/tests/features/test_move_semantics.zc
@@ -7,7 +7,7 @@ struct Mover {
val: int;
}
-fn test_basic_move() {
+test "basic_move" {
var p1 = Mover { val: 10 };
var p2 = p1; // p1 moved to p2
@@ -18,14 +18,14 @@ fn test_basic_move() {
// var p3 = p1;
}
-fn test_primitive_copy() {
+test "primitive_copy" {
var i = 10;
var j = i; // Copy
var k = i; // Copy again - should be valid
assert(k == 10, "Primitive copy failed");
}
-fn test_reassignment() {
+test "reassignment" {
var m1 = Mover { val: 1 };
var m2 = m1; // m1 moved
@@ -34,31 +34,22 @@ fn test_reassignment() {
assert(m3.val == 2, "Resurrection failed");
}
-fn test_func_arg(m: Mover) {
+fn consume(m: Mover) {
assert(m.val == 10, "Func arg failed");
}
-fn main() {
- test_basic_move();
- test_primitive_copy();
- test_reassignment();
-
+test "func_arg" {
var m = Mover { val: 10 };
- test_func_arg(m); // m moved
-
- // ** Negative Tests (Uncomment to verify) **
-
- // 1. Use after move (Assignment)
- // test_basic_move(); // See line 18 inside function
+ consume(m); // m moved
- // 2. Use after move (Call)
- // test_func_arg(m); // Should fail: Use of moved value 'm'
-
- // 3. Use after return
- /*
- fn fail_return(m: Mover) -> Mover {
- var m2 = m;
- return m; // Should fail: Use of moved value 'm'
- }
- */
+ // 2. Use after move (Call - Negative Test)
+ // consume(m); // Should fail: Use of moved value 'm'
+}
+
+/*
+// 3. Use after return (Negative Test)
+fn fail_return(m: Mover) -> Mover {
+ var m2 = m;
+ return m; // Should fail: Use of moved value 'm'
}
+*/