Converge in-app restarts with restarts from an IDE #2725
Merged
+588
−651
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.
Internally, there are two different code paths to trigger hot restart:
_hotRestartfunciton indwds_vm_client.dart. This codepath removes existing breakpoints and blocks main script execution (by passingpauseIsolatesOnStartintodartHotRestartDwds) until the connected debugger re-adds breakpoints.dartHotRestartDwdsdirectly. This codepath does not clear breakpoints and does not block main startup.The second flow with in-app triggered restart is currently doesn't work as intended:
As a result, the user does not see the breakpoint, but it's there, in Chrome debugger state, and the execution stops on it, and there's no way for user to remove it (except for clearing all breakpoints by the restart/reload from an IDE, which clears chrome debugger state).
This CL attempts to converge the code paths by changing how in-app restarts work:
client.dart) sendsHotRestartRequestto DWDS, so that it arrives todev_handler.dart.app_connection.dart).Contribution guidelines:
dart format.Many Dart repos have a weekly cadence for reviewing PRs - please allow for some latency before initial review feedback.
Note: The Dart team is trialing Gemini Code Assist. Don't take its comments as final Dart team feedback. Use the suggestions if they're helpful; otherwise, wait for a human reviewer.