From 4ac610c022a47d7243ef99a5c56967192e014651 Mon Sep 17 00:00:00 2001 From: wenxuanjun <41050170+wenxuanjun@users.noreply.github.com> Date: Sat, 28 Mar 2026 21:07:47 +0800 Subject: [PATCH] cgen: avoid builtin print handling for user print fns (#26781) --- vlib/v/gen/c/fn.v | 5 ++++- .../gen/c/testdata/no_builtin_print_name_clash.c.must_have | 2 ++ vlib/v/gen/c/testdata/no_builtin_print_name_clash.vv | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 vlib/v/gen/c/testdata/no_builtin_print_name_clash.c.must_have create mode 100644 vlib/v/gen/c/testdata/no_builtin_print_name_clash.vv diff --git a/vlib/v/gen/c/fn.v b/vlib/v/gen/c/fn.v index a298a27a7..54736ee8b 100644 --- a/vlib/v/gen/c/fn.v +++ b/vlib/v/gen/c/fn.v @@ -2082,7 +2082,7 @@ fn (mut g Gen) fn_call(node ast.CallExpr) { } } } - is_print := node.kind in [.print, .println, .eprint, .eprintln, .panic] + mut is_print := !is_selector_call && node.kind in [.print, .println, .eprint, .eprintln, .panic] print_method := name is_json_encode := node.kind == .json_encode is_json_encode_pretty := node.kind == .json_encode_pretty @@ -2186,6 +2186,9 @@ fn (mut g Gen) fn_call(node ast.CallExpr) { if func.mod == 'builtin' && !name.starts_with('builtin__') && node.language != .c { name = 'builtin__${name}' } + is_print = is_print && func.mod == 'builtin' + } else { + is_print = false } } if node.is_fn_a_const { diff --git a/vlib/v/gen/c/testdata/no_builtin_print_name_clash.c.must_have b/vlib/v/gen/c/testdata/no_builtin_print_name_clash.c.must_have new file mode 100644 index 000000000..ea21cac6b --- /dev/null +++ b/vlib/v/gen/c/testdata/no_builtin_print_name_clash.c.must_have @@ -0,0 +1,2 @@ +void main__print(voidptr fmt, ... ); +main__print("\n"); diff --git a/vlib/v/gen/c/testdata/no_builtin_print_name_clash.vv b/vlib/v/gen/c/testdata/no_builtin_print_name_clash.vv new file mode 100644 index 000000000..b4b0371b4 --- /dev/null +++ b/vlib/v/gen/c/testdata/no_builtin_print_name_clash.vv @@ -0,0 +1,7 @@ +// vtest vflags: -no-builtin +@[markused] +pub fn error() { + print(c'\n') +} + +pub fn print(fmt voidptr, ...) {} -- 2.39.5