Skip to content

mut sumtype value can't be changed #25108

@kbkpbot

Description

@kbkpbot

Describe the bug

When a function try to change a mut sumtype, it will fail.

Reproduction Steps

mut.v

module main

struct CondA {
pub mut:
        val int
}

struct CondB {
pub mut:
        val int
}

type Cond = CondA | CondB

fn func(mut cond Cond) {
        if mut cond is CondA {
                cond.val = 1234
        }
}

fn main() {
        mut x := CondA{}
        x.val = 1

        func(mut x)
        assert x.val == 1234
        dump(x)
}
v mut.v

run it

Expected Behavior

run without assert fail

Current Behavior

$ ./mut
mut.v:26: FAIL: fn main.main: assert x.val == 1234
   left value: x.val = 1
  right value: 1234
V panic: Assertion failed...
v hash: 7d67e22
/tmp/v_1000/mut.01K2MD1A9PM22ZM47G85ADYHQB.tmp.c:3691: at _v_panic: Backtrace
/tmp/v_1000/mut.01K2MD1A9PM22ZM47G85ADYHQB.tmp.c:5352: by main__main
/tmp/v_1000/mut.01K2MD1A9PM22ZM47G85ADYHQB.tmp.c:5381: by main

Possible Solution

No response

Additional Information/Context

No response

V version

V 0.4.11 d5458b5.7d67e22

Environment details (OS name and version, etc.)

V full version V 0.4.11 d5458b5.7d67e22
OS linux, Ubuntu 24.04.3 LTS
Processor 8 cpus, 64bit, little endian, Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz
Memory 1.24GB/15.51GB
V executable /media/HD/github/kbkpbot/v/v
V last modified time 2025-08-14 13:31:04
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/mut
Git version git version 2.43.0
V git status weekly.2025.17-547-g7d67e22b-dirty
.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.5) 2.39

Note

You can use the 👍 reaction to increase the issue's priority for developers.

Please note that only the 👍 reaction to the issue itself counts as a vote.
Other reactions and those to comments will not be taken into account.

Metadata

Metadata

Assignees

Labels

BugThis tag is applied to issues which reports bugs.Unit: cgenBugs/feature requests, that are related to the default C generating backend.

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions