-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Parser error recovery discards too much in PNGS.sort((String a, Str1)); #884
Comments
Verified with --dump_ast_format console. This might be a simple case, so I'll take a quick look. parserChew.dart:1: Unexpected token 'IDENTIFIER' (note: error marker on a) |
So as I suspected, the parser expects a ')' after String, and eats tokens till it finds it. I'm curious to know what you think the AST should look like in this case? DartNode doesn't have an List<DartNode> errors attached to it, so 'IDENTIFIER a, IDENTIFIER Str1' can't get stuffed on DartParenthesizedExpression. I assume PNGS is a list and you're calling sort() with the compare closure, in which case this should look more like a function with a missing => or {}. |
Your assumption is correct. The user (i.e. me) was typing a compare function and tried to complete "Str" expecting "String" to appear in the list. The => would be typed shortly thereafter. I don't care what the AST looks like as long as it has enough information that I can produce a completion list for "Str". Some sort of synthetic error node would be fine -- the completion engine is just a huge set of heuristics, and adding one more won't hurt anything. |
This comment was originally written by zundel@google.com Removed the owner. |
Removed Area-Compiler label. |
Added this to the Later milestone. |
…stack_trace, stream_channel, test, tools, watcher, webdev, yaml, yaml_edit Revisions updated by `dart tools/rev_sdk_deps.dart`. async (https://github.com/dart-lang/async/compare/8deaa40..f454380): f454380 2023-03-02 Natalie Weizenbaum Add `StreamExtensions.listenAndBuffer()` (#235) dartdoc (https://github.com/dart-lang/dartdoc/compare/77d5994..98fa859): 98fa859c 2023-03-05 dependabot[bot] Bump cli_util from 0.3.5 to 0.4.0 (#3360) html (https://github.com/dart-lang/html/compare/0b8025c..08643e9): 08643e9 2023-03-02 Devon Carew prep for publishing 0.15.2 (#205) http (https://github.com/dart-lang/http/compare/1500a71..805a147): 805a147 2023-03-02 Kevin Moore Fix some spelling (#884) 5a2f036 2023-03-02 Kevin Moore Move to pkg:dart_flutter_team_lints, require Dart 2.19 (#883) 35b2cef 2023-03-02 Bahaa Fathi Yousef Corrected the spelling of "Implements" in "/http/lib/src/io_client.dart" (#871) bb86cf3 2023-02-27 Brian Quinlan Provide access to NSURLSession.sessionDescription (#881) http_multi_server (https://github.com/dart-lang/http_multi_server/compare/2cd5355..7bd190c): 7bd190c 2023-03-06 Kevin Moore Require Dart 2.19, enable and fix new team lints (#51) source_map_stack_trace (https://github.com/dart-lang/source_map_stack_trace/compare/a60ef54..45ea368): 45ea368 2023-03-07 Kevin Moore Require Dart 2.19, use pkg:dart_flutter_team_lints (#35) stream_channel (https://github.com/dart-lang/stream_channel/compare/0850515..a20ccd4): a20ccd4 2023-02-28 Kevin Moore move to pkg:dart_flutter_team_lints lints, fix code, bump min SDK (#87) test (https://github.com/dart-lang/test/compare/1307cc5..92da93a): 92da93a8 2023-03-06 Devon Carew dogfood the new setup-dart action (#1964) e49818ec 2023-03-01 dependabot[bot] Bump github/codeql-action from 2.2.1 to 2.2.5 (#1963) tools (https://github.com/dart-lang/tools/compare/28b7be8..a1c3506): a1c3506 2023-03-07 Devon Carew dogfood the new setup-dart action (#25) fb46723 2023-03-07 Elias Yishak Update pubspec.yaml (#24) 5a72344 2023-03-06 Elias Yishak Add `DashEvent` for toggling telemetry collection + send event whenever toggled (#23) watcher (https://github.com/dart-lang/watcher/compare/0ca6638..5968409): 5968409 2023-03-07 Kevin Moore blast_repo fixes (#139) e8f771a 2023-03-07 Kevin Moore Require Dart 2.19, use new team lints (#138) webdev (https://github.com/dart-lang/webdev/compare/deb801b..c007560): c007560 2023-03-06 Elliott Brooks (she/her) [MV3 Debug Extension] Show warning when clicking on debug extension for non Dart app (#2015) 1a010dc 2023-03-06 Devon Carew dogfood the new setup-dart action (#2017) 07743a3 2023-03-06 Anna Gringauze Fix exception mapping from JS to dart (#2004) eb63b31 2023-03-03 Elliott Brooks (she/her) Create a Dart Debug Extension issue template (#2014) 85f35d4 2023-03-01 Devon Carew update publishing automation integration (#2002) e748045 2023-02-28 Anna Gringauze Prepare to release webdev 3.0.1 (#2000) 5355050 2023-02-27 Elliott Brooks (she/her) [MV3 Debug Extension] Ignore page reloads for detecting navigation away from app (#1994) 4e08276 2023-02-27 Anna Gringauze Prepare to release dwds 18.0.0 (#1993) fc54d68 2023-02-27 Anna Gringauze Fix expression evaluation failures on empty scopes (#1998) 496a2b4 2023-02-27 Anna Gringauze Temporarily disable publish verification (#1996) yaml (https://github.com/dart-lang/yaml/compare/a6d8781..1ad2f49): 1ad2f49 2023-03-01 Kevin Moore Require Dart 2.19, migrate to dart_flutter_team_lints, make associated fixes (#138) 4d369fd 2023-03-01 Kevin Moore benchmark: fix output.json (#137) yaml_edit (https://github.com/dart-lang/yaml_edit/compare/998eea2..0668eb5): 0668eb5 2023-03-02 Jonas Finnemann Jensen Wrap recursively, prepare release (#28) a4ff857 2023-03-01 Mohamed Ishad Update CHANGELOG.md (#37) 2fdfbdb 2023-02-28 Mohamed Ishad Fix for issue #23 (#34) 494ad7c 2023-02-25 MikiPaul fixed typo (#36) Change-Id: I101c94575c20fca55c7440e84668413207073a32 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287162 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Devon Carew <devoncarew@google.com>
Full source:
class Foo { int boo = 7; mth() { PNGS.sort((String a, Str1)); }}
This is from a code completion test. The completion point is just before the 1 in Str1. The parser produces an AST for the body of mth() that is equivalent to:
{
PNGS.sort((String));
}
There's no info about the identifier to be completed, so code completion cannot do anything. Note that two identifiers are lost: a, and Str1.
The text was updated successfully, but these errors were encountered: