mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:58:29 +00:00
Fix library name insert and access inconsistency on windows
Make naming of libraries on windows consistent with the behaivor on linux and mac. Fixes #27576 R=vsm@google.com Review URL: https://codereview.chromium.org/2415653002 .
This commit is contained in:
parent
dc53ea46bc
commit
d8505ee264
|
@ -31,7 +31,7 @@ import 'package:analyzer/src/summary/summarize_elements.dart'
|
|||
import 'package:analyzer/src/summary/summary_sdk.dart';
|
||||
import 'package:analyzer/src/task/strong/ast_properties.dart'
|
||||
show isDynamicInvoke, setIsDynamicInvoke, getImplicitAssignmentCast;
|
||||
import 'package:path/path.dart' show separator;
|
||||
import 'package:path/path.dart' show separator, isWithin, fromUri;
|
||||
|
||||
import '../closure/closure_annotator.dart' show ClosureAnnotator;
|
||||
import '../js_ast/js_ast.dart' as JS;
|
||||
|
@ -5452,16 +5452,16 @@ String jsLibraryName(String libraryRoot, LibraryElement library) {
|
|||
return uri.path;
|
||||
}
|
||||
// TODO(vsm): This is not necessarily unique if '__' appears in a file name.
|
||||
var separator = '__';
|
||||
var customSeparator = '__';
|
||||
String qualifiedPath;
|
||||
if (uri.scheme == 'package') {
|
||||
// Strip the package name.
|
||||
// TODO(vsm): This is not unique if an escaped '/'appears in a filename.
|
||||
// E.g., "foo/bar.dart" and "foo$47bar.dart" would collide.
|
||||
qualifiedPath = uri.pathSegments.skip(1).join(separator);
|
||||
} else if (uri.toFilePath().startsWith(libraryRoot)) {
|
||||
qualifiedPath = uri.pathSegments.skip(1).join(customSeparator);
|
||||
} else if (isWithin(libraryRoot, uri.toFilePath())) {
|
||||
qualifiedPath =
|
||||
uri.path.substring(libraryRoot.length).replaceAll('/', separator);
|
||||
fromUri(uri).substring(libraryRoot.length).replaceAll(separator, customSeparator);
|
||||
} else {
|
||||
// We don't have a unique name.
|
||||
throw 'Invalid library root. $libraryRoot does not contain ${uri
|
||||
|
|
Loading…
Reference in a new issue