Skip to content

Commit 54e0d5f

Browse files
committed
Clear edits when an error occurs.
1 parent 102e5c7 commit 54e0d5f

1 file changed

Lines changed: 19 additions & 4 deletions

File tree

  • rascal-lsp/src/main/rascal/lsp/framework

rascal-lsp/src/main/rascal/lsp/framework/Rename.rsc

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,21 @@ RenameResult rename(
9393
list[Tree] cursor
9494
, str newName
9595
, RenameConfig config) {
96+
// get raw results
97+
result = _rename(cursor, newName, config);
98+
messages = result<1>;
99+
if (messages != {} && any(m <- messages, m is error)) {
100+
// in the case of an error, we make sure to clear the edits, since there is no guarantee what edits a partial rename computes
101+
return <[], messages>;
102+
}
103+
return <sortDocEdits(result<0>), messages>;
104+
}
105+
106+
// TODO: Merge modified behaviour w.r.t. errors to version in typepal as well
107+
private RenameResult _rename(
108+
list[Tree] cursor
109+
, str newName
110+
, RenameConfig config) {
96111
97112
/* Initially, we expect at least the following work
98113
- 1 unit of work to initialize the renaming
@@ -225,7 +240,7 @@ RenameResult rename(
225240
if (defs == {}) r.error(cursor[0].src, "No definitions found");
226241
if (errorReported()) {
227242
jobEnd(config.jobLabel, success=false);
228-
return <sortDocEdits(docEdits), getMessages()>;
243+
return <docEdits, getMessages()>;
229244
}
230245
231246
jobStep(config.jobLabel, "Looking for files with occurrences of name under cursor", work = WORKSPACE_WORK);
@@ -252,7 +267,7 @@ RenameResult rename(
252267
}
253268
if (errorReported()) {
254269
jobEnd(config.jobLabel, success = false);
255-
return <sortDocEdits(docEdits), getMessages()>;
270+
return <docEdits, getMessages()>;
256271
}
257272
258273
defFiles = {d.defined.top | d <- defs};
@@ -272,7 +287,7 @@ RenameResult rename(
272287
273288
if (errorReported()) {
274289
jobEnd(config.jobLabel, success=false);
275-
return <sortDocEdits(docEdits), getMessages()>;
290+
return <docEdits, getMessages()>;
276291
}
277292
278293
for (loc f <- maybeUseFiles) {
@@ -309,7 +324,7 @@ RenameResult rename(
309324
}
310325
311326
jobEnd(config.jobLabel, success = !errorReported());
312-
return <sortDocEdits(docEdits), convertedMessages>;
327+
return <docEdits, convertedMessages>;
313328
}
314329
315330
// Workaround to be able to pattern match on the emulated `src` field

0 commit comments

Comments
 (0)