Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(981)

Unified Diff: pkg/front_end/lib/src/incremental/file_state.dart

Issue 2931183003: Implement promised watch behaviour for used == true. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/front_end/lib/src/incremental/file_state.dart
diff --git a/pkg/front_end/lib/src/incremental/file_state.dart b/pkg/front_end/lib/src/incremental/file_state.dart
index 89235ff2f0f60a7cf3fa7edc0ef887375edfb703..fd463b381f8a32aae8e7eafd93aedd44549acb58 100644
--- a/pkg/front_end/lib/src/incremental/file_state.dart
+++ b/pkg/front_end/lib/src/incremental/file_state.dart
@@ -21,6 +21,10 @@ import 'package:front_end/src/fasta/source/directive_listener.dart';
import 'package:front_end/src/fasta/translate_uri.dart';
import 'package:kernel/target/vm.dart';
+/// This function is called for each newly discovered file, and the returned
+/// [Future] is awaited before reading the file content.
+typedef Future<Null> NewFileFn(Uri uri);
+
/// Information about a file being compiled, explicitly or implicitly.
///
/// It provides a consistent view on its properties.
@@ -279,6 +283,7 @@ class FileSystemState {
final FileSystem fileSystem;
final TranslateUri uriTranslator;
final List<int> _salt;
+ final NewFileFn _newFileFn;
_FileSystemView _fileSystemView;
@@ -290,7 +295,8 @@ class FileSystemState {
/// contain `file:*` URIs as keys.
final Map<Uri, FileState> _fileUriToFile = {};
- FileSystemState(this.fileSystem, this.uriTranslator, this._salt);
+ FileSystemState(
+ this.fileSystem, this.uriTranslator, this._salt, this._newFileFn);
/// Return the [FileSystem] that is backed by this [FileSystemState]. The
/// files in this [FileSystem] always have the same content as the
@@ -323,6 +329,11 @@ class FileSystemState {
_uriToFile[absoluteUri] = file;
_fileUriToFile[fileUri] = file;
+ // Notify the function about a new file.
+ if (_newFileFn != null) {
+ await _newFileFn(fileUri);
+ }
+
// Build the sub-graph of the file.
await file.refresh();
}

Powered by Google App Engine
This is Rietveld 408576698