Commit Graph

267 Commits

Author SHA1 Message Date
Danny Tuppeny 17a439633d Add a custom LSP method dart/diagnosticServer to start server/return port
Change-Id: I9d9be244251099c947b2998f0a45ec29ef29ad83
Reviewed-on: https://dart-review.googlesource.com/c/90012
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-17 16:37:49 +00:00
Danny Tuppeny 5ce5d697da Implement LSP code folding
Change-Id: I2b076b1792c229cbbce610d7a195fa03eb29e6bd
Reviewed-on: https://dart-review.googlesource.com/c/89503
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-16 16:03:23 +00:00
Danny Tuppeny daead8dff8 Add test for LSP rename that edits multiple files
Change-Id: I2132f63f75e7a910ebf9667d26e98598cea0e894
Reviewed-on: https://dart-review.googlesource.com/c/89540
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-15 15:10:42 +00:00
Danny Tuppeny bdade89081 Improve testing of document versions in LSP renames
Change-Id: Ibbf562d6a99d73c00fc17521eb8576da4c708c06
Reviewed-on: https://dart-review.googlesource.com/c/89522
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-15 15:10:42 +00:00
Danny Tuppeny 04131e7fa0 Implement some more LSP rename tests
Change-Id: Idd0f3734b20f716d5e92f13c3a85f716c226fc5b

Typo

Change-Id: Ica50195f94f8c57be0e16edde75e6e287b45c06b
Reviewed-on: https://dart-review.googlesource.com/c/89365
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-15 08:58:13 +00:00
Danny Tuppeny 28fe86d70f Add implementation/tests for LSP rename
Change-Id: I28e45cb7c979edb3d64b17e86ad0e03b7cd746cd
Reviewed-on: https://dart-review.googlesource.com/c/89361
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-14 18:12:47 +00:00
Danny Tuppeny f5c69070af Minor LSP refactors/tidy up
Change-Id: I7402d9493c58b1e020655a3b6332edbb5425fc22
Reviewed-on: https://dart-review.googlesource.com/c/89360
Commit-Queue: Danny Tuppeny <dantup@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Auto-Submit: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-14 17:30:45 +00:00
Danny Tuppeny 4a80990758 Implement LSP textDocument/documentHighlight
Change-Id: Iaa63791192e274a7ef8f2f4095e2984b27d95e05
Reviewed-on: https://dart-review.googlesource.com/c/88962
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-10 15:02:11 +00:00
Danny Tuppeny bf13ac85c4 Ensure LSP server clears diagnostics for removed files/analysis roots
Change-Id: I5eaa4141da499c5193253440e6913a0eb92ed533
Reviewed-on: https://dart-review.googlesource.com/c/88836
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-09 16:17:12 +00:00
Danny Tuppeny 54fffe4cca Add support for LSP workspace/didChangeWorkspaceFolders
Change-Id: I55401d0abf65979fcd446b2ba1e8d9b6c09a42fc
Reviewed-on: https://dart-review.googlesource.com/c/88831
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-09 16:04:12 +00:00
Danny Tuppeny e7b783ba5d Fix bug with deprecated rootPath + add tests
Change-Id: I53d0a9b9a367839cc4ecf463017463f343947dfc
Reviewed-on: https://dart-review.googlesource.com/c/88826
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-09 16:04:12 +00:00
Danny Tuppeny 1ec1a8b46e Update LSP status doc
Change-Id: I8143fb3adae5917cda8ed03088c1187f487c15a7
Reviewed-on: https://dart-review.googlesource.com/c/88720
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-08 15:26:05 +00:00
Danny Tuppeny c32737cc4c Add open files to LSP server/drivers priorityFiles
Change-Id: Ida44f8edb23b5c4080cfd6ba44ee6b4764d9b131
Reviewed-on: https://dart-review.googlesource.com/c/88325
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-03 16:00:28 +00:00
Danny Tuppeny 64a4354a55 Improve handling of fatal errors in LSP
This adds a new type of error for when a client request to edit a document
is not valid because the document offsets don't match up. In this instance,
the client/server are out of sync and we shouldn't try to continue as we
may produce edits that ruin the users work. The server checks errors being
sent to the client and if it sees this type of error will switch to a state
that requests all messages, send a logMessage and then shut down after a few
seconds.

The LSP spec has been updated to suggest that clients automatically restart
servers if they quit unexpectedly (though advising not to do it forever in
the case of a crash at startup).

Change-Id: I7beafc87a082b971600135a4cc76eae53f5d9443
Reviewed-on: https://dart-review.googlesource.com/c/87841
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-02 09:07:21 +00:00
Danny Tuppeny 44a492f351 Send errors to LSP clients that request unsupported encodings
Change-Id: I25e70e92d12cdf1f5d34033264e0f027217d7c10
Reviewed-on: https://dart-review.googlesource.com/c/87780
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-20 18:08:14 +00:00
Danny Tuppeny 7280ca87a0 LSP requests must always be responded to, even if optional
Change-Id: Ieb3314028436a566c5fe4c2786c6b9196a03e26a
Reviewed-on: https://dart-review.googlesource.com/c/87800
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-20 17:36:58 +00:00
Danny Tuppeny 666eee40c7 Updates to pase tuples in LSP spec
Change-Id: Ia1ce7579e954a8000b3460445859a2d221cf1a8c
Reviewed-on: https://dart-review.googlesource.com/c/87441
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-17 17:58:17 +00:00
Danny Tuppeny c7e8a37cf3 Add a divider between the element description and docs in hovers
Change-Id: I08dc275fd343dc7eaa0f0c6033b8889882889cd2
Reviewed-on: https://dart-review.googlesource.com/c/87406
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Auto-Submit: Danny Tuppeny <dantup@google.com>
2018-12-17 14:58:20 +00:00
Danny Tuppeny b44f21e691 Add assists to LSP Code Actions
Change-Id: Ic3762513fa55deee394b74da78ee79a23c8c0493
Reviewed-on: https://dart-review.googlesource.com/c/87070
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-12 17:59:03 +00:00
Danny Tuppeny e3991780a5 Add code fixes to LSP code actions
Change-Id: I5ec0932945cc6215cb671f89e8bed21609894ba2
Reviewed-on: https://dart-review.googlesource.com/c/87066
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-12 15:52:45 +00:00
Danny Tuppeny 7d4a6cc7e3 Change setup of capabilities in LSP tests to allow easier chaining
Change-Id: I6bc2743d64e7eb263f34f9c12140588d35b1482e
Reviewed-on: https://dart-review.googlesource.com/c/87065
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-12 15:52:45 +00:00
Danny Tuppeny e6aec46b5f Update LSP noEdits test to have imports that won't be removed as unused
Change-Id: I6e9d1111e4c9bcb37ad8722d175f3b78b9d8f842
Reviewed-on: https://dart-review.googlesource.com/c/86930
Commit-Queue: Danny Tuppeny <dantup@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Auto-Submit: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-11 17:17:50 +00:00
Danny Tuppeny b924d754c5 Fix LSP Organize Imports so removing unused imports works
Using only a parsed file meant we didn't get any "unused import" hints, which meant the unused imports were not removed.

Change-Id: Id5c24ac59f38885d08756747ef9165102ad54388
Reviewed-on: https://dart-review.googlesource.com/c/86884
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-11 15:21:42 +00:00
Danny Tuppeny 7d0823a97c Advertise the commands/code actions we support to the client
Change-Id: I08064742f6591a702955408f023b2534bd7a2887
Reviewed-on: https://dart-review.googlesource.com/c/86883
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-11 15:13:57 +00:00
Danny Tuppeny 3f130fb9ff Don't call workspace/applyEdits for empty edits
Change-Id: I51a66e6522477ffb0b968f771b971fdf0d648a6c
Reviewed-on: https://dart-review.googlesource.com/c/86882
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-11 15:13:37 +00:00
Konstantin Shcheglov 79eb965d8f Replace FileContentOverlay with OverlayResourceProvider in AnalysisServer.
R=brianwilkerson@google.com

Change-Id: Ic2fc13f4eacd94471fc8dccc1102e6fdbe59342d
Reviewed-on: https://dart-review.googlesource.com/c/86785
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-12-10 21:00:57 +00:00
Danny Tuppeny 89f299bee8 Add support for supplying simple edits for LSP workspace/applyEdits
Change-Id: Ia5b06ea4e002240eecc75f48e3cac245b9ce13ed
Reviewed-on: https://dart-review.googlesource.com/c/86768
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-10 17:54:53 +00:00
Danny Tuppeny 644d924978 Add path validation for opening files
Change-Id: Id78ce3475dad3c32c8a221e4ba4a3a6ccad97670
Reviewed-on: https://dart-review.googlesource.com/c/86760
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-10 14:56:15 +00:00
Danny Tuppeny 59780df33f Implement "Organize Imports" command
Change-Id: Iebf7022c1c8dd29a56d84da916713969d5b1269d
Reviewed-on: https://dart-review.googlesource.com/c/86762
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-10 14:56:14 +00:00
Danny Tuppeny e4df0c2fd8 Add implementation+tests for LSP "Sort Members" code action
Change-Id: I671e5bba62e396d797926134123b141ad34d80a5
Reviewed-on: https://dart-review.googlesource.com/c/86422
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-10 08:45:00 +00:00
Danny Tuppeny cd94fce0fe Add ability for LSP server to send requests to (+ receive responses from) client
Change-Id: Iff1f8f63dc58ef2689ecc44f6e705d6811b12667
Reviewed-on: https://dart-review.googlesource.com/c/86420
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-06 19:11:46 +00:00
Danny Tuppeny 08c4e96fc5 Keep track of document version numbers from the client
Change-Id: Ib422b9fe4a5311be605d47f7a8001c535196e799
Reviewed-on: https://dart-review.googlesource.com/c/86384
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-06 18:17:24 +00:00
Danny Tuppeny 98fcc8e8dd Set up a new CommandHandler that can delegate to individual commands handlers
Change-Id: I7c288dc14b911306688e66eeca4768cb2ee3629e
Reviewed-on: https://dart-review.googlesource.com/c/86383
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-06 17:25:56 +00:00
Danny Tuppeny d8d8e222aa Support returning code actions for SortMembers/OrganizeUsings
Change-Id: I2f80ec0bd7174a8c0943352b942478a360f16b36
Reviewed-on: https://dart-review.googlesource.com/c/86359
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-06 16:22:41 +00:00
Danny Tuppeny 179b96e796 Remove unnecessary awaits in LSP tests
Change-Id: I7a3fb27a43593561b4793514909699d2a09e2f88
Reviewed-on: https://dart-review.googlesource.com/c/85744
Auto-Submit: Danny Tuppeny <dantup@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-03 16:32:07 +00:00
Danny Tuppeny a354fd99a8 Add LSP support for flat symbol lists for older clients
Change-Id: Id74b34ea295a6733b374a820c6d596a11070f666
Reviewed-on: https://dart-review.googlesource.com/c/85561
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-11-29 16:37:38 +00:00
Danny Tuppeny 34d5751835 Move handlers into handlers/ folder + sort members
Change-Id: I1ccd4354300f80ba6361cc6b0c95eb0c8c434a69
Reviewed-on: https://dart-review.googlesource.com/c/85501
Auto-Submit: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-11-28 21:19:50 +00:00
Danny Tuppeny 67c00eff46 Add basic support for hierarchical document symbols
Change-Id: I376ca6f974875aace2d8a7fd9f6e1cd593d5527e
Reviewed-on: https://dart-review.googlesource.com/c/85485
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-28 18:21:15 +00:00
Danny Tuppeny fd53d061f0 Implement formatting provider for format-on-type
Change-Id: I2260d7c829b80a638917b98d4b48bec329c3c603
Reviewed-on: https://dart-review.googlesource.com/c/85484
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-11-28 16:34:00 +00:00
Danny Tuppeny be6593e5c6 Reduce params type from Either2<List<dynamic>, dynamic> to just dynamic
Nothing in the LSP spec supports arrays as params (let alone a union of a single item or array).

Since the new type is dynamic, this should be non-breaking even if LSP changes (though we'll want to put it back if we need to write a handler for something that accepts a union like this).

Change-Id: Id1af1d438fede94906ae76eaa8b9a959b0b62ccf
Reviewed-on: https://dart-review.googlesource.com/c/85396
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-28 08:20:07 +00:00
Danny Tuppeny 1c1539a9f7 Add tests that all requests work for unopen files
And fix formatter to work with unopen files rather than rejecting with an error.

Change-Id: I27dbf830330beba371c4bc4bdb6ece0bf63cab33
Reviewed-on: https://dart-review.googlesource.com/c/85397
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-11-28 07:20:32 +00:00
Danny Tuppeny a2ee414581 Support includeDeclarations for references request
Change-Id: If1b2aad828dd64b87e9d4fb3870d394d658d4698
Reviewed-on: https://dart-review.googlesource.com/c/85347
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-27 10:58:35 +00:00
Danny Tuppeny 6ae01bacbe Tweak LSP test names
Change-Id: I74470c606e30775eb4efe3185551f6527268e9a1
Reviewed-on: https://dart-review.googlesource.com/c/85381
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-27 09:29:06 +00:00
Danny Tuppeny 285f7ddb1b Switch to using constants for LSP method names
Change-Id: I4fd1b4e192ec1d0e53a4b3d81e5fdb8c1bb40208
Reviewed-on: https://dart-review.googlesource.com/c/85380
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-26 17:01:29 +00:00
Danny Tuppeny a61e10c7fa Change format tests to manually build an invalid string
This is because on Windows, Uri.file() checks for reserved file characters and we need to force an invalid path to test the server handles it.

Change-Id: Ife7b5e2aa48171e6334ac8a0a993e2ea7ef210a3
Reviewed-on: https://dart-review.googlesource.com/c/85383
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-11-26 15:37:37 +00:00
Danny Tuppeny 8fa1e010c4 Validate paths and offsets for all requests
Change-Id: I72ede118b825debc6a16ec227b5116aa2fc73a8e
Reviewed-on: https://dart-review.googlesource.com/c/85162
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-26 11:39:30 +00:00
Danny Tuppeny 7f40d90544 Respect content formats when creating markup content
Change-Id: I7e76607d467887a8bcd58e89d70f91b3335f5f90
Reviewed-on: https://dart-review.googlesource.com/c/85165
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-26 10:35:17 +00:00
Danny Tuppeny 02bf089ed5 Rough implementation of LSP References
Change-Id: I1e3bb010da3e832a73fa909d58e361e61e55f430
Reviewed-on: https://dart-review.googlesource.com/c/84841
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-22 19:09:55 +00:00
Danny Tuppeny ea56fe71f5 Fix definitions that cross files
Change-Id: Id05f3abbca4d8a0336fe38b641637470afc70aa5
Reviewed-on: https://dart-review.googlesource.com/c/84843
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-22 18:28:56 +00:00
Danny Tuppeny 3cedae6f09 Change diagnostic.code to a simple String
Change-Id: Ieb23cda7c6f2c1dffb2e07e47dfe29ddc78f41de
Reviewed-on: https://dart-review.googlesource.com/c/85174
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-11-22 17:54:12 +00:00