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

fix(gnovm): correct type for shift expression #1775

Merged
merged 148 commits into from
Oct 15, 2024

Conversation

ltzmaxwell
Copy link
Contributor

@ltzmaxwell ltzmaxwell commented Mar 14, 2024

shift operator where first operand is an untyped bigint always results in a bigint is not resolved by #1426, it's fixed by this one.

=================================================================

  1. This is a fix to shift operator where first operand is an untyped bigint always results in a bigint #1462;
  2. NOTE: This PR should be reviewed following the potential merger of feat: gno type check #1426, from which it is both decoupled and dependent. feat: gno type check #1426 serves as base branch of this one.
  3. NOTE: Currently, this PR displays all code including that from feat: gno type check #1426, because it is being compared to the master branch instead of differing against feat: gno type check #1426 directly.

@ltzmaxwell ltzmaxwell marked this pull request as draft August 8, 2024 10:06
@ltzmaxwell ltzmaxwell marked this pull request as ready for review August 9, 2024 09:53
Copy link
Contributor

@deelawn deelawn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Thanks for quickly addressing my comments 🙏

gnovm/tests/files/types/shift_a11.gno Outdated Show resolved Hide resolved
gnovm/tests/files/types/shift_a7.gno Outdated Show resolved Hide resolved
Copy link
Member

@thehowl thehowl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

partial

gnovm/pkg/gnolang/values.go Outdated Show resolved Hide resolved
gnovm/pkg/gnolang/values.go Outdated Show resolved Hide resolved
gnovm/pkg/gnolang/values_conversions.go Outdated Show resolved Hide resolved
Copy link
Contributor

@mvertes mvertes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR greatly improves the behaviour of the shift operator. The tests are amazing and cover a lot of corner cases (several bugs also found in yaegi thanks to them) and match perfectly the results given by the compiler. Thank you for this effort. My remarks are minor and do no block approval. We should merge it ASAP now.

gnovm/tests/files/types/shift_d48.gno Show resolved Hide resolved
gnovm/tests/files/types/shift_g.gno Show resolved Hide resolved
gnovm/tests/files/types/shift_f5.gno Show resolved Hide resolved
@mvertes
Copy link
Contributor

mvertes commented Oct 15, 2024

I see that some tests are not passing, even if they print the correct results. This is due to eval_tests not trimming spaces in results. Let me fix this.

@mvertes mvertes merged commit d63918f into gnolang:master Oct 15, 2024
122 checks passed
@thehowl
Copy link
Member

thehowl commented Oct 15, 2024

thanks for the speedy merge @mvertes! <3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📦 🤖 gnovm Issues or PRs gnovm related 🧾 package/realm Tag used for new Realms or Packages.
Projects
Status: Done
Status: Done
Development

Successfully merging this pull request may close these issues.

7 participants