Skip to content

$if assignment will crash compiler #26061

@kbkpbot

Description

@kbkpbot

Describe the bug

Assignment with $if will cause compiler panic.

It may related to issue #26053

Reproduction Steps

i.v

module main

fn ret[T](str string) !T {
        val := $if T is i8 {
                T(123)
        } $else {
                T(123)
        }
        return val
}

fn main() {
        x := ret[f32]('1.0')!
        dump(x)
}

Expected Behavior

compile ok

Current Behavior

$ v i.v
================== C compilation error (from tcc): ==============
cc: /tmp/v_1000/i.01KCZH5GMFD7NKFN96P819F6HW.tmp.c:5065: error: expression expected before '#'
=================================================================
Try passing `-g` when compiling, to see a .v file:line information, that correlates more with the C error.
(Alternatively, pass `-show-c-output`, to print the full C error message).
builder error:
==================
C error found. It should never happen, when compiling pure V code.
This is a V compiler bug, please report it using `v bug file.v`,
or goto https://github.com/vlang/v/issues/new/choose .
You can also use #help on Discord: https://discord.gg/vlang .

Possible Solution

fix cgen

Additional Information/Context

No response

V version

V 0.4.12 1cdb0f5

Environment details (OS name and version, etc.)

V full version V 0.4.12 1cdb0f5
OS linux, Ubuntu 24.04.3 LTS
Processor 8 cpus, 64bit, little endian, Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz
Memory 11.6GB/15.51GB
V executable /media/HD/github/kbkpbot/v/v
V last modified time 2025-12-21 03:52:13
V home dir OK, value: /media/HD/github/kbkpbot/v
VMODULES OK, value: /home/mars/.vmodules
VTMP OK, value: /tmp/v_1000
Current working dir OK, value: /home/mars/v/bug/match
Git version git version 2.43.0
V git status weekly.2025.46-252-g129ea228
.git/config present true
cc version cc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
gcc version gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
clang version Ubuntu clang version 18.1.3 (1ubuntu1)
tcc version tcc version 0.9.28rc 2025-02-13 HEAD@f8bd136d (x86_64 Linux)
tcc git status thirdparty-linux-amd64 696c1d84
emcc version N/A
glibc version ldd (Ubuntu GLIBC 2.39-0ubuntu8.6) 2.39

Metadata

Metadata

Assignees

Labels

BugThis tag is applied to issues which reports bugs.

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions