diff --git a/build_resolvers/CHANGELOG.md b/build_resolvers/CHANGELOG.md index 236758f3e..fa4c12f71 100644 --- a/build_resolvers/CHANGELOG.md +++ b/build_resolvers/CHANGELOG.md @@ -1,6 +1,7 @@ -## 2.0.7-dev +## 2.0.7 - Updated error messages to use `dart pub` instead of `pub`. +- Add performance tracking stages to all the per-action resolver calls. ## 2.0.6 diff --git a/build_resolvers/lib/src/resolver.dart b/build_resolvers/lib/src/resolver.dart index 099bf5320..2f26ddf0f 100644 --- a/build_resolvers/lib/src/resolver.dart +++ b/build_resolvers/lib/src/resolver.dart @@ -79,40 +79,50 @@ class PerActionResolver implements ReleasableResolver { } @override - Future findLibraryByName(String libraryName) async { - await for (final library in libraries) { - if (library.name == libraryName) return library; - } - return null; - } + Future findLibraryByName(String libraryName) => + _step.trackStage('findLibraryByName $libraryName', () async { + await for (final library in libraries) { + if (library.name == libraryName) return library; + } + return null; + }); @override - Future isLibrary(AssetId assetId) async { - if (!await _step.canRead(assetId)) return false; - await _resolveIfNecessary(assetId, transitive: false); - return _delegate.isLibrary(assetId); - } + Future isLibrary(AssetId assetId) => + _step.trackStage('isLibrary $assetId', () async { + if (!await _step.canRead(assetId)) return false; + await _resolveIfNecessary(assetId, transitive: false); + return _delegate.isLibrary(assetId); + }); @override Future astNodeFor(Element element, {bool resolve = false}) => - _delegate.astNodeFor(element, resolve: resolve); + _step.trackStage('astNodeFor $element', + () => _delegate.astNodeFor(element, resolve: resolve)); @override Future compilationUnitFor(AssetId assetId, - {bool allowSyntaxErrors = false}) async { - if (!await _step.canRead(assetId)) throw AssetNotFoundException(assetId); - await _resolveIfNecessary(assetId, transitive: false); - return _delegate.compilationUnitFor(assetId, - allowSyntaxErrors: allowSyntaxErrors); - } + {bool allowSyntaxErrors = false}) => + _step.trackStage('compilationUnitFor $assetId', () async { + if (!await _step.canRead(assetId)) { + throw AssetNotFoundException(assetId); + } + await _resolveIfNecessary(assetId, transitive: false); + return _delegate.compilationUnitFor(assetId, + allowSyntaxErrors: allowSyntaxErrors); + }); @override Future libraryFor(AssetId assetId, - {bool allowSyntaxErrors = false}) async { - if (!await _step.canRead(assetId)) throw AssetNotFoundException(assetId); - await _resolveIfNecessary(assetId, transitive: true); - return _delegate.libraryFor(assetId, allowSyntaxErrors: allowSyntaxErrors); - } + {bool allowSyntaxErrors = false}) => + _step.trackStage('libraryFor $assetId', () async { + if (!await _step.canRead(assetId)) { + throw AssetNotFoundException(assetId); + } + await _resolveIfNecessary(assetId, transitive: true); + return _delegate.libraryFor(assetId, + allowSyntaxErrors: allowSyntaxErrors); + }); // Ensures that we finish resolving one thing before attempting to resolve // another, otherwise there are race conditions with `_entryPoints` being @@ -126,9 +136,11 @@ class PerActionResolver implements ReleasableResolver { // the resolver will only visit assets that haven't been resolved in this // step yet - await _delegate._uriResolver.performResolve( - _step, [id], _delegate._driver, - transitive: transitive); + await _step.trackStage( + 'Resolving library $id', + () => _delegate._uriResolver.performResolve( + _step, [id], _delegate._driver, + transitive: transitive)); } }); diff --git a/build_resolvers/pubspec.yaml b/build_resolvers/pubspec.yaml index c3e03ebc3..8c42207a2 100644 --- a/build_resolvers/pubspec.yaml +++ b/build_resolvers/pubspec.yaml @@ -1,5 +1,5 @@ name: build_resolvers -version: 2.0.7-dev +version: 2.0.7 description: Resolve Dart code in a Builder repository: https://github.com/dart-lang/build/tree/master/build_resolvers