-
Notifications
You must be signed in to change notification settings - Fork 29.8k
[flutter_tools/dap] Improve rendering of structured errors via DAP #131251
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
Conversation
In the legacy VS Code DAP, we would deserialise the Flutter.Error event and provide some basic colouring (eg. stack frames are faded if not from user code) and attaching Source metadata so links are clickable. In the new DAPs we originally used `renderedErrorText` which didn't support either of these. This change adds changes to use the structured data (with some basic parsing because the source classes are in package:flutter and not accessible here) to provide a similar experience. Fixes Dart-Code/Dart-Code#4571.
Abjithwyn
left a comment
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.
everything look fine
Abjithwyn
left a comment
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.
ok
packages/flutter_tools/lib/src/debug_adapters/error_formatter.dart
Outdated
Show resolved
Hide resolved
packages/flutter_tools/lib/src/debug_adapters/error_formatter.dart
Outdated
Show resolved
Hide resolved
| } | ||
|
|
||
| enum _DiagnosticsNodeStyle { | ||
| flat, |
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.
are there going to be more values 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.
There are other values in the source enum, but this is the only value we currently use for this formatting, so I trimmed the enums just to the used values (otherwise we'd be needlessly keeping them in-sync with the source).
In future it would be nice to extract these classes/enums from package:flutter into a shared package that flutter_tools can use, but I failed to do that cleanly previously because the source types have lots of references to other Flutter framework types.
christopherfujino
left a comment
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.
LGTM module a few nits
…tter.dart Co-authored-by: Christopher Fujino <fujino@google.com>
…tter.dart Co-authored-by: Christopher Fujino <fujino@google.com>
…lutter#131251) In the legacy VS Code DAP, we would deserialise the Flutter.Error event and provide some basic colouring (eg. stack frames are faded if not from user code and the text is split between stdout/stderr to allow the client to colour it). In the new DAPs we originally used `renderedErrorText` which didn't support either of these. This change adds changes to use the structured data (with some basic parsing because the source classes are in package:flutter and not accessible here) to provide a similar experience. It would be nicer if we could use the real underlying Flutter classes for this deserialisation, but extracting them from `package:flutter` and removing all dependencies on Flutter is a much larger job and I don't think should hold up providing improved error formatting for the new DAPs. Some comparisons:  
Manual roll requested by tarrinneal@google.com flutter/flutter@1d44fbd...1d59196 2023-07-31 maity.sumitbikram@gmail.com Appended period remove & Uri parsing fix. (flutter/flutter#131293) 2023-07-31 31812582+thisisjaymehta@users.noreply.github.com Fixed regex to show missing assets file error (flutter/flutter#131160) 2023-07-31 36861262+QuncCccccc@users.noreply.github.com Update `CheckboxListTile` and `CalendarDatePicker` tests for M2/M3 (flutter/flutter#131363) 2023-07-31 jacksongardner@google.com Reland --omit-type-checks for benchmarks. (flutter/flutter#131493) 2023-07-31 32242716+ricardoamador@users.noreply.github.com Update the cirrus key jul-31-2023 (flutter/flutter#131624) 2023-07-31 36861262+QuncCccccc@users.noreply.github.com Add Expanded/Collapsed State for Semantics (flutter/flutter#131233) 2023-07-31 36861262+QuncCccccc@users.noreply.github.com Reland - "Update Unit Tests for M2/M3" (flutter/flutter#131504) 2023-07-31 engine-flutter-autoroll@skia.org Roll Flutter Engine from ae6d1d60df95 to b83172a4e995 (4 revisions) (flutter/flutter#131614) 2023-07-31 34871572+gmackall@users.noreply.github.com Upgrade compile and target sdk versions in tests and benchmarks (flutter/flutter#131428) 2023-07-31 engine-flutter-autoroll@skia.org Roll Flutter Engine from b11a832ea7d4 to ae6d1d60df95 (1 revision) (flutter/flutter#131611) 2023-07-31 engine-flutter-autoroll@skia.org Roll Packages from 10aab44 to 60e9a54 (6 revisions) (flutter/flutter#131607) 2023-07-31 6655696+guidezpl@users.noreply.github.com Fix dartdoc for `ButtonSegment` constructor (flutter/flutter#131400) 2023-07-31 danny@tuppeny.com [flutter_tools/dap] Improve rendering of structured errors via DAP (flutter/flutter#131251) 2023-07-31 dacoharkes@google.com [doc] Fix module_test_ios comments (flutter/flutter#131470) 2023-07-31 temeddix@gmail.com Use Flutter app project's NDK version from FFI plugin (flutter/flutter#131141) 2023-07-31 engine-flutter-autoroll@skia.org Roll Flutter Engine from 22f9aad5aba5 to b11a832ea7d4 (2 revisions) (flutter/flutter#131597) 2023-07-31 engine-flutter-autoroll@skia.org Roll Flutter Engine from b84c93601684 to 22f9aad5aba5 (3 revisions) (flutter/flutter#131592) 2023-07-31 engine-flutter-autoroll@skia.org Roll Flutter Engine from d95adb9c8bc6 to b84c93601684 (1 revision) (flutter/flutter#131585) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC camillesimon@google.com,rmistry@google.com,stuartmorgan@google.com,tarrinneal@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…lutter#131251) In the legacy VS Code DAP, we would deserialise the Flutter.Error event and provide some basic colouring (eg. stack frames are faded if not from user code and the text is split between stdout/stderr to allow the client to colour it). In the new DAPs we originally used `renderedErrorText` which didn't support either of these. This change adds changes to use the structured data (with some basic parsing because the source classes are in package:flutter and not accessible here) to provide a similar experience. It would be nicer if we could use the real underlying Flutter classes for this deserialisation, but extracting them from `package:flutter` and removing all dependencies on Flutter is a much larger job and I don't think should hold up providing improved error formatting for the new DAPs. Some comparisons:  
In the legacy VS Code DAP, we would deserialise the Flutter.Error event and provide some basic colouring (eg. stack frames are faded if not from user code and the text is split between stdout/stderr to allow the client to colour it).
In the new DAPs we originally used
renderedErrorTextwhich didn't support either of these. This change adds changes to use the structured data (with some basic parsing because the source classes are in package:flutter and not accessible here) to provide a similar experience.It would be nicer if we could use the real underlying Flutter classes for this deserialisation, but extracting them from
package:flutterand removing all dependencies on Flutter is a much larger job and I don't think should hold up providing improved error formatting for the new DAPs.Some comparisons:
(fyi @jacob314 @christopherfujino)
Fixes Dart-Code/Dart-Code#4571.
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.