-
Notifications
You must be signed in to change notification settings - Fork 190
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
Error Recovery #1462
Closed
Closed
Error Recovery #1462
Changes from all commits
Commits
Show all changes
51 commits
Select commit
Hold shift + click to select a range
9d8be07
Starting work on error recovery
wycats c3056db
Revert "Starting work on error recovery"
wycats 164e52a
Added error recovery machine infrastructure
wycats 2ad715e
Consolidate stack internals
wycats df1f01b
Make the tests work with trace logging on
wycats 2d87f07
Remove fetchValue(machine register)
wycats f37e1e6
Clean up stack and debug logging
wycats e5fbcf4
In progress updating stack checks
wycats f162c71
Finish overhauling debug logging
wycats 9a14393
Cleanup
wycats 44262f1
Tweak stack checks
wycats e557a58
chore(package.json): update devDependencies versions to latest
wycats ed47021
Update qunit
wycats 7637009
chore(vscode): update editor.codeActionsOnSave settings to prioritize…
wycats a2d876f
editor(vscode): Add commit message editor to vscode
wycats 6bd4205
refactor(debug): Make nulls and arrays in stack verification more acc…
wycats 099cbc9
chore: Clean up unused code
wycats 4670f73
infra(debugger): Improve and restore the debug tracing infra
wycats ae8f46d
infra(debugger): Significant improvement to stack checks and trace lo…
wycats fac3d89
style: Style tweaks
wycats acd251d
infra(opcodes): Generate opcode types and values
wycats 2d5c4d1
style: Style changes
wycats 570ee41
refactor(typescript): Replace ContentType and CurriedType enums
wycats a5f2fbf
feat(error-boundary): Basic stack error recovery works
wycats 2d044f5
refactor(opcodes): Nail down opcode behavior
wycats 2d8d30a
refactor(tests): Prepare for error recovery tests
wycats e393dc2
refactor(tests): Further trim down render delegate
wycats 8b862b2
refactor(tests): Further trim down render delegate
wycats 463efc7
chore(checkpoint): Tests pass
wycats 14cc692
fix(tests): Support else blocks in glimmer tests
wycats 4fa1a67
refactor(tests): Separate invoke & template styles
wycats 1fd0f61
test(error-recovery): Add error recovery suites
wycats 24a5fd9
chore(eslint): Turn on stricter testing lints
wycats ecbabd2
feat(error-boundary): DOM clearing works
wycats 37cdc0e
refactor(references): Bake errors in more deeply
wycats e6b7543
refactor(test-infra): Restructure matrix tests
wycats 1bffa26
feat(error-recovery): Recover more VM getErrorMessage
wycats b12092d
feat(error): Better rationalize unwindable state
wycats 5f1653b
feat(errors): Added checkpointing to `Stack`
wycats dd8d40d
feat(errors): Closing in!
wycats c11ab6d
feat(errors): Test and clarify references
wycats 82f4135
feat(references): More fully test ref API
wycats bb08649
feat(debug): Better descriptions/devmode values
wycats 3aa570b
feat(errors): Support error recovery
wycats 2e21994
chore(imports): Strengthen and apply import sort rules
wycats 9bfa6f4
feat(errors): Get closer to final naming
wycats dd562d5
docs(reactive): Document the new reactivity APIs
wycats 8cfa580
feat(errors): Make recover() work
wycats 5a7e790
feat(errors): Finish error recovery + tests
wycats 8536a36
refactor(vm): Refactor and document VM
wycats 50e24f2
feat(errors): Handle errors in more cases
wycats File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
{ | ||
"singleQuote": true, | ||
"trailingComma": "es5", | ||
"printWidth": 100 | ||
"printWidth": 100, | ||
"plugins": [] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"recommendations": ["foxundermoon.shell-format"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
- [ ] Implement `#try` that takes handler | ||
- [ ] internal `{{#if isClear}}{{!-- actual code --}}{{/if}}` | ||
- [ ] if an error is encountered, unwind as-if isClear was false | ||
during the render pass | ||
- [ ] when you encounter the enter of the try, insert a marker in | ||
every VM stack. | ||
- [ ] every stack in the VM needs "unwind to nearest marker" | ||
- [ ] when a render error is encountered, unwind all the stacks | ||
- [ ] call the handler with the error | ||
- [ ] no catch | ||
- [ ] the handler has a way to clear the error | ||
- [ ] deal with user destructors that should run even during render errors | ||
- [ ] maintain the invariant that constructors and destructors are paired |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,7 +7,6 @@ module.exports = { | |
root: false, | ||
env: { | ||
es6: true, | ||
node: true, | ||
}, | ||
overrides: [ | ||
{ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[devmode] | ||
match = "devmode({ :[block] })" | ||
rewrite = "devmode(() => ({ :[block] }))" | ||
|
||
[devmode2] | ||
match = "if (import.meta.env.DEV) { :[[name]].description = :[description]; }" | ||
rewrite = "setDescription(:[name], devmode(() => :[description]));" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
[test] | ||
match = """ | ||
export class :[class] extends :[extends] { | ||
static suiteName = :[suite]; | ||
:[block] | ||
} | ||
""" | ||
rewrite = """ | ||
import { matrix } from "@glimmer-workspace/integration-tests"; | ||
matrix(:[suite], (spec) => { :[block] }).client(); | ||
""" | ||
rule = """ | ||
where | ||
rewrite :[block] { "this" -> "ctx" }, | ||
rewrite :[block] { | ||
"@render(:[type]) :[string]() { :[body] }" -> "spec({ type: :[type] }, :[string], (ctx) => { :[body] })" | ||
}, | ||
rewrite :[block] { | ||
"@render :[string]() { :[body] }" -> "spec(:[string], (ctx) => { :[body] })" | ||
} | ||
""" |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's up with this diff?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
– and, in general, now that this is in (from what I understand) a ready for merge/review state, can you back out all these unrelated config/workflow changes into a separate PR and land them first or separately later? Don't want to merge a big experimental new feature (which has a non-zero chance of needed to be reverted later) with a lot of unrelated changes.