-
-
Notifications
You must be signed in to change notification settings - Fork 670
break: Add support for labeled statements, breaks, and continues #2891
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
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.