From 3f40e5fa4dc30b87aeb0639803be51fd4641fe67 Mon Sep 17 00:00:00 2001 From: Victor Rubezhny Date: Thu, 1 Jun 2023 18:03:12 +0200 Subject: [PATCH] IRenameParticipant.doRename() is not conform with LSP-defined rename result #1521 --- .../XMLReferencesRenameParticipant.java | 8 +++- .../grammar/rng/RNGRenameParticipant.java | 10 +++-- .../participants/XSDRenameParticipant.java | 10 +++-- .../lemminx/services/XMLLanguageService.java | 4 +- .../eclipse/lemminx/services/XMLRename.java | 30 ++++++++----- .../extensions/IRenameParticipant.java | 22 ++++++++-- .../services/format/XMLFormatterDocument.java | 3 +- .../format => utils}/TextEditUtils.java | 42 ++++++++++++++++++- .../java/org/eclipse/lemminx/XMLAssert.java | 16 ++++--- .../ErrorParticipantLanguageServiceTest.java | 4 +- .../format/LeftWhitespacesOffsetTest.java | 3 +- .../services/format/TextEditUtilsTest.java | 3 +- 12 files changed, 121 insertions(+), 34 deletions(-) rename org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/{services/format => utils}/TextEditUtils.java (72%) diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/references/participants/XMLReferencesRenameParticipant.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/references/participants/XMLReferencesRenameParticipant.java index 7ddddd031..ad3d1e62b 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/references/participants/XMLReferencesRenameParticipant.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/references/participants/XMLReferencesRenameParticipant.java @@ -11,6 +11,8 @@ *******************************************************************************/ package org.eclipse.lemminx.extensions.references.participants; +import static org.eclipse.lemminx.utils.TextEditUtils.mergeOrAddTextEdits; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -26,6 +28,8 @@ import org.eclipse.lemminx.services.extensions.IRenameRequest; import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.ResourceOperation; +import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.TextEdit; import org.eclipse.lsp4j.jsonrpc.CancelChecker; import org.eclipse.lsp4j.jsonrpc.messages.Either; @@ -88,8 +92,8 @@ private static String createPlaceHolder(SearchNode searchNode) { // --------------- Rename @Override - public void doRename(IRenameRequest request, List edits, CancelChecker cancelChecker) { - edits.addAll(getRenameTextEdits(request, cancelChecker)); + public void doRename(IRenameRequest request, List> documentChanges, CancelChecker cancelChecker) { + mergeOrAddTextEdits(request.getXMLDocument(), getRenameTextEdits(request, cancelChecker), documentChanges); } private List getRenameTextEdits(IRenameRequest request, CancelChecker cancelChecker) { diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/grammar/rng/RNGRenameParticipant.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/grammar/rng/RNGRenameParticipant.java index bf599bb87..367eab7d8 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/grammar/rng/RNGRenameParticipant.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/grammar/rng/RNGRenameParticipant.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2022 Red Hat Inc. and others. +* Copyright (c) 2022, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -11,6 +11,8 @@ *******************************************************************************/ package org.eclipse.lemminx.extensions.relaxng.grammar.rng; +import static org.eclipse.lemminx.utils.TextEditUtils.mergeOrAddTextEdits; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -30,6 +32,8 @@ import org.eclipse.lsp4j.Location; import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.ResourceOperation; +import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.TextEdit; import org.eclipse.lsp4j.jsonrpc.CancelChecker; import org.eclipse.lsp4j.jsonrpc.messages.Either; @@ -59,8 +63,8 @@ public Either prepareRename(IPrepareRenameRequest re // --------------- Rename @Override - public void doRename(IRenameRequest request, List edits, CancelChecker cancelChecker) { - edits.addAll(getRenameTextEdits(request, cancelChecker)); + public void doRename(IRenameRequest request, List> documentChanges, CancelChecker cancelChecker) { + mergeOrAddTextEdits(request.getXMLDocument(), getRenameTextEdits(request, cancelChecker), documentChanges); } private List getRenameTextEdits(IRenameRequest request, CancelChecker cancelChecker) { diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/participants/XSDRenameParticipant.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/participants/XSDRenameParticipant.java index 6601fbcc8..75bded890 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/participants/XSDRenameParticipant.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/participants/XSDRenameParticipant.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2019 Red Hat Inc. and others. +* Copyright (c) 2019, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -11,6 +11,8 @@ *******************************************************************************/ package org.eclipse.lemminx.extensions.xsd.participants; +import static org.eclipse.lemminx.utils.TextEditUtils.mergeOrAddTextEdits; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -32,6 +34,8 @@ import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.ResourceOperation; +import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.TextEdit; import org.eclipse.lsp4j.jsonrpc.CancelChecker; import org.eclipse.lsp4j.jsonrpc.messages.Either; @@ -62,8 +66,8 @@ public Either prepareRename(IPrepareRenameRequest re // --------------- Rename @Override - public void doRename(IRenameRequest request, List edits, CancelChecker cancelChecker) { - edits.addAll(getRenameTextEdits(request, cancelChecker)); + public void doRename(IRenameRequest request, List> documentChanges, CancelChecker cancelChecker) { + mergeOrAddTextEdits(request.getXMLDocument(), getRenameTextEdits(request, cancelChecker), documentChanges); } private List getRenameTextEdits(IRenameRequest request, CancelChecker cancelChecker) { diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java index 1e62fb639..923b8d141 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2018 Angelo ZERR + * Copyright (c) 2018, 2023 Angelo ZERR * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -27,12 +27,12 @@ import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; import org.eclipse.lemminx.services.extensions.XMLExtensionsRegistry; import org.eclipse.lemminx.services.extensions.diagnostics.DiagnosticsResult; -import org.eclipse.lemminx.services.format.TextEditUtils; import org.eclipse.lemminx.settings.SharedSettings; import org.eclipse.lemminx.settings.XMLCodeLensSettings; import org.eclipse.lemminx.settings.XMLCompletionSettings; import org.eclipse.lemminx.settings.XMLFoldingSettings; import org.eclipse.lemminx.settings.XMLSymbolSettings; +import org.eclipse.lemminx.utils.TextEditUtils; import org.eclipse.lemminx.utils.XMLPositionUtility; import org.eclipse.lsp4j.CodeAction; import org.eclipse.lsp4j.CodeActionContext; diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLRename.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLRename.java index 8b0187796..11078714d 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLRename.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLRename.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2019 Red Hat Inc. and others. +* Copyright (c) 2019, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -11,6 +11,7 @@ *******************************************************************************/ package org.eclipse.lemminx.services; +import static org.eclipse.lemminx.utils.TextEditUtils.mergeOrAddTextEdits; import static org.eclipse.lemminx.utils.XMLPositionUtility.covers; import static org.eclipse.lemminx.utils.XMLPositionUtility.doesTagCoverPosition; import static org.eclipse.lemminx.utils.XMLPositionUtility.getTagNameRange; @@ -21,6 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.CancellationException; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,16 +40,20 @@ import org.eclipse.lemminx.services.extensions.XMLExtensionsRegistry; import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.ResourceOperation; +import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.TextEdit; +import org.eclipse.lsp4j.VersionedTextDocumentIdentifier; import org.eclipse.lsp4j.WorkspaceEdit; import org.eclipse.lsp4j.jsonrpc.CancelChecker; +import org.eclipse.lsp4j.jsonrpc.messages.Either; /** * Handle all rename requests * * Author: Nikolas Komonen - nkomonen@redhat.com */ -public class XMLRename { +class XMLRename { private static final Logger LOGGER = Logger.getLogger(XMLRename.class.getName()); @@ -76,14 +82,14 @@ public WorkspaceEdit doRename(DOMDocument xmlDocument, Position position, String if (node == null || (!node.isAttribute() && !node.isElement() && !node.isText()) || (node.isElement() && !((DOMElement) node).hasTagName())) { - return createWorkspaceEdit(xmlDocument.getDocumentURI(), Collections.emptyList()); + cancelChecker.checkCanceled(); + return createWorkspaceEdit(Collections.emptyList()); } - List textEdits = new ArrayList<>(); - + List> documentChanges = new ArrayList<>(); for (IRenameParticipant participant : extensionsRegistry.getRenameParticipants()) { try { - participant.doRename(renameRequest, textEdits, cancelChecker); + participant.doRename(renameRequest, documentChanges, cancelChecker); } catch (CancellationException e) { throw e; } catch (Exception e) { @@ -93,13 +99,13 @@ public WorkspaceEdit doRename(DOMDocument xmlDocument, Position position, String } } - textEdits.addAll(getRenameTextEdits(xmlDocument, node, position, newText)); + cancelChecker.checkCanceled(); + mergeOrAddTextEdits(xmlDocument, getRenameTextEdits(xmlDocument, node, position, newText), documentChanges); cancelChecker.checkCanceled(); - - return createWorkspaceEdit(xmlDocument.getDocumentURI(), textEdits); + return createWorkspaceEdit(documentChanges); } - + private List getRenameTextEdits(DOMDocument xmlDocument, DOMNode node, Position position, String newText) { if (node == null || node.isText()) { @@ -279,6 +285,10 @@ private List getXmlnsAttrRenameTextEdits(DOMDocument xmlDocument, DOME return Collections.emptyList(); } + private WorkspaceEdit createWorkspaceEdit(List> documentChanges) { + return new WorkspaceEdit(documentChanges); + } + private WorkspaceEdit createWorkspaceEdit(String documentURI, List textEdits) { Map> changes = new HashMap<>(); changes.put(documentURI, textEdits); diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/IRenameParticipant.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/IRenameParticipant.java index 78ada5407..58213b213 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/IRenameParticipant.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/IRenameParticipant.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2019 Red Hat Inc. and others. +* Copyright (c) 2019, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -15,7 +15,8 @@ import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.Range; -import org.eclipse.lsp4j.TextEdit; +import org.eclipse.lsp4j.ResourceOperation; +import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.jsonrpc.CancelChecker; import org.eclipse.lsp4j.jsonrpc.messages.Either; @@ -25,7 +26,22 @@ */ public interface IRenameParticipant { - void doRename(IRenameRequest request, List edits, CancelChecker cancelChecker); + /** + * Creates the list of document changes for the rename operation. + * + * @since 0.26 + * @param request A rename request + * @param documentChanges A list to collect either text document edits or rename operations + * @param cancelChecker Cancel checker + */ + void doRename(IRenameRequest request, List> documentChanges, CancelChecker cancelChecker); + /** + * Checks if rename operation can be executed for a given prepare rename request + * + * @param request A prepare rename request + * @param cancelChecker Cancel checker + * @return Either range or rename operation result of prepare rename operation + */ Either prepareRename(IPrepareRenameRequest request, CancelChecker cancelChecker); } \ No newline at end of file diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/format/XMLFormatterDocument.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/format/XMLFormatterDocument.java index 582c0312d..425a94b67 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/format/XMLFormatterDocument.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/format/XMLFormatterDocument.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2022 Red Hat Inc. and others. +* Copyright (c) 2022, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -35,6 +35,7 @@ import org.eclipse.lemminx.settings.SharedSettings; import org.eclipse.lemminx.settings.XMLFormattingOptions; import org.eclipse.lemminx.utils.StringUtils; +import org.eclipse.lemminx.utils.TextEditUtils; import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.TextEdit; diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/format/TextEditUtils.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/utils/TextEditUtils.java similarity index 72% rename from org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/format/TextEditUtils.java rename to org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/utils/TextEditUtils.java index 281c9c332..dd983691c 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/format/TextEditUtils.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/utils/TextEditUtils.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2022 Red Hat Inc. and others. +* Copyright (c) 2022, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -9,20 +9,26 @@ * Contributors: * Red Hat Inc. - initial API and implementation *******************************************************************************/ -package org.eclipse.lemminx.services.format; +package org.eclipse.lemminx.utils; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; import org.eclipse.lemminx.commons.BadLocationException; import org.eclipse.lemminx.commons.TextDocument; +import org.eclipse.lemminx.dom.DOMDocument; import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.ResourceOperation; +import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.TextEdit; +import org.eclipse.lsp4j.VersionedTextDocumentIdentifier; +import org.eclipse.lsp4j.jsonrpc.messages.Either; /** * Utilities for {@link TextEdit}. @@ -147,4 +153,36 @@ public static int adjustOffsetWithLeftWhitespaces(int leftLimit, int to, String return leftLimit; } + /** + * Merges the given text edits into an existing text document edits or creates and adds new + * text document edits for a given list of text edits. + * + * @param document XML Document being edited + * @param textEdits A list of Text edits to add or merge + * @param documentChanges Target list of either text document edits or rename operations + */ + public static void mergeOrAddTextEdits(DOMDocument document, List textEdits, + List> documentChanges) { + String documentURI = document.getDocumentURI(); + Optional change = documentChanges.stream().filter(Either::isLeft) + .filter(e -> documentURI.equals(e.getLeft().getTextDocument().getUri())) + .map(Either::getLeft).findFirst(); + if(change.isPresent()) { + TextDocumentEdit textDocumentEdit = change.get(); + List edits = new ArrayList<>(); + edits.addAll(textDocumentEdit.getEdits()); + textEdits.stream().forEach(te -> { + if (!edits.contains(te)) { + edits.add(te); + } + }); + textDocumentEdit.setEdits(edits); + } else { + VersionedTextDocumentIdentifier projectVersionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier( + documentURI, document.getTextDocument().getVersion()); + documentChanges.add(Either.forLeft(new TextDocumentEdit( + projectVersionedTextDocumentIdentifier, textEdits))); + } + } + } diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java index 473941fd4..c5398e81a 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java @@ -12,7 +12,7 @@ */ package org.eclipse.lemminx; -import static org.eclipse.lemminx.services.format.TextEditUtils.applyEdits; +import static org.eclipse.lemminx.utils.TextEditUtils.applyEdits; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertIterableEquals; @@ -28,6 +28,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.function.Consumer; @@ -56,7 +57,6 @@ import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lemminx.services.extensions.diagnostics.IXMLErrorCode; import org.eclipse.lemminx.services.extensions.save.AbstractSaveContext; -import org.eclipse.lemminx.services.format.TextEditUtils; import org.eclipse.lemminx.settings.SharedSettings; import org.eclipse.lemminx.settings.XMLCodeLensSettings; import org.eclipse.lemminx.settings.XMLSymbolSettings; @@ -310,7 +310,7 @@ public static void testCompletionApply(String value, CompletionItem completionIt if (completionItem.getAdditionalTextEdits() != null) { edits.addAll(completionItem.getAdditionalTextEdits()); } - String actual = TextEditUtils.applyEdits(document, edits); + String actual = applyEdits(document, edits); assertEquals(expected, actual); } @@ -1786,7 +1786,13 @@ public static void assertRename(XMLLanguageService languageService, String value } WorkspaceEdit workspaceEdit = languageService.doRename(document, position, newText, () -> { }); - List actualEdits = workspaceEdit.getChanges().get(fileURI); + final String uri = fileURI; + Optional documentChange = workspaceEdit.getDocumentChanges() + .stream().filter(Either::isLeft) + .filter(e -> uri.equals(e.getLeft().getTextDocument().getUri())) + .map(Either::getLeft).findFirst(); + List actualEdits = documentChange.isPresent() ? + documentChange.get().getEdits() : Collections.emptyList(); assertArrayEquals(expectedEdits.toArray(), actualEdits.toArray()); } @@ -1937,7 +1943,7 @@ public static void assertSurroundWith(String xml, SurroundWithKind kind, boolean snippetsSupported) .get(); - String actual = TextEditUtils.applyEdits(document, Arrays.asList(response.getStart(), response.getEnd())); + String actual = applyEdits(document, Arrays.asList(response.getStart(), response.getEnd())); assertEquals(expected, actual); } diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java index 0a8ee7c79..0c51e37f5 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java @@ -76,8 +76,10 @@ import org.eclipse.lsp4j.MarkupContent; import org.eclipse.lsp4j.PrepareRenameResult; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.ResourceOperation; import org.eclipse.lsp4j.SymbolInformation; import org.eclipse.lsp4j.SymbolKind; +import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.TextEdit; import org.eclipse.lsp4j.jsonrpc.CancelChecker; import org.eclipse.lsp4j.jsonrpc.messages.Either; @@ -302,7 +304,7 @@ public Either prepareRename(IPrepareRenameRequest re } @Override - public void doRename(IRenameRequest request, List locations, CancelChecker cancelChecker) { + public void doRename(IRenameRequest request, List> documentChanges, CancelChecker cancelChecker) { throw new RuntimeException("This participant is broken"); } }); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/LeftWhitespacesOffsetTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/LeftWhitespacesOffsetTest.java index 845241518..5567c5254 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/LeftWhitespacesOffsetTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/LeftWhitespacesOffsetTest.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2022 Red Hat Inc. and others. +* Copyright (c) 2022, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -14,6 +14,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import org.eclipse.lemminx.AbstractCacheBasedTest; +import org.eclipse.lemminx.utils.TextEditUtils; import org.junit.jupiter.api.Test; /** diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/TextEditUtilsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/TextEditUtilsTest.java index 2092c916b..2557ca5fb 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/TextEditUtilsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/format/TextEditUtilsTest.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2022 Red Hat Inc. and others. +* Copyright (c) 2022, 2023 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v20.html @@ -18,6 +18,7 @@ import org.eclipse.lemminx.AbstractCacheBasedTest; import org.eclipse.lemminx.commons.TextDocument; +import org.eclipse.lemminx.utils.TextEditUtils; import org.eclipse.lsp4j.TextEdit; import org.junit.jupiter.api.Test;