-
-
Notifications
You must be signed in to change notification settings - Fork 667
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
break: Add support for labeled statements, breaks, and continues #2891
base: main
Are you sure you want to change the base?
Conversation
60e57da
to
3a29149
Compare
I just need to add some tests; then, this will be ready to merge. @JairusSW Heads up: this change definitely breaks transforms. Do you have anything to comment on this PR? |
You can define multiple constructors |
It looks like I forgot about |
Okay, it appears that my code breaks something related to Flow flags, so more work on this PR is needed. One issue is that Another issue is that a |
This is a prerequisite for supporting labeled breaks/continues. Clearly unusable labels, such as `x: let foo = 1;` report an error by default, similar to TS's behavior.
This requires an additional field to Flow that maps user-defined statement labels to the internal Binaryen labels passed to module.br(). Thanks to the existing logic to handle unlabeled break/continue, adding support for labeled break/continue is a breeze. Fixes AssemblyScript#2889.
3a29149
to
692b388
Compare
In TS, there are new ASTNode |
@HerrCai0907 I considered that before, and it might be a pretty good idea. It would be better for transform users for sure. Still, there's the issue of setting the proper |
Fixes #2889.
Changes proposed in this pull request:
⯈ Support labeled statements in the parser/AST
⯈ Support labeled
break
/continue
.This change is breaking solely because it modifies the
Node.createXXX
APIs, which are used by transforms.