PT #165911996: Switch to LocationLink from Location for definitions

This commit is contained in:
BoykoAlex
2019-10-04 18:34:09 -04:00
parent 2e73b4b66f
commit bb79221cfe
18 changed files with 228 additions and 113 deletions

View File

@@ -39,7 +39,7 @@ import org.eclipse.lsp4j.CompletionList;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.DocumentSymbol;
import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.LocationLink;
import org.eclipse.lsp4j.MarkedString;
import org.eclipse.lsp4j.MarkupContent;
import org.eclipse.lsp4j.Position;
@@ -745,7 +745,7 @@ public class Editor {
return "Editor(\n"+getText()+"\n)";
}
public void assertLinkTargets(String hoverOver, Set<Location> expectedLocations) throws Exception {
public void assertLinkTargets(String hoverOver, Set<LocationLink> expectedLocations) throws Exception {
int pos = getRawText().indexOf(hoverOver);
if (pos>=0) {
pos += hoverOver.length() / 2;
@@ -753,7 +753,7 @@ public class Editor {
assertTrue("Not found in editor: '"+hoverOver+"'", pos>=0);
TextDocumentPositionParams params = new TextDocumentPositionParams(new TextDocumentIdentifier(getUri()), doc.toPosition(pos));
List<? extends Location> definitions = harness.getDefinitions(params);
List<? extends LocationLink> definitions = harness.getDefinitions(params);
assertEquals(ImmutableSet.copyOf(expectedLocations), ImmutableSet.copyOf(definitions));
}
@@ -766,7 +766,7 @@ public class Editor {
assertTrue("Not found in editor: '"+hoverOver+"'", pos>=0);
TextDocumentPositionParams params = new TextDocumentPositionParams(new TextDocumentIdentifier(getUri()), doc.toPosition(pos));
List<? extends Location> definitions = harness.getDefinitions(params);
List<? extends LocationLink> definitions = harness.getDefinitions(params);
assertTrue(definitions == null || definitions.isEmpty());
}
@@ -822,12 +822,12 @@ public class Editor {
ignoredTypes.add(type.toString());
}
public void assertGotoDefinition(Position pos, Range expectedTarget) throws Exception {
public void assertGotoDefinition(Position pos, Range expectedTarget, Range highlightRange) throws Exception {
TextDocumentIdentifier textDocumentId = doc.getId();
TextDocumentPositionParams params = new TextDocumentPositionParams(textDocumentId, textDocumentId.getUri(), pos);
List<? extends Location> defs = harness.getDefinitions(params);
List<? extends LocationLink> defs = harness.getDefinitions(params);
assertEquals(1, defs.size());
assertEquals(new Location(textDocumentId.getUri(), expectedTarget), defs.get(0));
assertEquals(new LocationLink(textDocumentId.getUri(), expectedTarget, expectedTarget, highlightRange), defs.get(0));
}
/**

View File

@@ -35,7 +35,6 @@ import java.util.Map.Entry;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -75,6 +74,7 @@ import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.InitializeParams;
import org.eclipse.lsp4j.InitializeResult;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.LocationLink;
import org.eclipse.lsp4j.MarkupContent;
import org.eclipse.lsp4j.MessageActionItem;
import org.eclipse.lsp4j.MessageParams;
@@ -107,7 +107,6 @@ import org.springframework.ide.vscode.commons.languageserver.completion.Document
import org.springframework.ide.vscode.commons.languageserver.util.LanguageServerTestListener;
import org.springframework.ide.vscode.commons.languageserver.util.Settings;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.languageserver.util.WorkspaceSymbolHandler;
import org.springframework.ide.vscode.commons.protocol.CursorMovement;
import org.springframework.ide.vscode.commons.protocol.HighlightParams;
import org.springframework.ide.vscode.commons.protocol.ProgressParams;
@@ -727,9 +726,9 @@ public class LanguageServerHarness {
assertEquals(expected, completion.getLabel());
}
public List<? extends Location> getDefinitions(TextDocumentPositionParams params) throws Exception {
public List<? extends LocationLink> getDefinitions(TextDocumentPositionParams params) throws Exception {
waitForReconcile(); //goto definitions relies on reconciler infos! Must wait or race condition breaking tests occasionally.
return getServer().getTextDocumentService().definition(params).get().getLeft();
return getServer().getTextDocumentService().definition(params).get().getRight();
}
public static void assertDocumentation(String expected, CompletionItem completion) {