From 2a1fea4ce0b121eaa6c66dad5a29aac9a73d7541 Mon Sep 17 00:00:00 2001 From: wenxuanjun <41050170+wenxuanjun@users.noreply.github.com> Date: Mon, 30 Mar 2026 08:43:47 +0800 Subject: [PATCH] vfmt: allow conditional selective imports (#26787) --- vlib/v/fmt/tests/conditional_import_expected.vv | 7 +++++++ vlib/v/fmt/tests/conditional_import_input.vv | 8 ++++++++ vlib/v/parser/module.v | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 vlib/v/fmt/tests/conditional_import_expected.vv create mode 100644 vlib/v/fmt/tests/conditional_import_input.vv diff --git a/vlib/v/fmt/tests/conditional_import_expected.vv b/vlib/v/fmt/tests/conditional_import_expected.vv new file mode 100644 index 000000000..3fb33ee58 --- /dev/null +++ b/vlib/v/fmt/tests/conditional_import_expected.vv @@ -0,0 +1,7 @@ +module main + +$if linux { + import math { max } +} $else $if windows { + import arrays { max } +} diff --git a/vlib/v/fmt/tests/conditional_import_input.vv b/vlib/v/fmt/tests/conditional_import_input.vv new file mode 100644 index 000000000..746bf8b6d --- /dev/null +++ b/vlib/v/fmt/tests/conditional_import_input.vv @@ -0,0 +1,8 @@ +module main + +$if linux { +import math { max } +} $else $if windows +{ +import arrays { max } +} diff --git a/vlib/v/parser/module.v b/vlib/v/parser/module.v index 8977b4757..dd667c97f 100644 --- a/vlib/v/parser/module.v +++ b/vlib/v/parser/module.v @@ -323,7 +323,7 @@ fn (mut p Parser) import_syms(mut parent ast.Import) { for p.tok.kind == .name { pos := p.tok.pos() alias := p.check_name() - if p.is_imported_symbol(alias) { + if p.is_imported_symbol(alias) && !(p.pref.is_fmt && p.inside_ct_if_expr) { p.error_with_pos('cannot register symbol `${alias}`, it was already imported', pos) return -- 2.39.5