From 639fa16575fc9f5658795fa9745b9b7be53963f6 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Wed, 19 Feb 2020 20:46:40 +0100 Subject: [PATCH] [#1244][WIP] Update to LSP4J 0.9.0 Part 2 Signed-off-by: Christian Dietrich --- .../ide/tests/server/PrepareRenameTest.xtend | 16 +-- .../ide/tests/server/RenamePositionTest.xtend | 6 +- .../xtext/ide/tests/server/RenameTest2.xtend | 6 +- .../xtext/ide/tests/server/ServerTest.xtend | 4 +- .../ide/tests/server/PrepareRenameTest.java | 16 +-- .../ide/tests/server/RenamePositionTest.java | 10 +- .../xtext/ide/tests/server/RenameTest2.java | 10 +- .../xtext/ide/tests/server/ServerTest.java | 8 +- .../xtext/ide/server/LanguageServerImpl.java | 30 +++-- .../contentassist/ContentAssistService.xtend | 18 ++- .../xtext/ide/server/hover/HoverService.xtend | 4 +- .../xtext/ide/server/hover/IHoverService.java | 49 +++++++ .../ide/server/hover/IHoverService.xtend | 31 ----- .../DefaultDocumentHighlightService.java | 6 +- .../IDocumentHighlightService.java | 19 ++- .../ide/server/rename/IRenameService2.java | 112 ++++++++++++++++ .../ide/server/rename/IRenameService2.xtend | 63 --------- .../ide/server/rename/RenameService2.xtend | 21 ++- .../signatureHelp/ISignatureHelpService.java | 5 +- .../server/symbol/DocumentSymbolService.xtend | 24 +++- .../contentassist/ContentAssistService.java | 13 ++ .../xtext/ide/server/hover/HoverService.java | 4 +- .../xtext/ide/server/hover/IHoverService.java | 32 ----- .../ide/server/rename/IRenameService2.java | 120 ------------------ .../ide/server/rename/RenameService2.java | 20 ++- .../server/symbol/DocumentSymbolService.java | 16 +++ .../testing/AbstractLanguageServerTest.xtend | 14 +- .../testing/AbstractLanguageServerTest.java | 22 ++-- 28 files changed, 367 insertions(+), 332 deletions(-) create mode 100644 org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.java delete mode 100644 org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.xtend create mode 100644 org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.java delete mode 100644 org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.xtend delete mode 100644 org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/IHoverService.java delete mode 100644 org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/IRenameService2.java diff --git a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.xtend b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.xtend index 5fc1d8dbd..4b38b2637 100644 --- a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.xtend +++ b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.xtend @@ -17,7 +17,6 @@ import org.eclipse.lsp4j.RenameCapabilities import org.eclipse.lsp4j.RenameParams import org.eclipse.lsp4j.TextDocumentClientCapabilities import org.eclipse.lsp4j.TextDocumentIdentifier -import org.eclipse.lsp4j.TextDocumentPositionParams import org.eclipse.lsp4j.jsonrpc.ResponseErrorException import org.eclipse.xtext.ide.server.Document import org.eclipse.xtext.ide.server.UriExtensions @@ -25,6 +24,7 @@ import org.junit.Test import static org.junit.Assert.* import java.io.FileNotFoundException +import org.eclipse.lsp4j.PrepareRenameParams class PrepareRenameTest extends AbstractTestLangLanguageServerTest { @@ -45,7 +45,7 @@ class PrepareRenameTest extends AbstractTestLangLanguageServerTest { val uri = new File('''missing.«fileExtension»''').toURI.normalize.toUriString initializeWithPrepareSupport() - val params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), new Position(2, 5)) + val params = new PrepareRenameParams(new TextDocumentIdentifier(uri), new Position(2, 5)) assertNull(languageServer.prepareRename(params).get) } @@ -54,7 +54,7 @@ class PrepareRenameTest extends AbstractTestLangLanguageServerTest { val uri = new File('''missing.«fileExtension»''').toURI.normalize.toUriString initialize() - val params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), new Position(2, 5)) + val params = new PrepareRenameParams(new TextDocumentIdentifier(uri), new Position(2, 5)) try { assertNull(languageServer.prepareRename(params).get) fail('Expected an error.') @@ -140,7 +140,7 @@ class PrepareRenameTest extends AbstractTestLangLanguageServerTest { val uri = 'my-type-valid.testlang'.writeFile(model) - val params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), new Position(2, 11)) + val params = new PrepareRenameParams(new TextDocumentIdentifier(uri), new Position(2, 11)) assertNull(languageServer.prepareRename(params).get) } @@ -158,7 +158,7 @@ class PrepareRenameTest extends AbstractTestLangLanguageServerTest { val uri = 'my-type-valid.testlang'.writeFile(model) - val params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), new Position(2, 12)) + val params = new PrepareRenameParams(new TextDocumentIdentifier(uri), new Position(2, 12)) val range = languageServer.prepareRename(params).get.getLeft assertEquals('MyType', new Document(0, model).getSubstring(range)) } @@ -177,7 +177,7 @@ class PrepareRenameTest extends AbstractTestLangLanguageServerTest { val uri = 'my-type-valid.testlang'.writeFile(model) - val params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), new Position(2, 14)) + val params = new PrepareRenameParams(new TextDocumentIdentifier(uri), new Position(2, 14)) val range = languageServer.prepareRename(params).get.getLeft assertEquals('MyType', new Document(0, model).getSubstring(range)) } @@ -196,7 +196,7 @@ class PrepareRenameTest extends AbstractTestLangLanguageServerTest { val uri = 'my-type-valid.testlang'.writeFile(model) - val params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), new Position(2, 18)) + val params = new PrepareRenameParams(new TextDocumentIdentifier(uri), new Position(2, 18)) val range = languageServer.prepareRename(params).get.getLeft assertEquals('MyType', new Document(0, model).getSubstring(range)) } @@ -215,7 +215,7 @@ class PrepareRenameTest extends AbstractTestLangLanguageServerTest { val uri = 'my-type-valid.testlang'.writeFile(model) - val params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), new Position(2, 18)) + val params = new PrepareRenameParams(new TextDocumentIdentifier(uri), new Position(2, 18)) assertNull(languageServer.prepareRename(params).get) } diff --git a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenamePositionTest.xtend b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenamePositionTest.xtend index 27b665f67..cbd465633 100644 --- a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenamePositionTest.xtend +++ b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenamePositionTest.xtend @@ -11,11 +11,11 @@ package org.eclipse.xtext.ide.tests.server import com.google.common.base.Throwables import org.eclipse.lsp4j.ClientCapabilities import org.eclipse.lsp4j.Position +import org.eclipse.lsp4j.PrepareRenameParams import org.eclipse.lsp4j.RenameCapabilities import org.eclipse.lsp4j.RenameParams import org.eclipse.lsp4j.TextDocumentClientCapabilities import org.eclipse.lsp4j.TextDocumentIdentifier -import org.eclipse.lsp4j.TextDocumentPositionParams import org.eclipse.lsp4j.jsonrpc.ResponseErrorException import org.eclipse.xtext.ide.server.Document import org.eclipse.xtext.testing.AbstractLanguageServerTest @@ -79,7 +79,7 @@ class RenamePositionTest extends AbstractLanguageServerTest { initialize try { val identifier = new TextDocumentIdentifier(modelFile) - val prepareRenameResult = languageServer.prepareRename(new TextDocumentPositionParams(identifier, position)).get + val prepareRenameResult = languageServer.prepareRename(new PrepareRenameParams(identifier, position)).get assertNull('''expected null result got «prepareRenameResult» instead''', prepareRenameResult) val renameParams = new RenameParams(new TextDocumentIdentifier(modelFile), position, 'Tescht') languageServer.rename(renameParams).get @@ -104,7 +104,7 @@ class RenamePositionTest extends AbstractLanguageServerTest { ] ] val identifier = new TextDocumentIdentifier(modelFile) - val range = languageServer.prepareRename(new TextDocumentPositionParams(identifier, position)).get.getLeft + val range = languageServer.prepareRename(new PrepareRenameParams(identifier, position)).get.getLeft assertNotNull(range) assertEquals(new Document(0, model).getSubstring(range), 'Test') val params = new RenameParams(identifier, position, 'Tescht') diff --git a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenameTest2.xtend b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenameTest2.xtend index 087d5b7c4..21616a00e 100644 --- a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenameTest2.xtend +++ b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/RenameTest2.xtend @@ -10,11 +10,11 @@ package org.eclipse.xtext.ide.tests.server import org.eclipse.lsp4j.ClientCapabilities import org.eclipse.lsp4j.Position +import org.eclipse.lsp4j.PrepareRenameParams import org.eclipse.lsp4j.RenameCapabilities import org.eclipse.lsp4j.RenameParams import org.eclipse.lsp4j.TextDocumentClientCapabilities import org.eclipse.lsp4j.TextDocumentIdentifier -import org.eclipse.lsp4j.TextDocumentPositionParams import org.eclipse.lsp4j.WorkspaceClientCapabilities import org.eclipse.lsp4j.WorkspaceEditCapabilities import org.eclipse.xtext.ide.server.Document @@ -43,7 +43,7 @@ class RenameTest2 extends AbstractLanguageServerTest { initialize val identifier = new TextDocumentIdentifier(file) val position = new Position(2, 9) - val range = languageServer.prepareRename(new TextDocumentPositionParams(identifier, position)).get.getLeft + val range = languageServer.prepareRename(new PrepareRenameParams(identifier, position)).get.getLeft assertEquals('Foo', new Document(0, model).getSubstring(range)) val params = new RenameParams(identifier, position, 'Bar') val workspaceEdit = languageServer.rename(params).get @@ -73,7 +73,7 @@ class RenameTest2 extends AbstractLanguageServerTest { val identifier = new TextDocumentIdentifier(file) val position = new Position(2, 9) - val range = languageServer.prepareRename(new TextDocumentPositionParams(identifier, position)).get.getLeft + val range = languageServer.prepareRename(new PrepareRenameParams(identifier, position)).get.getLeft assertEquals('Foo', new Document(0, model).getSubstring(range)) val params = new RenameParams(identifier, position, 'Baz') val workspaceEdit = languageServer.rename(params).get diff --git a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend index 2a764ab28..a3cfc7e81 100644 --- a/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend +++ b/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend @@ -13,13 +13,13 @@ import org.eclipse.lsp4j.DidChangeWatchedFilesParams import org.eclipse.lsp4j.FileChangeType import org.eclipse.lsp4j.FileEvent import org.eclipse.lsp4j.TextDocumentIdentifier -import org.eclipse.lsp4j.TextDocumentPositionParams import org.eclipse.lsp4j.jsonrpc.ResponseErrorException import org.eclipse.lsp4j.jsonrpc.messages.ResponseErrorCode import org.junit.Assert import org.junit.Test import static org.junit.Assert.* +import org.eclipse.lsp4j.DefinitionParams /** * @author Sven Efftinge - Initial contribution and API @@ -132,7 +132,7 @@ class ServerTest extends AbstractTestLangLanguageServerTest { @Test def void testMissingInitialize() { try { - languageServer.definition(new TextDocumentPositionParams => [ + languageServer.definition(new DefinitionParams => [ textDocument = new TextDocumentIdentifier => [ uri = 'file:/home/test/workspace/mydoc.testlang' ] diff --git a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.java b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.java index fa1142417..b99785453 100644 --- a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.java +++ b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/PrepareRenameTest.java @@ -16,12 +16,12 @@ import org.eclipse.lsp4j.ClientCapabilities; import org.eclipse.lsp4j.InitializeParams; import org.eclipse.lsp4j.InitializeResult; import org.eclipse.lsp4j.Position; +import org.eclipse.lsp4j.PrepareRenameParams; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.RenameCapabilities; import org.eclipse.lsp4j.RenameParams; import org.eclipse.lsp4j.TextDocumentClientCapabilities; import org.eclipse.lsp4j.TextDocumentIdentifier; -import org.eclipse.lsp4j.TextDocumentPositionParams; import org.eclipse.lsp4j.WorkspaceEdit; import org.eclipse.lsp4j.jsonrpc.ResponseErrorException; import org.eclipse.lsp4j.jsonrpc.messages.ResponseError; @@ -69,7 +69,7 @@ public class PrepareRenameTest extends AbstractTestLangLanguageServerTest { this.initializeWithPrepareSupport(); TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri); Position _position = new Position(2, 5); - final TextDocumentPositionParams params = new TextDocumentPositionParams(_textDocumentIdentifier, _position); + final PrepareRenameParams params = new PrepareRenameParams(_textDocumentIdentifier, _position); Assert.assertNull(this.languageServer.prepareRename(params).get()); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); @@ -85,7 +85,7 @@ public class PrepareRenameTest extends AbstractTestLangLanguageServerTest { this.initialize(); TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri); Position _position = new Position(2, 5); - final TextDocumentPositionParams params = new TextDocumentPositionParams(_textDocumentIdentifier, _position); + final PrepareRenameParams params = new PrepareRenameParams(_textDocumentIdentifier, _position); try { Assert.assertNull(this.languageServer.prepareRename(params).get()); Assert.fail("Expected an error."); @@ -242,7 +242,7 @@ public class PrepareRenameTest extends AbstractTestLangLanguageServerTest { final String uri = this.writeFile("my-type-valid.testlang", model); TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri); Position _position = new Position(2, 11); - final TextDocumentPositionParams params = new TextDocumentPositionParams(_textDocumentIdentifier, _position); + final PrepareRenameParams params = new PrepareRenameParams(_textDocumentIdentifier, _position); Assert.assertNull(this.languageServer.prepareRename(params).get()); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); @@ -274,7 +274,7 @@ public class PrepareRenameTest extends AbstractTestLangLanguageServerTest { final String uri = this.writeFile("my-type-valid.testlang", model); TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri); Position _position = new Position(2, 12); - final TextDocumentPositionParams params = new TextDocumentPositionParams(_textDocumentIdentifier, _position); + final PrepareRenameParams params = new PrepareRenameParams(_textDocumentIdentifier, _position); final Range range = this.languageServer.prepareRename(params).get().getLeft(); this.assertEquals("MyType", new Document(Integer.valueOf(0), model).getSubstring(range)); } catch (Throwable _e) { @@ -307,7 +307,7 @@ public class PrepareRenameTest extends AbstractTestLangLanguageServerTest { final String uri = this.writeFile("my-type-valid.testlang", model); TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri); Position _position = new Position(2, 14); - final TextDocumentPositionParams params = new TextDocumentPositionParams(_textDocumentIdentifier, _position); + final PrepareRenameParams params = new PrepareRenameParams(_textDocumentIdentifier, _position); final Range range = this.languageServer.prepareRename(params).get().getLeft(); this.assertEquals("MyType", new Document(Integer.valueOf(0), model).getSubstring(range)); } catch (Throwable _e) { @@ -340,7 +340,7 @@ public class PrepareRenameTest extends AbstractTestLangLanguageServerTest { final String uri = this.writeFile("my-type-valid.testlang", model); TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri); Position _position = new Position(2, 18); - final TextDocumentPositionParams params = new TextDocumentPositionParams(_textDocumentIdentifier, _position); + final PrepareRenameParams params = new PrepareRenameParams(_textDocumentIdentifier, _position); final Range range = this.languageServer.prepareRename(params).get().getLeft(); this.assertEquals("MyType", new Document(Integer.valueOf(0), model).getSubstring(range)); } catch (Throwable _e) { @@ -373,7 +373,7 @@ public class PrepareRenameTest extends AbstractTestLangLanguageServerTest { final String uri = this.writeFile("my-type-valid.testlang", model); TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri); Position _position = new Position(2, 18); - final TextDocumentPositionParams params = new TextDocumentPositionParams(_textDocumentIdentifier, _position); + final PrepareRenameParams params = new PrepareRenameParams(_textDocumentIdentifier, _position); Assert.assertNull(this.languageServer.prepareRename(params).get()); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); diff --git a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenamePositionTest.java b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenamePositionTest.java index b1d7a15e0..c5faffbe6 100644 --- a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenamePositionTest.java +++ b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenamePositionTest.java @@ -12,13 +12,13 @@ import com.google.common.base.Throwables; import org.eclipse.lsp4j.ClientCapabilities; import org.eclipse.lsp4j.InitializeParams; import org.eclipse.lsp4j.Position; +import org.eclipse.lsp4j.PrepareRenameParams; import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.RenameCapabilities; import org.eclipse.lsp4j.RenameParams; import org.eclipse.lsp4j.TextDocumentClientCapabilities; import org.eclipse.lsp4j.TextDocumentIdentifier; -import org.eclipse.lsp4j.TextDocumentPositionParams; import org.eclipse.lsp4j.WorkspaceEdit; import org.eclipse.lsp4j.jsonrpc.ResponseErrorException; import org.eclipse.lsp4j.jsonrpc.messages.Either; @@ -102,8 +102,8 @@ public class RenamePositionTest extends AbstractLanguageServerTest { this.initialize(); try { final TextDocumentIdentifier identifier = new TextDocumentIdentifier(modelFile); - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(identifier, position); - final Either prepareRenameResult = this.languageServer.prepareRename(_textDocumentPositionParams).get(); + PrepareRenameParams _prepareRenameParams = new PrepareRenameParams(identifier, position); + final Either prepareRenameResult = this.languageServer.prepareRename(_prepareRenameParams).get(); StringConcatenation _builder = new StringConcatenation(); _builder.append("expected null result got "); _builder.append(prepareRenameResult); @@ -149,8 +149,8 @@ public class RenamePositionTest extends AbstractLanguageServerTest { }; this.initialize(_function); final TextDocumentIdentifier identifier = new TextDocumentIdentifier(modelFile); - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(identifier, position); - final Range range = this.languageServer.prepareRename(_textDocumentPositionParams).get().getLeft(); + PrepareRenameParams _prepareRenameParams = new PrepareRenameParams(identifier, position); + final Range range = this.languageServer.prepareRename(_prepareRenameParams).get().getLeft(); Assert.assertNotNull(range); this.assertEquals(new Document(Integer.valueOf(0), model).getSubstring(range), "Test"); final RenameParams params = new RenameParams(identifier, position, "Tescht"); diff --git a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenameTest2.java b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenameTest2.java index 5deccb219..b3ee5fc3e 100644 --- a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenameTest2.java +++ b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/RenameTest2.java @@ -12,12 +12,12 @@ import org.eclipse.lsp4j.ClientCapabilities; import org.eclipse.lsp4j.InitializeParams; import org.eclipse.lsp4j.InitializeResult; import org.eclipse.lsp4j.Position; +import org.eclipse.lsp4j.PrepareRenameParams; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.RenameCapabilities; import org.eclipse.lsp4j.RenameParams; import org.eclipse.lsp4j.TextDocumentClientCapabilities; import org.eclipse.lsp4j.TextDocumentIdentifier; -import org.eclipse.lsp4j.TextDocumentPositionParams; import org.eclipse.lsp4j.WorkspaceClientCapabilities; import org.eclipse.lsp4j.WorkspaceEdit; import org.eclipse.lsp4j.WorkspaceEditCapabilities; @@ -57,8 +57,8 @@ public class RenameTest2 extends AbstractLanguageServerTest { this.initialize(); final TextDocumentIdentifier identifier = new TextDocumentIdentifier(file); final Position position = new Position(2, 9); - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(identifier, position); - final Range range = this.languageServer.prepareRename(_textDocumentPositionParams).get().getLeft(); + PrepareRenameParams _prepareRenameParams = new PrepareRenameParams(identifier, position); + final Range range = this.languageServer.prepareRename(_prepareRenameParams).get().getLeft(); this.assertEquals("Foo", new Document(Integer.valueOf(0), model).getSubstring(range)); final RenameParams params = new RenameParams(identifier, position, "Bar"); final WorkspaceEdit workspaceEdit = this.languageServer.rename(params).get(); @@ -110,8 +110,8 @@ public class RenameTest2 extends AbstractLanguageServerTest { this.initialize(); final TextDocumentIdentifier identifier = new TextDocumentIdentifier(file); final Position position = new Position(2, 9); - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(identifier, position); - final Range range = this.languageServer.prepareRename(_textDocumentPositionParams).get().getLeft(); + PrepareRenameParams _prepareRenameParams = new PrepareRenameParams(identifier, position); + final Range range = this.languageServer.prepareRename(_prepareRenameParams).get().getLeft(); this.assertEquals("Foo", new Document(Integer.valueOf(0), model).getSubstring(range)); final RenameParams params = new RenameParams(identifier, position, "Baz"); final WorkspaceEdit workspaceEdit = this.languageServer.rename(params).get(); diff --git a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/ServerTest.java b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/ServerTest.java index 1cfe3e967..c89ca7f01 100644 --- a/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/ServerTest.java +++ b/org.eclipse.xtext.ide.tests/xtend-gen/org/eclipse/xtext/ide/tests/server/ServerTest.java @@ -11,12 +11,12 @@ package org.eclipse.xtext.ide.tests.server; import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; +import org.eclipse.lsp4j.DefinitionParams; import org.eclipse.lsp4j.Diagnostic; import org.eclipse.lsp4j.DidChangeWatchedFilesParams; import org.eclipse.lsp4j.FileChangeType; import org.eclipse.lsp4j.FileEvent; import org.eclipse.lsp4j.TextDocumentIdentifier; -import org.eclipse.lsp4j.TextDocumentPositionParams; import org.eclipse.lsp4j.jsonrpc.ResponseErrorException; import org.eclipse.lsp4j.jsonrpc.messages.ResponseErrorCode; import org.eclipse.lsp4j.services.WorkspaceService; @@ -175,8 +175,8 @@ public class ServerTest extends AbstractTestLangLanguageServerTest { public void testMissingInitialize() { try { try { - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(); - final Procedure1 _function = (TextDocumentPositionParams it) -> { + DefinitionParams _definitionParams = new DefinitionParams(); + final Procedure1 _function = (DefinitionParams it) -> { TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(); final Procedure1 _function_1 = (TextDocumentIdentifier it_1) -> { it_1.setUri("file:/home/test/workspace/mydoc.testlang"); @@ -184,7 +184,7 @@ public class ServerTest extends AbstractTestLangLanguageServerTest { TextDocumentIdentifier _doubleArrow = ObjectExtensions.operator_doubleArrow(_textDocumentIdentifier, _function_1); it.setTextDocument(_doubleArrow); }; - TextDocumentPositionParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_textDocumentPositionParams, _function); + DefinitionParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_definitionParams, _function); this.languageServer.definition(_doubleArrow).get(); Assert.fail("Expected a ResponseErrorException"); } catch (final Throwable _t) { diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.java b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.java index 79f1b8cb0..0abfe8134 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.java +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.java @@ -36,6 +36,7 @@ import org.eclipse.lsp4j.CompletionItem; import org.eclipse.lsp4j.CompletionList; import org.eclipse.lsp4j.CompletionOptions; import org.eclipse.lsp4j.CompletionParams; +import org.eclipse.lsp4j.DefinitionParams; import org.eclipse.lsp4j.Diagnostic; import org.eclipse.lsp4j.DiagnosticSeverity; import org.eclipse.lsp4j.DidChangeConfigurationParams; @@ -47,6 +48,7 @@ import org.eclipse.lsp4j.DidOpenTextDocumentParams; import org.eclipse.lsp4j.DidSaveTextDocumentParams; import org.eclipse.lsp4j.DocumentFormattingParams; import org.eclipse.lsp4j.DocumentHighlight; +import org.eclipse.lsp4j.DocumentHighlightParams; import org.eclipse.lsp4j.DocumentOnTypeFormattingParams; import org.eclipse.lsp4j.DocumentRangeFormattingParams; import org.eclipse.lsp4j.DocumentSymbol; @@ -57,12 +59,14 @@ import org.eclipse.lsp4j.ExecuteCommandOptions; import org.eclipse.lsp4j.ExecuteCommandParams; import org.eclipse.lsp4j.FileChangeType; import org.eclipse.lsp4j.Hover; +import org.eclipse.lsp4j.HoverParams; import org.eclipse.lsp4j.InitializeParams; import org.eclipse.lsp4j.InitializeResult; import org.eclipse.lsp4j.InitializedParams; import org.eclipse.lsp4j.Location; import org.eclipse.lsp4j.LocationLink; import org.eclipse.lsp4j.Position; +import org.eclipse.lsp4j.PrepareRenameParams; import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.PublishDiagnosticsParams; import org.eclipse.lsp4j.Range; @@ -555,7 +559,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex } BufferedCancelIndicator cancelIndicator = new BufferedCancelIndicator(originalCancelIndicator); return Either.forRight(workspaceManager.doRead(uri, - (doc, res) -> contentAssistService.createCompletionList(doc, res, params, cancelIndicator))); + (doc, res) -> contentAssistService.createCompletionList(doc, res, (TextDocumentPositionParams) params, cancelIndicator))); } /** @@ -584,7 +588,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex @Override public CompletableFuture, List>> definition( - TextDocumentPositionParams params) { + DefinitionParams params) { return requestManager.runRead(cancelIndicator -> definition(params, cancelIndicator)); } @@ -593,21 +597,21 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex * @since 2.20 */ protected Either, List> definition( - TextDocumentPositionParams params, CancelIndicator cancelIndicator) { + DefinitionParams params, CancelIndicator cancelIndicator) { return Either.forLeft(definition(cancelIndicator, params)); } /** * Compute the definition. */ - protected List definition(CancelIndicator cancelIndicator, TextDocumentPositionParams params) { + protected List definition(CancelIndicator cancelIndicator, DefinitionParams params) { URI uri = getURI(params); DocumentSymbolService documentSymbolService = getService(uri, DocumentSymbolService.class); if (documentSymbolService == null) { return Collections.emptyList(); } return workspaceManager.doRead(uri, - (doc, res) -> documentSymbolService.getDefinitions(doc, res, params, resourceAccess, cancelIndicator)); + (doc, res) -> documentSymbolService.getDefinitions(doc, res, (TextDocumentPositionParams) params, resourceAccess, cancelIndicator)); } @Override @@ -703,7 +707,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex } @Override - public CompletableFuture hover(TextDocumentPositionParams params) { + public CompletableFuture hover(HoverParams params) { return requestManager.runRead((cancelIndicator) -> hover(params, cancelIndicator)); } @@ -711,14 +715,14 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex * Compute the hover. Executed in a read request. * @since 2.20 */ - protected Hover hover(TextDocumentPositionParams params, CancelIndicator cancelIndicator) { + protected Hover hover(HoverParams params, CancelIndicator cancelIndicator) { URI uri = getURI(params); IHoverService hoverService = getService(uri, IHoverService.class); if (hoverService == null) { return IHoverService.EMPTY_HOVER; } return workspaceManager.doRead(uri, - (document, resource) -> hoverService.hover(document, resource, params, cancelIndicator)); + (document, resource) -> hoverService.hover(document, resource, (TextDocumentPositionParams) params, cancelIndicator)); } @Override @@ -746,7 +750,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex } @Override - public CompletableFuture> documentHighlight(TextDocumentPositionParams params) { + public CompletableFuture> documentHighlight(DocumentHighlightParams params) { return requestManager.runRead((cancelIndicator) -> documentHighlight(params, cancelIndicator)); } @@ -754,7 +758,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex * Compute the document highlights. Executed in a read request. * @since 2.20 */ - protected List documentHighlight(TextDocumentPositionParams params, + protected List documentHighlight(DocumentHighlightParams params, CancelIndicator cancelIndicator) { URI uri = getURI(params); IDocumentHighlightService service = getService(uri, IDocumentHighlightService.class); @@ -762,7 +766,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex return Collections.emptyList(); } return workspaceManager.doRead(uri, - (doc, resource) -> service.getDocumentHighlights(doc, resource, params, cancelIndicator)); + (doc, resource) -> service.getDocumentHighlights(doc, resource, (TextDocumentPositionParams) params, cancelIndicator)); } @Override @@ -1012,7 +1016,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex * @since 2.18 */ @Override - public CompletableFuture> prepareRename(TextDocumentPositionParams params) { + public CompletableFuture> prepareRename(PrepareRenameParams params) { return requestManager.runRead(cancelIndicator -> prepareRename(params, cancelIndicator)); } @@ -1020,7 +1024,7 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex * Prepare the rename operation. Executed in a read request. * @since 2.20 */ - protected Either prepareRename(TextDocumentPositionParams params, + protected Either prepareRename(PrepareRenameParams params, CancelIndicator cancelIndicator) { URI uri = getURI(params); IRenameService2 renameService = getService(uri, IRenameService2.class); diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.xtend b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.xtend index 165b80bd2..208716f42 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.xtend +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.xtend @@ -17,6 +17,8 @@ import java.util.concurrent.ExecutorService import org.eclipse.lsp4j.CompletionItem import org.eclipse.lsp4j.CompletionItemKind import org.eclipse.lsp4j.CompletionList +import org.eclipse.lsp4j.CompletionParams +import org.eclipse.lsp4j.InsertTextFormat import org.eclipse.lsp4j.Position import org.eclipse.lsp4j.Range import org.eclipse.lsp4j.TextDocumentPositionParams @@ -32,7 +34,6 @@ import org.eclipse.xtext.service.OperationCanceledManager import org.eclipse.xtext.util.CancelIndicator import org.eclipse.xtext.util.ReplaceRegion import org.eclipse.xtext.util.TextRegion -import org.eclipse.lsp4j.InsertTextFormat /** * @author kosyakov - Initial contribution and API @@ -55,8 +56,21 @@ class ContentAssistService { @Inject OperationCanceledManager operationCanceledManager - def CompletionList createCompletionList(Document document, XtextResource resource, + /** + * @deprecated please override/call {@link #createCompletionList(Document, XtextResource, CompletionParams, CancelIndicator)} instead. + * This method is scheduled to be removed with 2.22. + */ + @Deprecated//(since="2.21",forRemoval=true) + def CompletionList createCompletionList(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator) { + if (params instanceof CompletionParams) { + return createCompletionList(document, resource, params as CompletionParams, cancelIndicator) + } + throw new IllegalArgumentException("params is not a CompletionParams"); + } + + def CompletionList createCompletionList(Document document, XtextResource resource, + CompletionParams params, CancelIndicator cancelIndicator) { val result = new CompletionList // we set isInComplete to true, so we get asked always, which is the best match to the expected behavior in Xtext result.setIsIncomplete(true); diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/HoverService.xtend b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/HoverService.xtend index 0c762d47f..ec5c8ac15 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/HoverService.xtend +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/HoverService.xtend @@ -15,7 +15,6 @@ import org.eclipse.emf.ecore.EObject import org.eclipse.lsp4j.Hover import org.eclipse.lsp4j.MarkupContent import org.eclipse.lsp4j.Range -import org.eclipse.lsp4j.TextDocumentPositionParams import org.eclipse.xtend.lib.annotations.Accessors import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor import org.eclipse.xtext.documentation.IEObjectDocumentationProvider @@ -28,6 +27,7 @@ import org.eclipse.xtext.util.CancelIndicator import org.eclipse.xtext.util.ITextRegion import static extension org.eclipse.xtext.nodemodel.util.NodeModelUtils.* +import org.eclipse.lsp4j.HoverParams /** * @author kosyakov - Initial contribution and API @@ -52,7 +52,7 @@ class HoverService implements IHoverService { override Hover hover( Document document, XtextResource resource, - TextDocumentPositionParams params, + HoverParams params, CancelIndicator cancelIndicator ) { val offset = document.getOffSet(params.position) diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.java b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.java new file mode 100644 index 000000000..f36950849 --- /dev/null +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2017, 2020 TypeFox GmbH (http://www.typefox.io) and others. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.xtext.ide.server.hover; + +import org.eclipse.lsp4j.Hover; +import org.eclipse.lsp4j.HoverParams; +import org.eclipse.lsp4j.MarkupContent; +import org.eclipse.lsp4j.TextDocumentPositionParams; +import org.eclipse.xtext.ide.server.Document; +import org.eclipse.xtext.resource.XtextResource; +import org.eclipse.xtext.util.CancelIndicator; + +import com.google.inject.ImplementedBy; + +/** + * @author Sven Efftinge - Initial contribution and API + */ +@ImplementedBy(HoverService.class) +public interface IHoverService { + static final Hover EMPTY_HOVER = new Hover(new MarkupContent("markdown", ""), null); + + /** + * callback for 'textDocument/hover' requests. + * + * @deprecated please override/call {@link #hover(Document, XtextResource, HoverParams, CancelIndicator)} instead. + * This method is scheduled to be removed with 2.22. + */ + @Deprecated//(since="2.21",forRemoval=true) + default Hover hover(Document document, XtextResource resource, TextDocumentPositionParams params, + CancelIndicator cancelIndicator) { + if (params instanceof HoverParams) { + return hover(document, resource, (HoverParams) params, cancelIndicator); + } + throw new IllegalArgumentException("params is not a HoverParams"); + } + + /** + * callback for 'textDocument/hover' requests. + * @since 2.21 + */ + Hover hover(Document document, XtextResource resource, HoverParams params, + CancelIndicator cancelIndicator); +} diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.xtend b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.xtend deleted file mode 100644 index d0ea07f19..000000000 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/hover/IHoverService.xtend +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017, 2020 TypeFox GmbH (http://www.typefox.io) and others. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.xtext.ide.server.hover - -import org.eclipse.lsp4j.Hover -import org.eclipse.lsp4j.TextDocumentPositionParams -import org.eclipse.xtext.ide.server.Document -import org.eclipse.xtext.resource.XtextResource -import org.eclipse.xtext.util.CancelIndicator -import com.google.inject.ImplementedBy -import org.eclipse.lsp4j.MarkupContent - -/** - * @author Sven Efftinge - Initial contribution and API - */ -@ImplementedBy(HoverService) -interface IHoverService { - - public static val EMPTY_HOVER = new Hover(new MarkupContent("markdown", ""), null) - - /** - * callback for 'textDocument/hover' requests. - */ - def Hover hover(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator); -} diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/DefaultDocumentHighlightService.java b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/DefaultDocumentHighlightService.java index b9109e6ad..20aed42ea 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/DefaultDocumentHighlightService.java +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/DefaultDocumentHighlightService.java @@ -19,7 +19,7 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.lsp4j.DocumentHighlight; import org.eclipse.lsp4j.DocumentHighlightKind; -import org.eclipse.lsp4j.TextDocumentPositionParams; +import org.eclipse.lsp4j.DocumentHighlightParams; import org.eclipse.xtext.findReferences.IReferenceFinder; import org.eclipse.xtext.findReferences.IReferenceFinder.Acceptor; import org.eclipse.xtext.findReferences.TargetURICollector; @@ -92,7 +92,7 @@ public class DefaultDocumentHighlightService implements IDocumentHighlightServic private DocumentHighlightComparator comparator; @Override - public List getDocumentHighlights(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator) { + public List getDocumentHighlights(Document document, XtextResource resource, DocumentHighlightParams params, CancelIndicator cancelIndicator) { int offset = document.getOffSet(params.getPosition()); return getDocumentHighlights(resource, offset); } @@ -274,4 +274,6 @@ public class DefaultDocumentHighlightService implements IDocumentHighlightServic } + + } diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/IDocumentHighlightService.java b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/IDocumentHighlightService.java index f5aa23ca7..cfc68a89b 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/IDocumentHighlightService.java +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/occurrences/IDocumentHighlightService.java @@ -11,6 +11,7 @@ package org.eclipse.xtext.ide.server.occurrences; import java.util.List; import org.eclipse.lsp4j.DocumentHighlight; +import org.eclipse.lsp4j.DocumentHighlightParams; import org.eclipse.lsp4j.TextDocumentPositionParams; import org.eclipse.xtext.ide.server.Document; import org.eclipse.xtext.resource.XtextResource; @@ -33,8 +34,23 @@ import com.google.inject.ImplementedBy; @ImplementedBy(DefaultDocumentHighlightService.class) public interface IDocumentHighlightService { - List getDocumentHighlights(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator); + /** + * @deprecated please override/call {@link #getDocumentHighlights(Document, XtextResource, DocumentHighlightParams, CancelIndicator)} instead. + * This method is scheduled to be removed with 2.22. + */ + @Deprecated//(since="2.21",forRemoval=true) + default List getDocumentHighlights(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator) { + if (params instanceof DocumentHighlightParams) { + return getDocumentHighlights(document, resource, (DocumentHighlightParams) params, cancelIndicator); + } + throw new IllegalArgumentException("params is not a DocumentHighlightParams"); + } + /** + * @since 2.21 + */ + List getDocumentHighlights(Document document, XtextResource resource, DocumentHighlightParams params, CancelIndicator cancelIndicator); + /** * Returns with a list of {@link DocumentHighlight document highlight} * instances that matches with the given text from the resource at the given @@ -50,6 +66,7 @@ public interface IDocumentHighlightService { * @return a list of document highlight instances that matches with the * selected text based on an arbitrary logic. Might return with an * empty list but never returns with {@code null}. + * @deprecated This method is scheduled to be removed with 2.22. */ @Deprecated List getDocumentHighlights(final XtextResource resource, final int offset); diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.java b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.java new file mode 100644 index 000000000..be0b9c4a5 --- /dev/null +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.java @@ -0,0 +1,112 @@ +/** + * Copyright (c) 2017 TypeFox GmbH (http://www.typefox.io) and others. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.xtext.ide.server.rename; + +import org.eclipse.lsp4j.PrepareRenameParams; +import org.eclipse.lsp4j.PrepareRenameResult; +import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.RenameParams; +import org.eclipse.lsp4j.WorkspaceEdit; +import org.eclipse.lsp4j.jsonrpc.messages.Either; +import org.eclipse.xtext.ide.server.ILanguageServerAccess; +import org.eclipse.xtext.util.CancelIndicator; + +/** + * Service called for rename refactoring. + * + * @author koehnlein - Initial contribution and API + * @since 2.18 + */ +public interface IRenameService2 { + class Options { + private ILanguageServerAccess languageServerAccess; + + private RenameParams renameParams; + + private CancelIndicator cancelIndicator; + + public ILanguageServerAccess getLanguageServerAccess() { + return languageServerAccess; + } + + public void setLanguageServerAccess(ILanguageServerAccess languageServerAccess) { + this.languageServerAccess = languageServerAccess; + } + + public RenameParams getRenameParams() { + return renameParams; + } + + public void setRenameParams(RenameParams renameParams) { + this.renameParams = renameParams; + } + + public CancelIndicator getCancelIndicator() { + return cancelIndicator; + } + + public void setCancelIndicator(CancelIndicator cancelIndicator) { + this.cancelIndicator = cancelIndicator; + } + } + + class PrepareRenameOptions { + private ILanguageServerAccess languageServerAccess; + + private PrepareRenameParams params; + + private CancelIndicator cancelIndicator; + + public ILanguageServerAccess getLanguageServerAccess() { + return languageServerAccess; + } + + public void setLanguageServerAccess(final ILanguageServerAccess languageServerAccess) { + this.languageServerAccess = languageServerAccess; + } + + public PrepareRenameParams getParams() { + return params; + } + + public void setParams(PrepareRenameParams params) { + this.params = params; + } + + public CancelIndicator getCancelIndicator() { + return cancelIndicator; + } + + public void setCancelIndicator(CancelIndicator cancelIndicator) { + this.cancelIndicator = cancelIndicator; + } + } + + WorkspaceEdit rename(IRenameService2.Options options); + + /** + * Returns a {@link Range range} describing the range of the string to rename and optionally a placeholder text of + * the string content to be renamed. + * + *

+ * If {@code null} is returned then it is deemed that invoking {@link #rename rename} with the same text document + * position will not result in a valid {@link WorkspaceEdit workspace edit}. + * + *

+ * The default implementation only checks whether there is an identifier under the give text document position or + * not. + * + *

+ * This method should be used to set up and to test the validity of a rename operation at a given location.
+ * See {@code textDocument/prepareRename} + * for more details. + */ + Either prepareRename(IRenameService2.PrepareRenameOptions options); +} diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.xtend b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.xtend deleted file mode 100644 index 471b7dc95..000000000 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/IRenameService2.xtend +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 TypeFox GmbH (http://www.typefox.io) and others. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.xtext.ide.server.rename - -import org.eclipse.lsp4j.PrepareRenameResult -import org.eclipse.lsp4j.Range -import org.eclipse.lsp4j.RenameParams -import org.eclipse.lsp4j.TextDocumentPositionParams -import org.eclipse.lsp4j.WorkspaceEdit -import org.eclipse.lsp4j.jsonrpc.messages.Either -import org.eclipse.xtend.lib.annotations.Accessors -import org.eclipse.xtext.ide.server.ILanguageServerAccess -import org.eclipse.xtext.util.CancelIndicator - -/** - * Service called for rename refactoring. - * - * @author koehnlein - Initial contribution and API - * @since 2.18 - */ -interface IRenameService2 { - - def WorkspaceEdit rename(Options options) - - /** - * Returns a {@link Range range} describing the range of the string to rename and optionally a placeholder text of - * the string content to be renamed. - * - *

- * If {@code null} is returned then it is deemed that invoking {@link #rename rename} with the same text document - * position will not result in a valid {@link WorkspaceEdit workspace edit}. - * - *

- * The default implementation only checks whether there is an identifier under the give text document position or not. - * - *

- * This method should be used to set up and to test the validity of a rename operation at a given location.
- * See {@code textDocument/prepareRename} for more details. - * - */ - def Either prepareRename(PrepareRenameOptions options) - - @Accessors - class Options { - ILanguageServerAccess languageServerAccess - RenameParams renameParams - CancelIndicator cancelIndicator - } - - @Accessors - class PrepareRenameOptions { - ILanguageServerAccess languageServerAccess - TextDocumentPositionParams params - CancelIndicator cancelIndicator - } - -} diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/RenameService2.xtend b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/RenameService2.xtend index 894814264..a31b4371a 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/RenameService2.xtend +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/rename/RenameService2.xtend @@ -18,6 +18,7 @@ import org.eclipse.emf.ecore.EObject import org.eclipse.emf.ecore.resource.Resource import org.eclipse.emf.ecore.util.EcoreUtil import org.eclipse.lsp4j.Position +import org.eclipse.lsp4j.PrepareRenameParams import org.eclipse.lsp4j.PrepareRenameResult import org.eclipse.lsp4j.Range import org.eclipse.lsp4j.RenameParams @@ -77,12 +78,12 @@ class RenameService2 implements IRenameService2 { if (shouldPrepareRename) { val identifier = new TextDocumentIdentifier(textDocument.uri) val position = options.renameParams.position - val positionParams = new TextDocumentPositionParams(identifier, position) + val positionParams = new PrepareRenameParams(identifier, position) val resource = context.resource val document = context.document val cancelIndicator = options.cancelIndicator - val prepareRenameResult = doPrepareRename(resource, document, positionParams, cancelIndicator) + val prepareRenameResult = doPrepareRename(resource, document, positionParams as TextDocumentPositionParams, cancelIndicator) if (!mayPerformRename(prepareRenameResult, options.renameParams)) { return null } @@ -165,7 +166,7 @@ class RenameService2 implements IRenameService2 { val document = context.document val params = options.params val cancelIndicator = options.cancelIndicator - return doPrepareRename(resource, document, params, cancelIndicator) + return doPrepareRename(resource, document, params as TextDocumentPositionParams, cancelIndicator) ].exceptionally [ exception | val rootCause = Throwables.getRootCause(exception) if (rootCause instanceof FileNotFoundException) { @@ -176,9 +177,21 @@ class RenameService2 implements IRenameService2 { throw exception ].get } - + + /** + * @deprecated please override/call {@link #doPrepareRename(Resource, Document, PrepareRenameParams, CancelIndicator)} instead. + */ + @Deprecated protected def Either doPrepareRename(Resource resource, Document document, TextDocumentPositionParams params, CancelIndicator cancelIndicator) { + if (params instanceof PrepareRenameParams) { + return doPrepareRename(resource, document, params as PrepareRenameParams, cancelIndicator) + } + throw new IllegalArgumentException("params is not a PrepareRenameParams"); + } + + protected def Either doPrepareRename(Resource resource, Document document, + PrepareRenameParams params, CancelIndicator cancelIndicator) { val uri = params.textDocument.uri if (resource instanceof XtextResource) { diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/signatureHelp/ISignatureHelpService.java b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/signatureHelp/ISignatureHelpService.java index 5825ed047..c6dfcbc25 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/signatureHelp/ISignatureHelpService.java +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/signatureHelp/ISignatureHelpService.java @@ -36,8 +36,9 @@ public interface ISignatureHelpService { /** * @deprecated please override/call {@link #getSignatureHelp(Document, XtextResource, SignatureHelpParams, CancelIndicator)} instead. + * This method is scheduled to be removed with 2.22. */ - @Deprecated + @Deprecated//(since="2.21",forRemoval=true) default SignatureHelp getSignatureHelp(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator) { if (params instanceof SignatureHelpParams) { return getSignatureHelp(document, resource, (SignatureHelpParams) params, cancelIndicator); @@ -58,6 +59,8 @@ public interface ISignatureHelpService { * the offset of the cursor in the resource. * * @return a signature help instance. + * + * @deprecated This method is scheduled to be removed with 2.22. */ @Deprecated default SignatureHelp getSignatureHelp(final XtextResource resource, final int offset) { diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.xtend b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.xtend index f7c3426ed..b25c8f7c2 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.xtend +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.xtend @@ -16,6 +16,7 @@ import java.util.List import org.eclipse.emf.common.util.URI import org.eclipse.emf.ecore.EClass import org.eclipse.emf.ecore.EObject +import org.eclipse.lsp4j.DefinitionParams import org.eclipse.lsp4j.DocumentSymbol import org.eclipse.lsp4j.DocumentSymbolParams import org.eclipse.lsp4j.Location @@ -80,13 +81,34 @@ class DocumentSymbolService implements IDocumentSymbolService { @Inject HierarchicalDocumentSymbolService hierarchicalDocumentSymbolService - + + /** + * @deprecated please override/call {@link #getDefinitions(Document,XtextResource,DefinitionParams,IReferenceFinder.IResourceAccess,CancelIndicator)} instead. + * This method is scheduled to be removed with 2.22. + */ + @Deprecated//(since="2.21",forRemoval=true) def List getDefinitions( Document document, XtextResource resource, TextDocumentPositionParams params, IResourceAccess resourceAccess, CancelIndicator cancelIndicator + ) { + if (params instanceof DefinitionParams) { + return getDefinitions(document, resource, params as DefinitionParams, resourceAccess, cancelIndicator) + } + throw new IllegalArgumentException("params is not a DefinitionParams"); + } + + /** + * @since 2.21 + */ + def List getDefinitions( + Document document, + XtextResource resource, + DefinitionParams params, + IResourceAccess resourceAccess, + CancelIndicator cancelIndicator ) { val offset = document.getOffSet(params.position) return getDefinitions(resource, offset, resourceAccess, cancelIndicator) diff --git a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.java b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.java index fa39d99d7..76745ed31 100644 --- a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.java +++ b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/contentassist/ContentAssistService.java @@ -21,6 +21,7 @@ import java.util.function.Consumer; import org.eclipse.lsp4j.CompletionItem; import org.eclipse.lsp4j.CompletionItemKind; import org.eclipse.lsp4j.CompletionList; +import org.eclipse.lsp4j.CompletionParams; import org.eclipse.lsp4j.InsertTextFormat; import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; @@ -69,7 +70,19 @@ public class ContentAssistService { @Inject private OperationCanceledManager operationCanceledManager; + /** + * @deprecated please override/call {@link #createCompletionList(Document, XtextResource, CompletionParams, CancelIndicator)} instead. + * This method is scheduled to be removed with 2.22. + */ + @Deprecated public CompletionList createCompletionList(final Document document, final XtextResource resource, final TextDocumentPositionParams params, final CancelIndicator cancelIndicator) { + if ((params instanceof CompletionParams)) { + return this.createCompletionList(document, resource, ((CompletionParams) params), cancelIndicator); + } + throw new IllegalArgumentException("params is not a CompletionParams"); + } + + public CompletionList createCompletionList(final Document document, final XtextResource resource, final CompletionParams params, final CancelIndicator cancelIndicator) { try { final CompletionList result = new CompletionList(); result.setIsIncomplete(true); diff --git a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/HoverService.java b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/HoverService.java index 0cbc779ba..29c712899 100644 --- a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/HoverService.java +++ b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/HoverService.java @@ -13,9 +13,9 @@ import com.google.inject.Inject; import com.google.inject.Singleton; import org.eclipse.emf.ecore.EObject; import org.eclipse.lsp4j.Hover; +import org.eclipse.lsp4j.HoverParams; import org.eclipse.lsp4j.MarkupContent; import org.eclipse.lsp4j.Range; -import org.eclipse.lsp4j.TextDocumentPositionParams; import org.eclipse.xtext.documentation.IEObjectDocumentationProvider; import org.eclipse.xtext.ide.server.Document; import org.eclipse.xtext.ide.server.DocumentExtensions; @@ -56,7 +56,7 @@ public class HoverService implements IHoverService { private IEObjectDocumentationProvider _iEObjectDocumentationProvider; @Override - public Hover hover(final Document document, final XtextResource resource, final TextDocumentPositionParams params, final CancelIndicator cancelIndicator) { + public Hover hover(final Document document, final XtextResource resource, final HoverParams params, final CancelIndicator cancelIndicator) { final int offset = document.getOffSet(params.getPosition()); final HoverContext context = this.createContext(document, resource, offset); return this.hover(context); diff --git a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/IHoverService.java b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/IHoverService.java deleted file mode 100644 index 25a4a393d..000000000 --- a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/hover/IHoverService.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright (c) 2017, 2020 TypeFox GmbH (http://www.typefox.io) and others. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.eclipse.xtext.ide.server.hover; - -import com.google.inject.ImplementedBy; -import org.eclipse.lsp4j.Hover; -import org.eclipse.lsp4j.MarkupContent; -import org.eclipse.lsp4j.TextDocumentPositionParams; -import org.eclipse.xtext.ide.server.Document; -import org.eclipse.xtext.ide.server.hover.HoverService; -import org.eclipse.xtext.resource.XtextResource; -import org.eclipse.xtext.util.CancelIndicator; - -/** - * @author Sven Efftinge - Initial contribution and API - */ -@ImplementedBy(HoverService.class) -@SuppressWarnings("all") -public interface IHoverService { - static final Hover EMPTY_HOVER = new Hover(new MarkupContent("markdown", ""), null); - - /** - * callback for 'textDocument/hover' requests. - */ - Hover hover(final Document document, final XtextResource resource, final TextDocumentPositionParams params, final CancelIndicator cancelIndicator); -} diff --git a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/IRenameService2.java b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/IRenameService2.java deleted file mode 100644 index d63a6eca3..000000000 --- a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/IRenameService2.java +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Copyright (c) 2017 TypeFox GmbH (http://www.typefox.io) and others. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.eclipse.xtext.ide.server.rename; - -import org.eclipse.lsp4j.PrepareRenameResult; -import org.eclipse.lsp4j.Range; -import org.eclipse.lsp4j.RenameParams; -import org.eclipse.lsp4j.TextDocumentPositionParams; -import org.eclipse.lsp4j.WorkspaceEdit; -import org.eclipse.lsp4j.jsonrpc.messages.Either; -import org.eclipse.xtend.lib.annotations.Accessors; -import org.eclipse.xtext.ide.server.ILanguageServerAccess; -import org.eclipse.xtext.util.CancelIndicator; -import org.eclipse.xtext.xbase.lib.Pure; - -/** - * Service called for rename refactoring. - * - * @author koehnlein - Initial contribution and API - * @since 2.18 - */ -@SuppressWarnings("all") -public interface IRenameService2 { - @Accessors - class Options { - private ILanguageServerAccess languageServerAccess; - - private RenameParams renameParams; - - private CancelIndicator cancelIndicator; - - @Pure - public ILanguageServerAccess getLanguageServerAccess() { - return this.languageServerAccess; - } - - public void setLanguageServerAccess(final ILanguageServerAccess languageServerAccess) { - this.languageServerAccess = languageServerAccess; - } - - @Pure - public RenameParams getRenameParams() { - return this.renameParams; - } - - public void setRenameParams(final RenameParams renameParams) { - this.renameParams = renameParams; - } - - @Pure - public CancelIndicator getCancelIndicator() { - return this.cancelIndicator; - } - - public void setCancelIndicator(final CancelIndicator cancelIndicator) { - this.cancelIndicator = cancelIndicator; - } - } - - @Accessors - class PrepareRenameOptions { - private ILanguageServerAccess languageServerAccess; - - private TextDocumentPositionParams params; - - private CancelIndicator cancelIndicator; - - @Pure - public ILanguageServerAccess getLanguageServerAccess() { - return this.languageServerAccess; - } - - public void setLanguageServerAccess(final ILanguageServerAccess languageServerAccess) { - this.languageServerAccess = languageServerAccess; - } - - @Pure - public TextDocumentPositionParams getParams() { - return this.params; - } - - public void setParams(final TextDocumentPositionParams params) { - this.params = params; - } - - @Pure - public CancelIndicator getCancelIndicator() { - return this.cancelIndicator; - } - - public void setCancelIndicator(final CancelIndicator cancelIndicator) { - this.cancelIndicator = cancelIndicator; - } - } - - WorkspaceEdit rename(final IRenameService2.Options options); - - /** - * Returns a {@link Range range} describing the range of the string to rename and optionally a placeholder text of - * the string content to be renamed. - * - *

- * If {@code null} is returned then it is deemed that invoking {@link #rename rename} with the same text document - * position will not result in a valid {@link WorkspaceEdit workspace edit}. - * - *

- * The default implementation only checks whether there is an identifier under the give text document position or not. - * - *

- * This method should be used to set up and to test the validity of a rename operation at a given location.
- * See {@code textDocument/prepareRename} for more details. - */ - Either prepareRename(final IRenameService2.PrepareRenameOptions options); -} diff --git a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/RenameService2.java b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/RenameService2.java index 8211a99b6..4ffb2c7e9 100644 --- a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/RenameService2.java +++ b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/rename/RenameService2.java @@ -24,6 +24,7 @@ import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.lsp4j.InitializeResult; import org.eclipse.lsp4j.Position; +import org.eclipse.lsp4j.PrepareRenameParams; import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.RenameOptions; @@ -102,11 +103,11 @@ public class RenameService2 implements IRenameService2 { String _uri = textDocument.getUri(); final TextDocumentIdentifier identifier = new TextDocumentIdentifier(_uri); final Position position = options.getRenameParams().getPosition(); - final TextDocumentPositionParams positionParams = new TextDocumentPositionParams(identifier, position); + final PrepareRenameParams positionParams = new PrepareRenameParams(identifier, position); final Resource resource = context.getResource(); final Document document = context.getDocument(); final CancelIndicator cancelIndicator = options.getCancelIndicator(); - final Either prepareRenameResult = this.doPrepareRename(resource, document, positionParams, cancelIndicator); + final Either prepareRenameResult = this.doPrepareRename(resource, document, ((TextDocumentPositionParams) positionParams), cancelIndicator); boolean _mayPerformRename = this.mayPerformRename(prepareRenameResult, options.getRenameParams()); boolean _not = (!_mayPerformRename); if (_not) { @@ -225,9 +226,9 @@ public class RenameService2 implements IRenameService2 { } final Resource resource = context.getResource(); final Document document = context.getDocument(); - final TextDocumentPositionParams params = options.getParams(); + final PrepareRenameParams params = options.getParams(); final CancelIndicator cancelIndicator = options.getCancelIndicator(); - return this.doPrepareRename(resource, document, params, cancelIndicator); + return this.doPrepareRename(resource, document, ((TextDocumentPositionParams) params), cancelIndicator); }; final java.util.function.Function> _function_1 = (Throwable exception) -> { try { @@ -248,7 +249,18 @@ public class RenameService2 implements IRenameService2 { } } + /** + * @deprecated please override/call {@link #doPrepareRename(Resource, Document, PrepareRenameParams, CancelIndicator)} instead. + */ + @Deprecated protected Either doPrepareRename(final Resource resource, final Document document, final TextDocumentPositionParams params, final CancelIndicator cancelIndicator) { + if ((params instanceof PrepareRenameParams)) { + return this.doPrepareRename(resource, document, ((PrepareRenameParams) params), cancelIndicator); + } + throw new IllegalArgumentException("params is not a PrepareRenameParams"); + } + + protected Either doPrepareRename(final Resource resource, final Document document, final PrepareRenameParams params, final CancelIndicator cancelIndicator) { final String uri = params.getTextDocument().getUri(); if ((resource instanceof XtextResource)) { IParseResult _parseResult = null; diff --git a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.java b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.java index 33307856e..03ce3c3c3 100644 --- a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.java +++ b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/symbol/DocumentSymbolService.java @@ -22,6 +22,7 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.lsp4j.DefinitionParams; import org.eclipse.lsp4j.DocumentSymbol; import org.eclipse.lsp4j.DocumentSymbolParams; import org.eclipse.lsp4j.Location; @@ -102,7 +103,22 @@ public class DocumentSymbolService implements IDocumentSymbolService { @Inject private HierarchicalDocumentSymbolService hierarchicalDocumentSymbolService; + /** + * @deprecated please override/call {@link #getDefinitions(Document,XtextResource,DefinitionParams,IReferenceFinder.IResourceAccess,CancelIndicator)} instead. + * This method is scheduled to be removed with 2.22. + */ + @Deprecated public List getDefinitions(final Document document, final XtextResource resource, final TextDocumentPositionParams params, final IReferenceFinder.IResourceAccess resourceAccess, final CancelIndicator cancelIndicator) { + if ((params instanceof DefinitionParams)) { + return this.getDefinitions(document, resource, ((DefinitionParams) params), resourceAccess, cancelIndicator); + } + throw new IllegalArgumentException("params is not a DefinitionParams"); + } + + /** + * @since 2.21 + */ + public List getDefinitions(final Document document, final XtextResource resource, final DefinitionParams params, final IReferenceFinder.IResourceAccess resourceAccess, final CancelIndicator cancelIndicator) { final int offset = document.getOffSet(params.getPosition()); return this.getDefinitions(resource, offset, resourceAccess, cancelIndicator); } diff --git a/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/AbstractLanguageServerTest.xtend b/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/AbstractLanguageServerTest.xtend index 217d5906e..e08d30667 100644 --- a/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/AbstractLanguageServerTest.xtend +++ b/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/AbstractLanguageServerTest.xtend @@ -27,6 +27,7 @@ import org.eclipse.lsp4j.CodeLensParams import org.eclipse.lsp4j.Command import org.eclipse.lsp4j.CompletionItem import org.eclipse.lsp4j.CompletionParams +import org.eclipse.lsp4j.DefinitionParams import org.eclipse.lsp4j.Diagnostic import org.eclipse.lsp4j.DidChangeWatchedFilesParams import org.eclipse.lsp4j.DidCloseTextDocumentParams @@ -34,15 +35,18 @@ import org.eclipse.lsp4j.DidOpenTextDocumentParams import org.eclipse.lsp4j.DocumentFormattingParams import org.eclipse.lsp4j.DocumentHighlight import org.eclipse.lsp4j.DocumentHighlightKind +import org.eclipse.lsp4j.DocumentHighlightParams import org.eclipse.lsp4j.DocumentRangeFormattingParams import org.eclipse.lsp4j.DocumentSymbol import org.eclipse.lsp4j.DocumentSymbolParams import org.eclipse.lsp4j.FileChangeType import org.eclipse.lsp4j.FileEvent import org.eclipse.lsp4j.Hover +import org.eclipse.lsp4j.HoverParams import org.eclipse.lsp4j.InitializeParams import org.eclipse.lsp4j.InitializeResult import org.eclipse.lsp4j.Location +import org.eclipse.lsp4j.MarkupContent import org.eclipse.lsp4j.Position import org.eclipse.lsp4j.PublishDiagnosticsParams import org.eclipse.lsp4j.Range @@ -51,11 +55,11 @@ import org.eclipse.lsp4j.ReferenceParams import org.eclipse.lsp4j.SemanticHighlightingInformation import org.eclipse.lsp4j.SemanticHighlightingParams import org.eclipse.lsp4j.SignatureHelp +import org.eclipse.lsp4j.SignatureHelpParams import org.eclipse.lsp4j.SymbolInformation import org.eclipse.lsp4j.TextDocumentEdit import org.eclipse.lsp4j.TextDocumentIdentifier import org.eclipse.lsp4j.TextDocumentItem -import org.eclipse.lsp4j.TextDocumentPositionParams import org.eclipse.lsp4j.TextEdit import org.eclipse.lsp4j.VersionedTextDocumentIdentifier import org.eclipse.lsp4j.WorkspaceEdit @@ -85,8 +89,6 @@ import org.junit.jupiter.api.BeforeEach import static extension org.eclipse.lsp4j.util.Ranges.containsRange import static extension org.eclipse.xtext.util.Strings.* -import org.eclipse.lsp4j.SignatureHelpParams -import org.eclipse.lsp4j.MarkupContent import org.eclipse.lsp4j.WorkspaceFolder /** @@ -522,7 +524,7 @@ abstract class AbstractLanguageServerTest implements Endpoint { configuration.filePath = 'MyModel.' + fileExtension configurator.apply(configuration) val fileUri = initializeContext(configuration).uri - val definitionsFuture = languageServer.definition(new TextDocumentPositionParams => [ + val definitionsFuture = languageServer.definition(new DefinitionParams => [ textDocument = new TextDocumentIdentifier(fileUri) position = new Position(line, column) ]) @@ -541,7 +543,7 @@ abstract class AbstractLanguageServerTest implements Endpoint { configurator.apply(configuration) val fileUri = initializeContext(configuration).uri - val hoverFuture = languageServer.hover(new TextDocumentPositionParams => [ + val hoverFuture = languageServer.hover(new HoverParams => [ textDocument = new TextDocumentIdentifier(fileUri) position = new Position(line, column) ]) @@ -581,7 +583,7 @@ abstract class AbstractLanguageServerTest implements Endpoint { configurator.apply(configuration); val fileUri = initializeContext(configuration).uri; - val highlights = languageServer.documentHighlight(new TextDocumentPositionParams => [ + val highlights = languageServer.documentHighlight(new DocumentHighlightParams => [ textDocument = new TextDocumentIdentifier(fileUri) position = new Position(line, column) ]); diff --git a/org.eclipse.xtext.testing/xtend-gen/org/eclipse/xtext/testing/AbstractLanguageServerTest.java b/org.eclipse.xtext.testing/xtend-gen/org/eclipse/xtext/testing/AbstractLanguageServerTest.java index 16dcc3fc9..e1f5d2e71 100644 --- a/org.eclipse.xtext.testing/xtend-gen/org/eclipse/xtext/testing/AbstractLanguageServerTest.java +++ b/org.eclipse.xtext.testing/xtend-gen/org/eclipse/xtext/testing/AbstractLanguageServerTest.java @@ -40,6 +40,7 @@ import org.eclipse.lsp4j.Command; import org.eclipse.lsp4j.CompletionItem; import org.eclipse.lsp4j.CompletionList; import org.eclipse.lsp4j.CompletionParams; +import org.eclipse.lsp4j.DefinitionParams; import org.eclipse.lsp4j.Diagnostic; import org.eclipse.lsp4j.DidChangeWatchedFilesParams; import org.eclipse.lsp4j.DidCloseTextDocumentParams; @@ -47,6 +48,7 @@ import org.eclipse.lsp4j.DidOpenTextDocumentParams; import org.eclipse.lsp4j.DocumentFormattingParams; import org.eclipse.lsp4j.DocumentHighlight; import org.eclipse.lsp4j.DocumentHighlightKind; +import org.eclipse.lsp4j.DocumentHighlightParams; import org.eclipse.lsp4j.DocumentRangeFormattingParams; import org.eclipse.lsp4j.DocumentSymbol; import org.eclipse.lsp4j.DocumentSymbolCapabilities; @@ -54,6 +56,7 @@ import org.eclipse.lsp4j.DocumentSymbolParams; import org.eclipse.lsp4j.FileChangeType; import org.eclipse.lsp4j.FileEvent; import org.eclipse.lsp4j.Hover; +import org.eclipse.lsp4j.HoverParams; import org.eclipse.lsp4j.InitializeParams; import org.eclipse.lsp4j.InitializeResult; import org.eclipse.lsp4j.Location; @@ -74,7 +77,6 @@ import org.eclipse.lsp4j.TextDocumentClientCapabilities; import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.TextDocumentIdentifier; import org.eclipse.lsp4j.TextDocumentItem; -import org.eclipse.lsp4j.TextDocumentPositionParams; import org.eclipse.lsp4j.TextEdit; import org.eclipse.lsp4j.VersionedTextDocumentIdentifier; import org.eclipse.lsp4j.WorkspaceEdit; @@ -1106,8 +1108,8 @@ public abstract class AbstractLanguageServerTest implements Endpoint { configuration.setFilePath(("MyModel." + this.fileExtension)); configurator.apply(configuration); final String fileUri = this.initializeContext(configuration).getUri(); - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(); - final Procedure1 _function = (TextDocumentPositionParams it) -> { + DefinitionParams _definitionParams = new DefinitionParams(); + final Procedure1 _function = (DefinitionParams it) -> { TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(fileUri); it.setTextDocument(_textDocumentIdentifier); int _line = configuration.getLine(); @@ -1115,7 +1117,7 @@ public abstract class AbstractLanguageServerTest implements Endpoint { Position _position = new Position(_line, _column); it.setPosition(_position); }; - TextDocumentPositionParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_textDocumentPositionParams, _function); + DefinitionParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_definitionParams, _function); final CompletableFuture, List>> definitionsFuture = this.languageServer.definition(_doubleArrow); final Either, List> definitions = definitionsFuture.get(); Procedure1> _assertDefinitions = configuration.getAssertDefinitions(); @@ -1138,8 +1140,8 @@ public abstract class AbstractLanguageServerTest implements Endpoint { configuration.setFilePath(("MyModel." + this.fileExtension)); configurator.apply(configuration); final String fileUri = this.initializeContext(configuration).getUri(); - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(); - final Procedure1 _function = (TextDocumentPositionParams it) -> { + HoverParams _hoverParams = new HoverParams(); + final Procedure1 _function = (HoverParams it) -> { TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(fileUri); it.setTextDocument(_textDocumentIdentifier); int _line = configuration.getLine(); @@ -1147,7 +1149,7 @@ public abstract class AbstractLanguageServerTest implements Endpoint { Position _position = new Position(_line, _column); it.setPosition(_position); }; - TextDocumentPositionParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_textDocumentPositionParams, _function); + HoverParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_hoverParams, _function); final CompletableFuture hoverFuture = this.languageServer.hover(_doubleArrow); final Hover hover = hoverFuture.get(); Procedure1 _assertHover = configuration.getAssertHover(); @@ -1208,8 +1210,8 @@ public abstract class AbstractLanguageServerTest implements Endpoint { final DocumentHighlightConfiguration configuration = ObjectExtensions.operator_doubleArrow(_documentHighlightConfiguration, _function); configurator.apply(configuration); final String fileUri = this.initializeContext(configuration).getUri(); - TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams(); - final Procedure1 _function_1 = (TextDocumentPositionParams it) -> { + DocumentHighlightParams _documentHighlightParams = new DocumentHighlightParams(); + final Procedure1 _function_1 = (DocumentHighlightParams it) -> { TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(fileUri); it.setTextDocument(_textDocumentIdentifier); int _line = configuration.getLine(); @@ -1217,7 +1219,7 @@ public abstract class AbstractLanguageServerTest implements Endpoint { Position _position = new Position(_line, _column); it.setPosition(_position); }; - TextDocumentPositionParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_textDocumentPositionParams, _function_1); + DocumentHighlightParams _doubleArrow = ObjectExtensions.operator_doubleArrow(_documentHighlightParams, _function_1); final CompletableFuture> highlights = this.languageServer.documentHighlight(_doubleArrow); final Function1 _function_2 = (DocumentHighlight it) -> { return this.toExpectation(it);