Version 2.16.0-29.0.dev

Merge commit 'ace61705720cf076b56d69d92e27c9d30c525d2a' into 'dev'
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index d9a4742..2aa64b4 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -4,6 +4,7 @@
 * Deprecated `path` and `uri` from `AnalysisResult`.
 * Deprecated `UriResolver.restoreAbsolute`, use `pathToUri` instead.
 * Deprecated `SourceFactory.restoreAbsolute`, use `pathToUri` instead.
+* Fixed #47715.
 
 ## 2.7.0
 * Updated `ConstructorElement.displayName` to either `Class` or `Class.constructor`.
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 686137d..ca52c6f 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -1293,6 +1293,7 @@
       return;
     }
     if (file_paths.isDart(resourceProvider.pathContext, path)) {
+      _lastProducedSignatures.remove(path);
       _priorityResults.clear();
       _removePotentiallyAffectedLibraries(path);
       _fileTracker.removeFile(path);
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index b04f7f3..252bab2 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -2922,6 +2922,24 @@
     expect(result.unit, isNotNull);
   }
 
+  test_removeFile_addFile_results() async {
+    var a = convertPath('/test/lib/a.dart');
+    newFile(a, content: 'class A {}');
+
+    driver.addFile(a);
+
+    await waitForIdleWithoutExceptions();
+    expect(allResults.map((e) => e.path).toSet(), {a});
+    allResults.clear();
+
+    driver.removeFile(a);
+    driver.addFile(a);
+
+    // a.dart should be produced again
+    await waitForIdleWithoutExceptions();
+    expect(allResults.map((e) => e.path).toSet(), {a});
+  }
+
   test_removeFile_changeFile_implicitlyAnalyzed() async {
     var a = convertPath('/test/lib/a.dart');
     var b = convertPath('/test/lib/b.dart');
diff --git a/tools/VERSION b/tools/VERSION
index 6de95d5..81577f0 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 16
 PATCH 0
-PRERELEASE 28
+PRERELEASE 29
 PRERELEASE_PATCH 0
\ No newline at end of file