Commit Graph

3080 Commits

Author SHA1 Message Date
Paul Berry 9aa88b1168 Add a const bool to make it easy to enable dumping the nullability graph
Change-Id: I6fc5c5f78cf1665f2551206979ebb5246f03c998
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104480
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-03 02:20:26 +00:00
Paul Berry c229555d87 Rework the graph representation for the migration tool based on the design doc.
Change-Id: I1777042926f83cd2f95da6c6db315a8d49c64df1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104422
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-03 02:20:26 +00:00
Paul Berry ca84a69609 Modify NullabilityNode to allow the 4 possible states from the design doc.
Change-Id: Ic28867227ad6080d693eff7576335e0a15bbe178
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104440
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-03 00:00:05 +00:00
Konstantin Shcheglov 519ddc1ac4 Document that AVAILABLE_SUGGESTION_SETS also turns on existingImports.
R=brianwilkerson@google.com

Change-Id: I053c68eb541358f0bbd891ca16f1c5628e701096
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104342
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-06-01 17:27:03 +00:00
Konstantin Shcheglov 577ab8d631 Issue 37129. Check for missing importedLibrary.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/37129
Change-Id: I60f5c1382cdb19988e786fff81e8450a6de3888c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104360
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-06-01 17:26:41 +00:00
Danny Tuppeny 190599de78 Skip LSP cancellation handling for Notification requests
Change-Id: I0edf6206db66ed07390dafcd5ea72bb2397468fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104300
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-31 14:45:24 +00:00
Konstantin Shcheglov a332c414f1 Switch server to using DeclarationsTracker for 'Import Library' quick fixes.
We need this to stop using UnlinkedUnit with summary2.

R=brianwilkerson@google.com, paulberry@google.com

Change-Id: Iaca2f19e6a168818e171f09e6eeda71a75854232
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103921
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-29 16:45:32 +00:00
Danny Tuppeny fca2c82be0 Add support for cancelling requests in LSP server
Change-Id: I2a651b1e4f8509c7f10d245b2369aab842d08041
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103845
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-29 14:52:40 +00:00
Konstantin Shcheglov da3ead02c1 Issue 3446. Recurse into attributes to find children widgets.
R=brianwilkerson@google.com, devoncarew@google.com

Bug: https://github.com/flutter/flutter-intellij/issues/3446
Change-Id: Ifa83367c68b406b342e0f99195015d98eaedb049
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103900
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-05-28 20:09:25 +00:00
pq fc17a90bed assist for sorting child properties last
Change-Id: Ia39f5b170858789897579f952ece03dcf6765e3f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103860
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-28 20:00:05 +00:00
Danny Tuppeny 85c28b804d Check LSP support for workspace/applyEdit before giving CodeActions that require it
Change-Id: I88af71be9788bd417a1f739f0f3e0efe930c2cd0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103842
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-28 14:10:26 +00:00
Danny Tuppeny e4362612b0 Add support for dynamic registration for LSP
Change-Id: I55c7b2f7d683acab0f6aa4bdbcba3b155d2de32c


Change-Id: I6a0b13856053bd86e77637b9664c7fe41194c5f3


Change-Id: I7472cf93efc29585ccbcbd1e6c7b9f703872b3c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103532
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-27 17:36:20 +00:00
pq 5b200ea3dc remove unused import
Change-Id: Ib4b92a3cf453ed4f8945f62bf4213f03ceb8910d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103700
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2019-05-25 15:33:35 +00:00
Jaime Wren 03e415a4e8 Update the hover 'containingLibraryName' to not include the 'file:///' prefix.
This is a follow up on a comment in the previous change https://dart-review.googlesource.com/c/sdk/+/103481/.

Change-Id: I0f377d6c7d68d55464a4e111a6a65715a82e0591
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103546
Reviewed-by: Jaime Wren <jwren@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
2019-05-24 21:54:56 +00:00
Konstantin Shcheglov 4979a51a9c Add information about existing imports to completion response.
This adds quite a lot of information though, because we send many
strings.

Before: 20686 characters.
After:  55345 characters.

Theoretically we could do better, and send information about existing
imports only once as well, so when the user continues typing in a
single file, without touching imports, we don't send any new data
about imports (maybe just a confirmation that it is still the same).
But I'm not sure if this is a worthwhile optimization.

Actually, even included suggestion sets have similar property - they
don't change for a given file, unless there are changes to other
libraries which we might want to include.

R=brianwilkerson@google.com

Change-Id: I2f55e2dc85508849146aa39eb279beabaec937c0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103561
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-24 21:35:06 +00:00
pq e42d4a1d89 fix missing returns in lambdas
Change-Id: I5005ffc057749468844d47e8e5c195871586bd57
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103601
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2019-05-24 19:24:02 +00:00
Devon Carew 9081f28fbb [analyzer] fix a copy paste doc issue and 2 unused imports
Change-Id: I20f4ae5454c2bceafd3b86e279357dee3b321006
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103644
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2019-05-24 16:31:25 +00:00
Dan Rubel dfbc3923e4 add default CompilerContext in analysis server
This should uncover the underlying error occurring in
Fix https://github.com/dart-lang/sdk/issues/37055

Change-Id: I633da211b943e5c4262a2f3d83ef0a2217c5b8a7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103562
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-05-23 22:46:15 +00:00
Konstantin Shcheglov 5822645e66 Support for 'Wrap with Xyz' for expressions in ExpressionFunctionBody.
R=brianwilkerson@google.com

Bug: https://github.com/flutter/flutter-intellij/issues/3500
Change-Id: I9e14d6cd1a79070fd489740a881199707be83e90
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103563
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-05-23 20:00:26 +00:00
Jaime Wren cd2188f2f5 DAS change in hover behavior- the containingLibraryName now returns the URI of the containing library instead of the (possibly non-existent) library name
Change-Id: Ief2a7615b92ca635c696d48f907677bae538577b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103481
Reviewed-by: Jaime Wren <jwren@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-23 19:06:19 +00:00
Konstantin Shcheglov cfdcfe2bfe Update DeclarationsTracker when a context options change.
E.g. when .packages changes, we want to re-scan the context for new
available libraries. We also don't want to discard all context, and
resend everything.

R=brianwilkerson@google.com

Bug: https://github.com/Dart-Code/Dart-Code/issues/1723
Change-Id: I19ee71c1d021fb9bcda9d02d86b7cbb078704aa7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103320
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-05-21 18:43:36 +00:00
Konstantin Shcheglov 181685b852 Allow disabling individual server features.
Change-Id: I4d06eaf76300c6784b88bd64ad322c306a276488
Bug: https://github.com/dart-lang/sdk/issues/36881
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103182
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-21 18:40:26 +00:00
Danny Tuppeny 88f139db68 Fix NPEs when processing unknown kinds in LSP
Fixes https://github.com/dart-lang/sdk/issues/37016.

Change-Id: I72eae50a03bb2c73678b65a07e6924a2a53d137e
Bug: https://github.com/dart-lang/sdk/issues/37016
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103131
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-21 13:30:10 +00:00
Danny Tuppeny 022adc5bc3 Implement using suggestion sets for LSP completions
Change-Id: I66d725c09492040be5e621d80270b12a21bb8192
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102704
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-20 10:09:41 +00:00
Danny Tuppeny 0f24e4b277 Wire up LSP completion resolution provider + sendWorkspaceEdit command
Change-Id: I424b4d9bbc64f6fea7a4d9b06e2180b3fbd21f86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102703
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-20 10:09:41 +00:00
Danny Tuppeny 7be23977f1 Minor LSP tweaks in preperation for included suggestionSets
Change-Id: I9dff56139754b8a182e906d64dd0bcc009c4b6fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102701
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-20 10:09:41 +00:00
Paul Berry 42334a7f67 Infer when the bound of a type parameter needs to be nullable.
Change-Id: I6c500318a66e05a0b3d10c85f07660dfe37339ea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103000
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-05-17 20:41:11 +00:00
Danny Tuppeny 8209013be3 Fix DartDoc section in Diagnostics server for LSP
Change-Id: I8bb40a08b7b6aa53c962bc5a86eb3e68a330a87c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-16 13:34:47 +00:00
Danny Tuppeny 6805bb52ea Add implementation/tests for textDocument/Implementation
Fixes https://github.com/dart-lang/sdk/issues/36896

Change-Id: Ie450c6c5257ac13aa3c7b48343aa8b015b1dc4d8

Tweak tests to require all, plus fix empty classes

Change-Id: Iefff7e24c6b965f0a1bc5abf8adbac26ad38e3a0

Add implementation/tests for textDocument/Implementation

Change-Id: I640379d83aeb9baa73d04d98d39147e2b748d6c3
Bug: https://github.com/dart-lang/sdk/issues/36896
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102366
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-15 09:08:28 +00:00
Danny Tuppeny 3a7ce7a646 Enable declarations tracker for LSP to support dart doc macros
Change-Id: I614be91ecf7a1afc377afeee70e559cff324dc61
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102368
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-05-15 08:16:18 +00:00
Danny Tuppeny cdcc387084 Add LSP custom notifications for analyzing status
Change-Id: I0d26d274c9ccc472da81e45d0c9170104bbd9414
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102370
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-15 06:35:48 +00:00
Paul Berry f440f77dd3 Store the nullability graph in the nullability nodes rather than in maps.
This should improve performance by avoiding map lookups.

Change-Id: Ic22a4be7486be1b8e9c164e9133c81a4851146a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102440
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-05-13 22:31:44 +00:00
Paul Berry 3ecb89ba8c Move NullabilityGraph into nullability_node.dart.
This will allow NullabilityGraph and NullabilityNode to have shared
access to private data without having to expose it to all other
libraries.

Change-Id: Idbef9a60cdeb273cd5739c45d501370d89b653df
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102403
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-05-13 22:31:44 +00:00
Paul Berry 6080e546c9 Rearrange NullabilityNode class hierarchy.
Instead of making immutable nullability nodes derive from mutable ones
(forcing the mutation method to be overridden to thrown an exception),
we make sibling classes for mutable and immutable nodes.  This will
allow additional mutation methods to be added in a less kludgy way.

Change-Id: Ib147583e0a9c4b56333ad9c56c3c725f02ab19ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102402
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-05-13 22:31:44 +00:00
Paul Berry bed74d6e97 Remove NullabilityGraph._upstream.
Its only purpose was to make NullabilityGraph.getUpstreamNodes fast to
compute, but that function was only used in unit tests anyway so there
was no need for it to be fast.  (Minor exception: it was also used in
an assert statement, but I was able to change that to
Nullabilitygraph.getUnconditionalUpstreamNodes).

Change-Id: I8be18560c2f454908eb0e31d198fd22961a89278
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102388
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-05-13 19:23:51 +00:00
Paul Berry 228df22dbf Remove the old constraint variable based nullability migration logic.
Change-Id: I4fe2836160acf5adfd805a327616880f857e9b7a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102387
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-05-13 16:38:01 +00:00
Paul Berry 83607564ea Switch nullability migration over to the new algorithm based on the new nullability graph.
Change-Id: I1cbfba8d3d46020d8e943109e582d61315781561
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102386
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 16:38:01 +00:00
Paul Berry 354bfb5bab Remove a few more usages of NullabilityNode._nullable.
This will allow us to switch to the new nullability migration algorithm.

Change-Id: I0246275aa07243f809fa490fdeb6b729e407c9c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102385
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 16:38:01 +00:00
Paul Berry b05190499d Add new nullability propagation logic based on the NullabilityGraph.
For now, we verify that the new logic produces the same results as the
old logic.  In follow-up CLs, the old nullability propagation logic
will be removed.

Change-Id: I2004067093e1f5a5cdf51786ed409058707c4a49
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102384
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-05-13 15:43:40 +00:00
Paul Berry f3aca11478 Record not-supplied named parameters in the nullability graph
Change-Id: Ie9656b6de3e1545f9021e7d1d8d6747c51f1e342
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102400
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 15:43:40 +00:00
Paul Berry 2fbc446d23 Record information about guards in the nullability graph.
Change-Id: I169133b85e0405d1ff6b3384a6d99c7fcb33a0fd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102382
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 15:43:40 +00:00
Paul Berry 0ce9cb7267 Encode unconditional control flow information in nullability graph.
Change-Id: I598e05b61d6639d72ae6f84ab48f4e4051c87014
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102302
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 15:43:40 +00:00
Paul Berry 8a8a700336 Fix nullability of inferred dynamic types
Change-Id: Ib27c5ade4a57bbfa73c528adbafaaa19be53c97c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102301
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 15:43:40 +00:00
Paul Berry 9bbc06fddb Add the ability to do a debug dump of a nullability graph.
Change-Id: Ia3536423349ded8810c06ef2d4a631607273af88
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102300
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 15:43:40 +00:00
Danny Tuppeny a779db0813 Update LSP spec to latest
Change-Id: I6f7ff3c6707f992aa618ad172e81857153b75795
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102360
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-13 15:11:15 +00:00
Danny Tuppeny b7521f5e1b Fix lints not appearing when using LSP Server
Change-Id: Ib3b4396a611be32b91b08d68c962302899a1ad88
Bug: https://github.com/dart-lang/sdk/issues/36931
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102340
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-13 15:03:30 +00:00
Danny Tuppeny 9472745446 Change error code for server shutting down
See https://github.com/Microsoft/language-server-protocol/issues/684#issuecomment-477215334.

Change-Id: I9e45dd27ea914af8bc3b936e9885c113211c50ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102361
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-13 15:03:11 +00:00
Danny Tuppeny f7e288e3ad Return empty responses instead of errors for non-Dart files in LSP server
Previously we could return "invalid path" responses for any non-Dart files. This allows clients to send requests for other files and just successful (though empty) responses.

Change-Id: I192e83ac2ebd2124c03c22e3e048a066cfd33f17
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101990
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-05-13 09:04:36 +00:00
Konstantin Shcheglov 6dd7007b48 Tweak CONVERT_TO_PACKAGE_IMPORT assist.
There were a (probably very rare) case of invalid URI issue.
I also renamed the ID and method to be consistent with the message.

R=brianwilkerson@google.com, jwren@google.com

Change-Id: Ie97b1f81c78b67565d7831d532b7a28800db41a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102246
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-05-12 18:08:47 +00:00
Paul Berry b8050f9322 Make NullabilityNode.nullable private.
This will help ensure that we don't accidentally make more use of it
before removing the constraint variable migration implementation
entirely.

Change-Id: I6cd898d1a3b2f2a4e9df9ea22c17ca77d3119567
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101741
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-05-10 22:07:08 +00:00