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

C error on Option casting in assert statement #22947

Open
gechandesu opened this issue Nov 23, 2024 · 2 comments · May be fixed by #22953
Open

C error on Option casting in assert statement #22947

gechandesu opened this issue Nov 23, 2024 · 2 comments · May be fixed by #22953
Assignees
Labels
Bug This tag is applied to issues which reports bugs. Status: Confirmed This bug has been confirmed to be valid by a contributor. Unit: cgen Bugs/feature requests, that are related to the default C generating backend.

Comments

@gechandesu
Copy link

gechandesu commented Nov 23, 2024

V doctor:

V full version: V 0.4.8 5ec9bb5.393e4ea
OS: linux, Linux version 6.6.8-arch1-1 (linux@archlinux) (gcc (GCC) 13.2.1 20230801, GNU ld (GNU Binutils) 2.41.0) #1 SMP PREEMPT_DYNAMIC Thu, 21 Dec 2023 19:01:01 +0000
Processor: 16 cpus, 64bit, little endian, 12th Gen Intel(R) Core(TM) i5-1240P

getwd: /home/ge/Code/v/netaddr/issues
vexe: /home/ge/.vlang/v
vexe mtime: 2024-11-23 13:05:19

vroot: OK, value: /home/ge/.vlang
VMODULES: OK, value: /home/ge/.vmodules
VTMP: OK, value: /tmp/v_1000

Git version: git version 2.46.1
Git vroot status: weekly.2024.47-20-g393e4ea8
.git/config present: true

CC version: cc (GCC) 14.2.1 20240910
emcc version: N/A
thirdparty/tcc status: thirdparty-linux-amd64 0134e9b9

What did you do?
./v -g -o vdbg cmd/v && ./vdbg assert_option_cast.v

module main

fn get_opt(a int) ?string {
	if a < 0 {
		return none
	}
	return 'success'
}

fn main() {
	x := get_opt(1)
	println('${x as string}') // OK
	assert x as string == 'success' // compilation error
}

What did you expect to see?

Assertion passed, no C errors

What did you see instead?

================== C compilation error (from tcc): ==============
cc: /tmp/v_1000/assert_option_cast.01JDCMNCJXMVPQ05YX7R8SGTA6.tmp.c:13734: error: cannot convert 'struct _option_string' to 'struct string'
=================================================================
(You can pass `-cg`, or `-show-c-output` as well, to print all the C error messages).
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 .

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.

Huly®: V_0.6-21389

@Delta456
Copy link
Member

println('${x as string}' == 'success') also gives the same error.

@Delta456
Copy link
Member

The below code is valid

module main

fn get_opt(a int) ?string {
	if a < 0 {
		return none
	}
	return 'success'
}

fn main() {
	x := get_opt(1)
	a := x as string
	println(a == 'success') // OK
	assert a == 'success'

}

So the code given in the issue should work

@Delta456 Delta456 self-assigned this Nov 23, 2024
@felipensp felipensp added Bug This tag is applied to issues which reports bugs. Status: Confirmed This bug has been confirmed to be valid by a contributor. Unit: cgen Bugs/feature requests, that are related to the default C generating backend. labels Nov 23, 2024
@Delta456 Delta456 linked a pull request Nov 23, 2024 that will close this issue
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. Status: Confirmed This bug has been confirmed to be valid by a contributor. Unit: cgen Bugs/feature requests, that are related to the default C generating backend.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants