Commit Graph

4500 Commits

Author SHA1 Message Date
Paul Berry c509ad1e41 Change "could not" to "couldn't" in error messages
See comments at
https://dart-review.googlesource.com/c/sdk/+/186320/4/pkg/analyzer/lib/src/generated/resolver.dart#3423.
On the recommendation of the documentation team, we use a more
informal tone in messages.

Change-Id: I0c243669ebd91b8f4a745530582e0f829769a754
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189100
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-03-10 15:26:38 +00:00
Brian Wilkerson acdd5231fd Deprecated setters should not take priority over non-deprecated getters
I hadn't really noticed this behavior until we deprecated large numbers
of setters in the AstNode hierarchy.

Change-Id: If068edd0a55a7a828b7ad114ff5812716ff265e1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190283
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-10 00:55:42 +00:00
Brian Wilkerson 7a862df2d8 Compute the context_type feature in instance creation expressions
Change-Id: I72c34e7ecb24377605b8983bcbdb98bdfd73c6f8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190281
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-09 23:27:02 +00:00
Brian Wilkerson 038c653c08 Fix a bug in the sort_child_property_last fix
Fixes: https://github.com/dart-lang/sdk/issues/45220
Change-Id: I6634443de0fd87983097cb452238b6b1588ae818
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190101
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-09 17:51:00 +00:00
Brian Wilkerson 097a825e4a Suggest the fix add_ne_null only when the type of the condition is nullable
Change-Id: Iaad91d5e8b7f5725a8ccb7430eb3f7570a1eea38
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189842
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-08 23:13:43 +00:00
Brian Wilkerson 7d971fad1c Stop suggesting non-factory constructors for abstract classes
Change-Id: I3ed6936d36b0f35cea7950ac089c89efacdf0ca6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189680
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Danny Tuppeny <danny@tuppeny.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-08 18:53:51 +00:00
Sam Rawlins 7ee3f73a9a Analyzer: Allow generic function types as type arguments and bounds
Bug: https://github.com/dart-lang/sdk/issues/44929
Change-Id: I9c83a9abd47ec6b3d59c118493c838632fc3182a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/185305
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-08 18:32:31 +00:00
Konstantin Shcheglov 53c8eda967 Keep more specific types for AnalysisContextCollectionImpl to avoid downcasts.
It seems to me that implicitly expecting DriverBasedAnalysisContext
is equivalent to explicitly stating this with types.

Change-Id: I16ec14e73030d9b34242a2f4ad582e93fc44afa7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189382
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-06 06:23:25 +00:00
Konstantin Shcheglov c8d6f85d0f Enforce lint unnecessary_parenthesis in analysis_server.
Change-Id: Ib68c124988743b45807015e7274f429fff67fe44
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189384
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-06 05:20:16 +00:00
Brian Wilkerson 7aaf620de7 Make it easier to experiment with enabling or disabling existing features with example
Change-Id: I22b7a1259fee585e1baeba0faf7b62c9f0d2f5ed
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189340
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-06 01:02:24 +00:00
Konstantin Shcheglov 3f5694c827 Issue 45141. Check for loadLibrary() using namespace.
Bug: https://github.com/dart-lang/sdk/issues/45141
Change-Id: Ifb0825d66a560d0136873942f9666d3dc630b6c6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189320
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-05 22:21:54 +00:00
Konstantin Shcheglov 9f5f825d96 Check that the element of MethodInvocatio is ExecutableElement.
Change-Id: Ibf414e624b32b6ac5a0b0fde13422db45f875a15
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189262
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Danny Tuppeny <danny@tuppeny.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-05 16:50:56 +00:00
pq 82ad11aeb9 fix all support for USE_NOT_EQ_NULL
Change-Id: I928c669eed12c7f0a6082db059f7ce4133d4f27a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189164
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-04 23:14:20 +00:00
pq d202a4c719 fix all fix for USE_EQ_EQ_NULL
Change-Id: I02f78f01b3fcc647dd8e3ca0557cb4f023a745f4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189140
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 21:58:39 +00:00
Brian Wilkerson 84cafbde9d Remove some unused code from analysis_server
Change-Id: I369a93a9d67cf6a9346e0edcc439d34a8e959e3b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189161
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 21:13:29 +00:00
Danny Tuppeny bacd31dcdf [analyzer] Flatten capabilities into a wrapper to simplify checking capabilities
Change-Id: I184e8ce3379bbb6ae4d8e81d80979510a8f1f393
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188724
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 19:51:09 +00:00
Danny Tuppeny dcc466919f [analyzer] Suggest named args between partially-typed names and values
Fixes https://github.com/dart-lang/sdk/issues/35414.

Change-Id: I847aa87c56de248e8e704790c163de4f83813bbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189081
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 18:39:49 +00:00
Danny Tuppeny 78dd7a4bb3 [analyzer] Suggest arg names in front of positionals
Fixes https://github.com/dart-lang/sdk/issues/40654.

Change-Id: I329d8b4af9371e8d61c4044bb003f9c22cd72c41
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182783
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 18:21:19 +00:00
pq 567d745312 fix all support for REPLACE_BOOLEAN_WITH_BOOL
Change-Id: I9b9c9d1732653697abd66b2d7b0d09e818a33ae3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189101
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 17:54:39 +00:00
Danny Tuppeny 0635916aeb [analyzer] Set InsertTextMode.asIs for LSP completions when supported
Fixes https://github.com/dart-lang/sdk/issues/45147.

Change-Id: Id6c758eadf9a79ec9cd285fef9e50a1540cdc280
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188723
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 16:44:49 +00:00
pq 64012a281f fix all support for REMOVE_UNNECESSARY_CAST
Change-Id: I1507f07271390d24aefed9db96a7fbf9e304ff01
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189000
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 16:20:27 +00:00
pq c43be3487b bulk fix support for REMOVE_UNNECESSARY_PARENTHESES
Change-Id: I4ce0336398adab64ba6bd811ab918d3f77a0c6cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188880
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-03 23:01:15 +00:00
Sam Rawlins 8d7dfd6769 Analysis_server: Improve add_null_check fix
This adds add_null_check support for prefix operations, postfix operations,
binary operations, and cascades.

Bug: https://github.com/dart-lang/sdk/issues/43708
Change-Id: I2d1e80f2ccad58adfbac72400ce44efd48751833
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188740
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 22:31:14 +00:00
Brian Wilkerson 38a4d48974 Fix bugs in convert_to_generic_function_syntax
Fixes: https://github.com/dart-lang/sdk/issues/45178
Change-Id: Idcdb392637c85225caeba0bab3f539e30abf55f7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188742
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 21:10:34 +00:00
Konstantin Shcheglov e64981d94e Use getDriverFor() and check for null.
I see that sometimes we get a watcher event that AndroidManifest.xml
was changed, and we don't have the corresponding analysis context.
I suspect that these events are buffered, so we quickly first get
an event that forces us to re-create analysis contexts, and then
the event about AndroidManifest.xml, and if the new set of analysis
contexts does not include the AndroidManifest.xml, we get null.

Change-Id: Ie0bcfbb8f7baa6b6335bf6326f2ea2b7093a1b67
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188741
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 20:32:44 +00:00
pq 944169ad81 fix attempts to fix lints not in the producer map
Fixes: https://github.com/dart-lang/sdk/issues/45177

Change-Id: Id3282f69ee1639b45f5de938f30ae414cee4a3cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188780
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-03 20:01:04 +00:00
pq 4b35c50cbd fix all support for ADD_NE_NULL
Change-Id: I03e09133fa8af48da1395a538c042c1ee33137de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188681
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 18:22:24 +00:00
Danny Tuppeny d901f7326a [Analyzer] Add code completion for Pub package names
Change-Id: I0fa8fb1c2801e2acb2d2cf75f7efecf4f9058eeb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176120
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 17:12:58 +00:00
pq e7644d9a4c fix all support for REMOVE_UNUSED_IMPORT
* adds support for non lint fix all fixes
* enables multi fix for REMOVE_UNUSED_IMPORT

Change-Id: Ib08e82686622d449592cd899df8d63873232a703
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188587
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 02:58:57 +00:00
pq f5d71fd1fe enable lint fix-in-file processing
Replaces: https://dart-review.googlesource.com/c/sdk/+/186220

Note:

* this is only for lint producers
* `VerificationTests` ensure that file multi-fixes are tested (as bulk fixes)

Change-Id: Ia2543a31bc9db2cd8ff9c5757e4695a0302fe9b1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188585
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-02 22:48:17 +00:00
Brian Wilkerson 61d09495b9 Add code to support comparing the quality of code completion relevance tables
Change-Id: Ib4500712e3e63114a357af8cf2c2479b70cc27d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188583
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-02 22:37:47 +00:00
Danny Tuppeny 5c2afd5e34 [analyzer] Base LSP filterText on displayed label, not inserted text
Fixes https://github.com/dart-lang/sdk/issues/45157.

Change-Id: I13d42a1c37b30c8e4d7969a6a20ed14f9fd1f0b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188466
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 17:41:32 +00:00
Danny Tuppeny f77eba360e [analyzer] Generate completion text more suited to replacements for LSP
Change-Id: Id8c20ea7e1c32759673c32c9f4b363345bc23116
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188290
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 16:14:12 +00:00
Danny Tuppeny ff61ff7d33 [analyzer] Call toJson() on items in Lists when generating LSP json
Change-Id: I9f5876dc577499ae609079eaecae6a3eb47535d7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188288
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 15:24:38 +00:00
Konstantin Shcheglov c33616c713 Remove isContainedInDotFolder(), switch to isAnalyzed().
Change-Id: I037947c253afe8d676bc2bf44e4b0eeaadc56e19
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187641
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-25 23:19:14 +00:00
Konstantin Shcheglov 0e9f75c14c Fix for NPE in ReplaceIfElseWithConditional.
Saw it in crashes and was able to reproduce.

Change-Id: I6cb79b51319730636f1a0200ea0ba71e2ece015a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-25 21:10:27 +00:00
Konstantin Shcheglov 34bec2f1a5 Deprecate AnalysisDriver.contextRoot
Change-Id: I2dfb7f2f751e3c3ba7cdc11c94b9dfa5ddd35670
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187140
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-25 19:35:11 +00:00
Danny Tuppeny 85aecd53f4 [analyzer] Seed overlay modification stamp with DateTime.now().millisecondsSinceEpoch
Fixes https://github.com/Dart-Code/Dart-Code/issues/3160.

Change-Id: If57d37796dc36c06ec4bbd986719cecbbc1a98a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187462
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-02-25 18:02:36 +00:00
pq ecaabe591b prefer constants for fix kind priorities
Change-Id: I665bd9bab8e2ea54a3b1bf295135f4024f1b2440
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187480
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-02-25 17:33:36 +00:00
Konstantin Shcheglov b3f5c31465 Analyze AndroidManifest.xml files in ContextRoot.analyzedFiles()
Change-Id: I30ceb3c714ffaa498b4f348ed5d3fdc62915feb2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187380
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-25 16:52:36 +00:00
Konstantin Shcheglov a629b48fdc Remove file name constants from AnalysisEngine.
Change-Id: I3457973212e704a0fedee20db17956c017ec91ac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187260
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-25 05:52:56 +00:00
Konstantin Shcheglov 2c3d4c9d88 Use InstrumentationService instance where available.
Change-Id: I615faf1e74fdd5134a35f0d562c289d8f2d21a1c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187280
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-25 05:52:35 +00:00
pq 94f6b6ec94 migrate multi-fixes to unique fix kinds
Change-Id: If28b89ebeab3be8120cb9189d7c54eb1393beb6a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186741
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-25 00:24:35 +00:00
Konstantin Shcheglov 722fb9fbc6 Use file_paths.isAndroidManifestXml() instead of 'manifest.xml'
I am a bit surprised that there are no failing tests before or after.

Change-Id: Ie2f94ba6437f95a95c74ec301f2bcbad4ebd9b49
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187100
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-24 21:13:14 +00:00
Konstantin Shcheglov c9332fb487 Renames for check/analyze non-Dart files.
Change-Id: I31d9b19429f73e4c9c40f95cf5e7a55ac4a5a09a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186900
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-24 21:10:06 +00:00
Konstantin Shcheglov fd81b73e67 Replace AnalysisEngine.isDartFileName() with file_paths.isDart()
Change-Id: Icf5d524945ffdb7087b96555968804946b4e5af4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187062
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-24 21:03:24 +00:00
Konstantin Shcheglov 7b68624218 Remove unused analyzedFilesGlobs in AbstractAnalysisServer.
Change-Id: I46f0b7c1b426d3c530d568df3cb04c0ad194d186
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186802
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-24 04:14:37 +00:00
Konstantin Shcheglov c3a41ab771 Remove ContextManagerImpl.createSourceInContext()
Change-Id: I58bfa95d0cbddb96f79043b854f398602420268d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186801
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2021-02-24 04:11:07 +00:00
Konstantin Shcheglov 5036e3ad2c Ensure that _getSdkPath() returns absolute normalized path.
Change-Id: I92dc53e6248e36c2025cd848057eb732b0ae69be
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186744
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-24 00:47:37 +00:00
Danny Tuppeny c4edcc4cfa [analyzer] Support separate insert/replace ranges for completions
Fixes https://github.com/Dart-Code/Dart-Code/issues/2998.

Change-Id: I8e989932c16dc97f704c79c06374c8d1d1881f7e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186581
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-02-23 17:43:11 +00:00