From 81237288dcebe24c7e066333c37672a71022ec1a Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Thu, 13 Nov 2025 19:10:45 -0300 Subject: [PATCH] cgen: fix codegen for operator overload method_name on alias to builtin types (fix #25709) (#25726) --- vlib/v/gen/c/infix.v | 3 ++- vlib/v/tests/aliases/alias_eq_op_test.v | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 vlib/v/tests/aliases/alias_eq_op_test.v diff --git a/vlib/v/gen/c/infix.v b/vlib/v/gen/c/infix.v index ba54659af..21fd01909 100644 --- a/vlib/v/gen/c/infix.v +++ b/vlib/v/gen/c/infix.v @@ -164,7 +164,8 @@ fn (mut g Gen) infix_expr_eq_op(node ast.InfixExpr) { g.styp(left.unaliased.set_nr_muls(0)) } mut is_builtin_or_alias_to_builtin := left.sym.is_builtin() - if !is_builtin_or_alias_to_builtin && left.sym.info is ast.Alias { + if !has_alias_eq_op_overload && !is_builtin_or_alias_to_builtin + && left.sym.info is ast.Alias { alias_info := left.sym.info as ast.Alias parent_sym := g.table.sym(alias_info.parent_type) is_builtin_or_alias_to_builtin = parent_sym.is_builtin() diff --git a/vlib/v/tests/aliases/alias_eq_op_test.v b/vlib/v/tests/aliases/alias_eq_op_test.v new file mode 100644 index 000000000..bb19c46dc --- /dev/null +++ b/vlib/v/tests/aliases/alias_eq_op_test.v @@ -0,0 +1,10 @@ +type MyInt = int + +fn (i1 MyInt) == (i2 MyInt) bool { + return int(i1) == int(i2) +} + +fn test_main() { + c := MyInt(3) == MyInt(1) + assert c == false +} -- 2.39.5