@@ -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