Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

struct reference mutable function argument builder problem #21265

Closed
Eliyaan opened this issue Apr 12, 2024 · 0 comments · Fixed by #21719
Closed

struct reference mutable function argument builder problem #21265

Eliyaan opened this issue Apr 12, 2024 · 0 comments · Fixed by #21719
Labels
Bug This tag is applied to issues which reports bugs. Unit: cgen Bugs/feature requests, that are related to the default C generating backend. Unit: Compiler Bugs/feature requests, that are related to the V compiler in general.

Comments

@Eliyaan
Copy link
Contributor

Eliyaan commented Apr 12, 2024

Describe the bug

When the struct reference is a mutable function argument it outputs a builder error and a warning.

Reproduction Steps

@[heap]
struct Client {
mut:
  next &Client
  prev &Client

}

fn init_vm(mut head &Client) {
  	for c := head; c == unsafe{nil}; c = c.next { 

	}
}

fn main() {
	mut head := &Client(unsafe{nil})
   	init_vm(mut head)
}
@[heap]
struct Client {
mut:
  next &Client
  prev &Client

}

fn init_vm(mut head &Client) {
  	for c := head; c; c = c.next { 

	}
}

fn main() {
	mut head := &Client(unsafe{nil})
   	init_vm(mut head)
}

Expected Behavior

It not to output a builder error nor a warning.

Current Behavior

issue.v:11:39: warning: cannot assign a reference to a value (this will be an error soon) left=Client false right=Client true ptr=true
    9 | 
   10 | fn init_vm(mut head &Client) {
   11 |       for c := head; c == unsafe{nil}; c = c.next { 
      |                                          ^
   12 | 
   13 |     }
==================
/tmp/v_1000/issue.01HV8TCY7TQM1F0E8ZW6X6ETY7.tmp.c:13024: error: cannot convert 'struct main__Client' to 'unsigned long'
...
==================
(Use `v -cg` to print the entire error message)

builder error

Possible Solution

No response

Additional Information/Context

No response

V version

V 0.4.5 423c39c

Environment details (OS name and version, etc.)

V full version: V 0.4.5 294f7e4.423c39c
OS: linux, Linux version 6.6.13-200.fc39.x86_64 (mockbuild@72f11b2996ed4699b0f705186172808f) (gcc (GCC) 13.2.1 20231205 (Red Hat 13.2.1-6), GNU ld version 2.40-13.fc39) #1 SMP PREEMPT_DYNAMIC Sat Jan 20 18:03:28 UTC 2024
Processor: 4 cpus, 64bit, little endian, Intel(R) Pentium(R) Gold 7505 @ 2.00GHz

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.

@Eliyaan Eliyaan added the Bug This tag is applied to issues which reports bugs. label Apr 12, 2024
@spytheman spytheman added Unit: Compiler Bugs/feature requests, that are related to the V compiler in general. Unit: cgen Bugs/feature requests, that are related to the default C generating backend. labels Jun 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug This tag is applied to issues which reports bugs. Unit: cgen Bugs/feature requests, that are related to the default C generating backend. Unit: Compiler Bugs/feature requests, that are related to the V compiler in general.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants