@@ -20,13 +20,16 @@ class MultiPackageResolver extends UriResolver {
20
20
21
21
@override
22
22
Source resolveAbsolute (Uri uri) {
23
- var path = _expandPath (uri);
24
- if (path == null ) return null ;
25
-
26
- var resolvedPath = _resolve (path);
27
- if (resolvedPath == null ) return null ;
28
-
29
- return new FileBasedSource .con2 (uri, new JavaFile (resolvedPath));
23
+ var candidates = _expandPath (uri);
24
+ if (candidates == null ) return null ;
25
+
26
+ for (var path in candidates) {
27
+ var resolvedPath = _resolve (path);
28
+ if (resolvedPath != null ) {
29
+ return new FileBasedSource .con2 (uri, new JavaFile (resolvedPath));
30
+ }
31
+ }
32
+ return null ;
30
33
}
31
34
32
35
/// Resolve [path] by looking at each prefix in [searchPaths] and returning
@@ -40,12 +43,12 @@ class MultiPackageResolver extends UriResolver {
40
43
}
41
44
42
45
/// Expand `uri.path` , replacing dots in the package name with slashes.
43
- String _expandPath (Uri uri) {
46
+ List < String > _expandPath (Uri uri) {
44
47
if (uri.scheme != 'package' ) return null ;
45
48
var path = uri.path;
46
49
var slashPos = path.indexOf ('/' );
47
50
var packagePath = path.substring (0 , slashPos).replaceAll ("." , "/" );
48
51
var filePath = path.substring (slashPos + 1 );
49
- return '${ packagePath } /lib/${ filePath }' ;
52
+ return [ '$ packagePath /lib/$filePath ' , '$ packagePath /$ filePath ' ] ;
50
53
}
51
54
}
0 commit comments