From 1926dc84d0bb9e3bcec0848b0af934340ef2c3a7 Mon Sep 17 00:00:00 2001 From: Swastik Date: Wed, 12 Jun 2024 17:32:36 +0530 Subject: [PATCH] combines tests and add more cases --- vlib/v/checker/infix.v | 2 +- ...lias_primitive_operator_overloading_test.v | 40 +++++++++++++++++++ .../alias_voidptr_operator_overloading_test.v | 30 -------------- 3 files changed, 41 insertions(+), 31 deletions(-) delete mode 100644 vlib/v/tests/alias_voidptr_operator_overloading_test.v diff --git a/vlib/v/checker/infix.v b/vlib/v/checker/infix.v index f5d9b4bd25ec5e..efee74352ed90f 100644 --- a/vlib/v/checker/infix.v +++ b/vlib/v/checker/infix.v @@ -447,7 +447,7 @@ fn (mut c Checker) infix_expr(mut node ast.InfixExpr) ast.Type { } else if right_sym.info is ast.Alias && c.table.sym(right_sym.info.parent_type).is_primitive() { if right_sym.has_method(node.op.str()) { - if method := left_sym.find_method(node.op.str()) { + if method := right_sym.find_method(node.op.str()) { return_type = method.return_type } } diff --git a/vlib/v/tests/alias_primitive_operator_overloading_test.v b/vlib/v/tests/alias_primitive_operator_overloading_test.v index e4a755feea7833..7745b3e2c67d43 100644 --- a/vlib/v/tests/alias_primitive_operator_overloading_test.v +++ b/vlib/v/tests/alias_primitive_operator_overloading_test.v @@ -27,5 +27,45 @@ fn test_alias_primitive_operator_overloading() { c := a + b d := a.add(b) assert typeof(c).name == 'Alias' + assert typeof(d).name == 'Alias' + + e := a * b + f := a.mul(b) assert typeof(c).name == 'Alias' + assert typeof(d).name == 'Alias' +} + +type AF_ARRAY = voidptr + +fn (a AF_ARRAY) add(b AF_ARRAY) AF_ARRAY { + mut y := AF_ARRAY(0) + return y +} + +fn (a AF_ARRAY) mul(b AF_ARRAY) AF_ARRAY { + mut y := AF_ARRAY(0) + return y } + +fn (a AF_ARRAY) + (b AF_ARRAY) AF_ARRAY { + return a.add(b) +} + +fn (a AF_ARRAY) * (b AF_ARRAY) AF_ARRAY { + return a.mul(b) +} + +fn test_alias_voidptr_operator_overloading() { + a := AF_ARRAY(0) + b := AF_ARRAY(0) + + c := a + b + y := a * a + + assert c == a.add(b) + assert y == a.mul(a) + + assert typeof(c).name == 'AF_ARRAY' + assert typeof(y).name == 'AF_ARRAY' +} + diff --git a/vlib/v/tests/alias_voidptr_operator_overloading_test.v b/vlib/v/tests/alias_voidptr_operator_overloading_test.v deleted file mode 100644 index 39caa380ad9580..00000000000000 --- a/vlib/v/tests/alias_voidptr_operator_overloading_test.v +++ /dev/null @@ -1,30 +0,0 @@ -type AF_ARRAY = voidptr - -fn (a AF_ARRAY) add(b AF_ARRAY) AF_ARRAY { - mut y := AF_ARRAY(0) - return y -} - -fn (a AF_ARRAY) mul(b AF_ARRAY) AF_ARRAY { - mut y := AF_ARRAY(0) - return y -} - -fn (a AF_ARRAY) + (b AF_ARRAY) AF_ARRAY { - return a.add(b) -} - -fn (a AF_ARRAY) * (b AF_ARRAY) AF_ARRAY { - return a.mul(b) -} - -fn test_alias_voidptr_operator_overloading() { - a := AF_ARRAY(0) - b := AF_ARRAY(0) - - c := a + b - y := a * a - - assert c == a.add(b) - assert y == a.mul(a) -}