Skip to content

Commit 8db23aa

Browse files
authored
explicitly skip dart-ext: uris (#2046)
* explicitly skip dart-ext: uris * skip dart-ext imports during module creation
1 parent 92a564c commit 8db23aa

File tree

6 files changed

+23
-3
lines changed

6 files changed

+23
-3
lines changed

build_modules/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## 1.0.7
22

3+
- Explicitly skip dart-ext uris during module creation.
4+
- Filed Issue #2047 to track real support for native extensions.
35
- Run workers with mode `detachedWithStdio` if no terminal is connected.
46

57
## 1.0.6

build_modules/lib/src/module_library.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ class ModuleLibrary {
7878
if (directive is! UriBasedDirective) continue;
7979
var path = (directive as UriBasedDirective).uri.stringValue;
8080
var uri = Uri.parse(path);
81+
if (uri.isScheme('dart-ext')) {
82+
// TODO: What should we do for native extensions?
83+
continue;
84+
}
8185
if (uri.scheme == 'dart') {
8286
sdkDeps.add(uri.path);
8387
continue;

build_resolvers/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 1.0.3
2+
3+
- Fixes a bug where transitive `dart-ext:` imports would cause the resolver
4+
to fail. These uris will now be ignored.
5+
16
## 1.0.2
27

38
- Ensure that `BuildAssetUriResolver.restoreAbsolute` never returns null.

build_resolvers/lib/src/build_asset_uri_resolver.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import 'package:analyzer/src/generated/source.dart';
1313
import 'package:build/build.dart' show AssetId, BuildStep;
1414
import 'package:path/path.dart' as p;
1515

16+
const _ignoredSchemes = ['dart', 'dart-ext'];
17+
1618
class BuildAssetUriResolver extends UriResolver {
1719
final _cachedAssetDependencies = <AssetId, Set<AssetId>>{};
1820
final _cachedAssetContents = <AssetId, String>{};
@@ -48,7 +50,10 @@ class BuildAssetUriResolver extends UriResolver {
4850
var unit = parseDirectives(contents, suppressErrors: true);
4951
var dependencies = unit.directives
5052
.whereType<UriBasedDirective>()
51-
.where((d) => !Uri.parse(d.uri.stringValue).isScheme('dart'))
53+
.where((directive) {
54+
var uri = Uri.parse(directive.uri.stringValue);
55+
return !_ignoredSchemes.any(uri.isScheme);
56+
})
5257
.map((d) => AssetId.resolve(d.uri.stringValue, from: assetId))
5358
.where((id) => id != null)
5459
.toSet();
@@ -79,7 +84,7 @@ class BuildAssetUriResolver extends UriResolver {
7984
///
8085
/// Returns null if the Uri cannot be parsed or is not cached.
8186
AssetId lookupAsset(Uri uri) {
82-
if (uri.isScheme('dart')) return null;
87+
if (_ignoredSchemes.any(uri.isScheme)) return null;
8388
if (uri.isScheme('package') || uri.isScheme('asset')) {
8489
final assetId = AssetId.resolve('$uri');
8590
return _cachedAssetContents.containsKey(assetId) ? assetId : null;

build_resolvers/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: build_resolvers
2-
version: 1.0.2
2+
version: 1.0.3
33
description: Resolve Dart code in a Builder
44
author: Dart Team <[email protected]>
55
homepage: https://github.com/dart-lang/build/tree/master/build_resolvers

build_resolvers/test/resolver_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,11 @@ void main() {
103103
test('should resolve types and library uris', () {
104104
return resolveSources({
105105
'a|web/main.dart': '''
106+
// dart and dart-ext uris should be ignored
106107
import 'dart:core';
108+
import 'dart-ext:some-ext';
109+
110+
// package: and relative uris should be available
107111
import 'package:a/a.dart';
108112
import 'package:a/b.dart';
109113
import 'sub_dir/d.dart';

0 commit comments

Comments
 (0)