diff --git a/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php b/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php index 2e1bc2867aa..491f7cb5348 100644 --- a/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php @@ -361,7 +361,7 @@ private function clearCacheDirectoryIfConfigOrComposerLockfileChanged(): void } if ($this->file_reference_provider->cache) { - $this->file_reference_provider->cache->hasConfigChanged(); + $this->file_reference_provider->cache->setConfigHashCache(); } $this->project_cache_provider->updateComposerLockHash(); @@ -377,8 +377,10 @@ private function clearCacheDirectoryIfConfigOrComposerLockfileChanged(): void Config::removeCacheDirectory($cache_directory); } + $this->file_reference_provider->cache->setConfigHashCache(); + if ($this->project_cache_provider) { - $this->project_cache_provider->hasLockfileChanged(); + $this->project_cache_provider->updateComposerLockHash(); } } } diff --git a/src/Psalm/Internal/Provider/FileReferenceCacheProvider.php b/src/Psalm/Internal/Provider/FileReferenceCacheProvider.php index 1e0d3dc602b..818bac960f3 100644 --- a/src/Psalm/Internal/Provider/FileReferenceCacheProvider.php +++ b/src/Psalm/Internal/Provider/FileReferenceCacheProvider.php @@ -66,9 +66,7 @@ public function __construct(Config $config) public function hasConfigChanged(): bool { $new_hash = $this->config->computeHash(); - $has_changed = $new_hash !== $this->getConfigHashCache(); - $this->setConfigHashCache($new_hash); - return $has_changed; + return $new_hash !== $this->getConfigHashCache(); } /** @@ -998,7 +996,7 @@ public function getConfigHashCache() return false; } - public function setConfigHashCache(string $hash): void + public function setConfigHashCache(string $hash = ''): void { $cache_directory = Config::getInstance()->getCacheDirectory(); @@ -1006,6 +1004,10 @@ public function setConfigHashCache(string $hash): void return; } + if ($hash === '') { + $hash = $this->config->computeHash(); + } + if (!is_dir($cache_directory)) { try { if (mkdir($cache_directory, 0777, true) === false) {