@@ -88,20 +88,25 @@ public function restore(array $allAnalysedFiles, bool $debug): ResultCache
8888 }
8989
9090 $ invertedDependencies = $ data ['dependencies ' ];
91+ $ deletedFiles = array_fill_keys (array_keys ($ invertedDependencies ), true );
9192 $ filesToAnalyse = [];
9293 $ invertedDependenciesToReturn = [];
9394 $ errors = $ data ['errors ' ];
9495 $ filteredErrors = [];
96+ $ newFileAppeared = false ;
9597 foreach ($ allAnalysedFiles as $ analysedFile ) {
9698 if (array_key_exists ($ analysedFile , $ errors )) {
9799 $ filteredErrors [$ analysedFile ] = $ errors [$ analysedFile ];
98100 }
99101 if (!array_key_exists ($ analysedFile , $ invertedDependencies )) {
100102 // new file
101103 $ filesToAnalyse [] = $ analysedFile ;
104+ $ newFileAppeared = true ;
102105 continue ;
103106 }
104107
108+ unset($ deletedFiles [$ analysedFile ]);
109+
105110 $ analysedFileData = $ invertedDependencies [$ analysedFile ];
106111 $ cachedModifiedTime = $ analysedFileData ['modifiedTime ' ];
107112 $ dependentFiles = $ analysedFileData ['dependentFiles ' ];
@@ -124,6 +129,27 @@ public function restore(array $allAnalysedFiles, bool $debug): ResultCache
124129 }
125130 }
126131
132+ foreach (array_keys ($ deletedFiles ) as $ deletedFile ) {
133+ if (!array_key_exists ($ deletedFile , $ invertedDependencies )) {
134+ continue ;
135+ }
136+
137+ $ deletedFileData = $ invertedDependencies [$ deletedFile ];
138+ $ dependentFiles = $ deletedFileData ['dependentFiles ' ];
139+ foreach ($ dependentFiles as $ dependentFile ) {
140+ if (!is_file ($ dependentFile )) {
141+ continue ;
142+ }
143+ $ filesToAnalyse [] = $ dependentFile ;
144+ }
145+ }
146+
147+ if ($ newFileAppeared ) {
148+ foreach (array_keys ($ filteredErrors ) as $ fileWithError ) {
149+ $ filesToAnalyse [] = $ fileWithError ;
150+ }
151+ }
152+
127153 return new ResultCache (array_unique ($ filesToAnalyse ), false , $ data ['lastFullAnalysisTime ' ], $ filteredErrors , $ invertedDependenciesToReturn );
128154 }
129155
0 commit comments