Skip to content

Commit 95804ee

Browse files
committed
clear file caches if import is deleted/moved
1 parent 92b4bad commit 95804ee

File tree

2 files changed

+43
-30
lines changed

2 files changed

+43
-30
lines changed

robotcode/language_server/robotframework/diagnostics/imports_manager.py

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -626,16 +626,19 @@ async def did_change_watched_files(self, sender: Any, changes: List[FileEvent])
626626

627627
def __remove_library_entry(self, entry_key: _LibrariesEntryKey, entry: _LibrariesEntry, now: bool = False) -> None:
628628
async def remove(k: _LibrariesEntryKey, e: _LibrariesEntry) -> None:
629-
if len(e.references) == 0 or now:
630-
self._logger.debug(lambda: f"Remove Library Entry {k}")
631-
async with self._libaries_lock:
632-
if len(e.references) == 0:
633-
e1 = self._libaries.get(k, None)
634-
if e1 == e:
635-
self._libaries.pop(k, None)
636-
637-
await e.invalidate()
638-
self._logger.debug(lambda: f"Library Entry {k} removed")
629+
try:
630+
if len(e.references) == 0 or now:
631+
self._logger.debug(lambda: f"Remove Library Entry {k}")
632+
async with self._libaries_lock:
633+
if len(e.references) == 0:
634+
e1 = self._libaries.get(k, None)
635+
if e1 == e:
636+
self._libaries.pop(k, None)
637+
638+
await e.invalidate()
639+
self._logger.debug(lambda: f"Library Entry {k} removed")
640+
finally:
641+
await self._library_files_cache.clear()
639642

640643
try:
641644
if asyncio.get_running_loop():
@@ -645,37 +648,44 @@ async def remove(k: _LibrariesEntryKey, e: _LibrariesEntry) -> None:
645648

646649
def __remove_resource_entry(self, entry_key: _ResourcesEntryKey, entry: _ResourcesEntry, now: bool = False) -> None:
647650
async def remove(k: _ResourcesEntryKey, e: _ResourcesEntry) -> None:
648-
if len(e.references) == 0 or now:
649-
self._logger.debug(lambda: f"Remove Resource Entry {k}")
650-
async with self._resources_lock:
651-
if len(e.references) == 0:
652-
e1 = self._resources.get(k, None)
653-
if e1 == e:
654-
self._resources.pop(k, None)
655-
656-
await e.invalidate()
657-
self._logger.debug(lambda: f"Resource Entry {k} removed")
651+
try:
652+
if len(e.references) == 0 or now:
653+
self._logger.debug(lambda: f"Remove Resource Entry {k}")
654+
async with self._resources_lock:
655+
if len(e.references) == 0 or now:
656+
e1 = self._resources.get(k, None)
657+
if e1 == e:
658+
self._resources.pop(k, None)
659+
660+
await e.invalidate()
661+
self._logger.debug(lambda: f"Resource Entry {k} removed")
662+
finally:
663+
await self._resource_files_cache.clear()
658664

659665
try:
660666
if asyncio.get_running_loop():
661667
create_sub_task(remove(entry_key, entry))
668+
662669
except RuntimeError:
663670
pass
664671

665672
def __remove_variables_entry(
666673
self, entry_key: _VariablesEntryKey, entry: _VariablesEntry, now: bool = False
667674
) -> None:
668675
async def remove(k: _VariablesEntryKey, e: _VariablesEntry) -> None:
669-
if len(e.references) == 0 or now:
670-
self._logger.debug(lambda: f"Remove Variables Entry {k}")
671-
async with self._variables_lock:
672-
if len(e.references) == 0:
673-
e1 = self._variables.get(k, None)
674-
if e1 == e:
675-
self._variables.pop(k, None)
676-
677-
await e.invalidate()
678-
self._logger.debug(lambda: f"Variables Entry {k} removed")
676+
try:
677+
if len(e.references) == 0 or now:
678+
self._logger.debug(lambda: f"Remove Variables Entry {k}")
679+
async with self._variables_lock:
680+
if len(e.references) == 0:
681+
e1 = self._variables.get(k, None)
682+
if e1 == e:
683+
self._variables.pop(k, None)
684+
685+
await e.invalidate()
686+
self._logger.debug(lambda: f"Variables Entry {k} removed")
687+
finally:
688+
await self._variables_files_cache.clear()
679689

680690
try:
681691
if asyncio.get_running_loop():

robotcode/language_server/robotframework/parts/robot_workspace.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ async def _load_workspace_documents(self, sender: Any) -> List[WorkspaceDocument
9090
current=i,
9191
)
9292

93+
if not f.exists():
94+
continue
95+
9396
document = await self.parent.documents.get_or_open_document(f, "robotframework")
9497

9598
if not document.opened_in_editor:

0 commit comments

Comments
 (0)