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

Unified Diff: pkg/front_end/lib/src/incremental_resolved_ast_generator_impl.dart

Issue 2642083003: Add initial support for parts to the incremental kernel generator. (Closed)
Patch Set: Created 3 years, 11 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_resolved_ast_generator_impl.dart
diff --git a/pkg/front_end/lib/src/incremental_resolved_ast_generator_impl.dart b/pkg/front_end/lib/src/incremental_resolved_ast_generator_impl.dart
index 56050d51576561c0063ffa2b8206aca7c2a65f6f..0776d802ab59214044ac37e9762c3bfdf9190831 100644
--- a/pkg/front_end/lib/src/incremental_resolved_ast_generator_impl.dart
+++ b/pkg/front_end/lib/src/incremental_resolved_ast_generator_impl.dart
@@ -4,6 +4,7 @@
import 'dart:async';
+import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/context/context.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
@@ -73,15 +74,34 @@ class IncrementalResolvedAstGeneratorImpl
// the data from the summary. TODO(paulberry): fix this.
_fileRepository.store(Uri.parse('dart:core'), '');
for (var libraryCycle in graph.topologicallySortedCycles) {
- for (var uri in libraryCycle.libraries.keys) {
- var contents =
- await _options.fileSystem.entityForUri(uri).readAsString();
- _fileRepository.store(uri, contents);
+ for (var libraryUri in libraryCycle.libraries.keys) {
+ var libraryNode = libraryCycle.libraries[libraryUri];
+ var libraryContents =
+ await _options.fileSystem.entityForUri(libraryUri).readAsString();
+ _fileRepository.store(libraryUri, libraryContents);
+ for (var partUri in libraryNode.parts) {
+ var partContents =
+ await _options.fileSystem.entityForUri(partUri).readAsString();
+ _fileRepository.store(partUri, partContents);
+ }
}
- for (var uri in libraryCycle.libraries.keys) {
- var result = await _driver.getResult(_fileRepository.pathForUri(uri));
+ for (var libraryUri in libraryCycle.libraries.keys) {
+ var libraryNode = libraryCycle.libraries[libraryUri];
+ var result = await _driver.getResult(_fileRepository.pathForUri(libraryUri));
// TODO(paulberry): handle errors.
- libraries[uri] = new ResolvedLibrary(result.unit);
+ var definingCompilationUnit = result.unit;
+ var partUnits = <Uri, CompilationUnit>{};
+ for (var partUri in libraryNode.parts) {
+ // Really we ought to have a driver API that lets us request a
+ // specific part of a given library. Otherwise we will run into
+ // problems if a part is included in multiple libraries.
+ // TODO(paulberry): address this.
+ var partResult = await _driver.getResult(_fileRepository.pathForUri(partUri));
+ // TODO(paulberry): handle errors.
+ partUnits[partUri] = partResult.unit;
+ }
+ libraries[libraryUri] =
+ new ResolvedLibrary(definingCompilationUnit, partUnits);
}
}
_driver.addFile(_fileRepository.pathForUri(_source));
@@ -246,7 +266,9 @@ class _SourceFactoryProxy implements SourceFactory {
Source resolveUri(Source containingSource, String containedUri) {
// TODO(paulberry): re-use code from dependency_grapher_impl, and support
// SDK URI resolution logic.
- var absoluteUri = containingSource.uri.resolve(containedUri);
+ var absoluteUri = containingSource == null
danrubel 2017/01/19 20:06:39 Is absoluteUri dynamic? IOW, will absoluteUri be a
Paul Berry 2017/01/19 20:29:46 Whoops, thanks for catching this. I took your sug
+ ? containedUri
+ : containingSource.uri.resolve(containedUri);
return forUri(absoluteUri.toString());
}

Powered by Google App Engine
This is Rietveld 408576698