| Index: lib/transformer.dart
|
| diff --git a/lib/transformer.dart b/lib/transformer.dart
|
| index 392d3228a14fd429a86df1a884cce6a99f72d551..8036761a0657b039dd8eb3d02d201358fb2ec54a 100644
|
| --- a/lib/transformer.dart
|
| +++ b/lib/transformer.dart
|
| @@ -242,9 +242,10 @@ class _BootstrapFileBuilder {
|
| var initializersBuffer = new StringBuffer();
|
| var libraryPrefixes = new Map<LibraryElement, String>();
|
|
|
| - // Import the static_loader and original entry point.
|
| + // Import the static_loader, initializer, and original entry point.
|
| importsBuffer
|
| .writeln("import 'package:initialize/src/static_loader.dart';");
|
| + importsBuffer.writeln("import 'package:initialize/initialize.dart';");
|
| libraryPrefixes[entryLib] = 'i0';
|
|
|
| initializersBuffer.writeln(' initializers.addAll([');
|
| @@ -300,7 +301,27 @@ $initializersBuffer
|
| final metaPrefix = libraryPrefixes[annotationElement.library];
|
| var elementString;
|
| if (element is LibraryElement) {
|
| - elementString = '#${element.name}';
|
| + var segments = element.source.uri.pathSegments;
|
| + var package = segments[0];
|
| + var libraryPath;
|
| + var packageString;
|
| + if (_newEntryPoint.package == package &&
|
| + _newEntryPoint.path.startsWith('${segments[1]}/')) {
|
| + // reset `package` to null, we will do a relative path in this case.
|
| + packageString = 'null';
|
| + libraryPath = path.url.relative(
|
| + path.url.joinAll(segments.getRange(1, segments.length)),
|
| + from: path.url.dirname(path.url.join(_newEntryPoint.path)));
|
| + } else if (segments[1] == 'lib') {
|
| + packageString = "'$package'";
|
| + libraryPath = path.url.joinAll(segments.getRange(2, segments.length));
|
| + } else {
|
| + _logger.error('Unable to import `${element.source.uri.path}` from '
|
| + '${_newEntryPoint.path}.');
|
| + }
|
| +
|
| + elementString = "const LibraryIdentifier("
|
| + "#${element.name}, $packageString, '$libraryPath')";
|
| } else if (element is ClassElement || element is FunctionElement) {
|
| elementString =
|
| '${libraryPrefixes[data.element.library]}.${element.name}';
|
|
|