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

bug(gnovm): incorrect type comparison #2386

Open
moul opened this issue Jun 18, 2024 · 3 comments
Open

bug(gnovm): incorrect type comparison #2386

moul opened this issue Jun 18, 2024 · 3 comments
Labels
🐞 bug Something isn't working

Comments

@moul
Copy link
Member

moul commented Jun 18, 2024

CleanShot 2024-06-18 at 16 59 30

https://go.dev/play/p/-y5gRjR9erA
https://play.gno.land/p/B9WLR_AsqYY


In GnoVM, type aliases with the same value are considered equal, while in Go, they are considered different without explicit casting. This leads to inconsistent behavior between Gno and Go.

Example

The following code returns false, false, false in Go, but true, false, false in Gno:

package main

import "fmt"

func check(v1, v2 interface{}) bool {
	return v1 == v2
}

func main() {
	type t1 int
	type t2 int
	v1 := t1(1)
	v2 := t2(1)
	v3 := t2(3)

	fmt.Println("v1, v2", v1, v2, check(v1, v2))
	fmt.Println("v1, v3", v1, v3, check(v1, v3))
	fmt.Println("v2, v3", v2, v3, check(v2, v3))
}
@thehowl
Copy link
Member

thehowl commented Jun 18, 2024

cc @ltzmaxwell is this fixed by #1426?

@deelawn
Copy link
Contributor

deelawn commented Jun 18, 2024

This is not fixed by #1426

@ltzmaxwell
Copy link
Contributor

this should be fixed in #1890.
similar context with #1376.

@moul moul added the 🐞 bug Something isn't working label Jun 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 bug Something isn't working
Projects
Status: Triage
Development

No branches or pull requests

4 participants