vlang / v

Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
MIT License
35.5k stars 2.15k forks source link

c-style for loop with type alias provokes build error #21707

Closed pd-giz-dave closed 1 week ago

pd-giz-dave commented 1 week ago

Describe the bug

A c-style for loop with a type alias variable results in a build error

Reproduction Steps

Attempt to compile this:

module main
type Float = f32
// for loop with a type alias var of Float get build error
// replacing Float() with f32() works
fn main() {
    min_value := Float(1)
    max_value := Float(10)
    step := Float(1)
    for n := min_value; n <= max_value; n += step {
        print(',${n}')
    }
}

Expected Behavior

I expect to it to compile

Current Behavior

Get a build error:

/home/dave/v/v /home/dave/precious/fellsafe/v/compiler_bugs -color -o /home/dave/precious/fellsafe/v/bin/main
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 .
==================
/tmp/v_1000/main.01J0V23EWTE568C2JCCP4PK2CR.tmp.c:13147: error: ')' expected (got ";")
...
==================
(Use `v -cg` to print the entire error message)

Possible Solution

Use a DIY loop

Additional Information/Context

Replacing the type alias with a native type works.

V version

V 0.4.6 537fa1b

Environment details (OS name and version, etc.)

dave@dave-mini-pc~/.../fellsafe/v >>> v doctor
V full version: V 0.4.6 294f7e4.537fa1b
OS: linux, "EndeavourOS Linux"
Processor: 16 cpus, 64bit, little endian, AMD Ryzen 7 5800H with Radeon Graphics

getwd: /home/dave/precious/fellsafe/v
vexe: /home/dave/v/v
vexe mtime: 2024-06-20 14:51:25

vroot: OK, value: /home/dave/v
VMODULES: OK, value: /home/dave/.vmodules
VTMP: OK, value: /tmp/v_1000

Git version: git version 2.45.2
Git vroot status: weekly.2024.23-43-g537fa1bb
.git/config present: true

CC version: cc (GCC) 14.1.1 20240522
thirdparty/tcc status: thirdparty-linux-amd64 40e5cbb5
dave@dave-mini-pc~/.../fellsafe/v >>>       

[!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.