Index: pkg/dev_compiler/lib/src/analyzer/context.dart |
diff --git a/pkg/dev_compiler/lib/src/analyzer/context.dart b/pkg/dev_compiler/lib/src/analyzer/context.dart |
index 188f9787624ef985c855d269d392cc837e6adad8..496ae800fdf03883953792226e605b00ed04798b 100644 |
--- a/pkg/dev_compiler/lib/src/analyzer/context.dart |
+++ b/pkg/dev_compiler/lib/src/analyzer/context.dart |
@@ -32,6 +32,8 @@ class AnalyzerOptions { |
/// List of summary file paths. |
final List<String> summaryPaths; |
+ final Map<String, String> customSummaryModules = {}; |
+ |
/// Path to the dart-sdk, or `null` if the path couldn't be determined. |
final String dartSdkPath; |
@@ -51,6 +53,7 @@ class AnalyzerOptions { |
: dartSdkPath = dartSdkPath ?? getSdkDir().path, |
summaryPaths = summaryPaths ?? const [] { |
contextBuilderOptions.declaredVariables ??= const {}; |
+ _parseCustomSummaryModules(); |
} |
factory AnalyzerOptions.basic( |
@@ -109,6 +112,24 @@ class AnalyzerOptions { |
} |
return mappings; |
} |
+ |
+ /// A summary path can contain ":" followed by an explicit module name to |
+ /// allow working with summaries whose physical location is outside of the |
+ /// module root directory. |
+ /// |
+ /// Removes any explicit module names from [summaryPaths] and populates with |
+ /// [customSummaryModules] with them. |
+ void _parseCustomSummaryModules() { |
+ for (var i = 0; i < summaryPaths.length; i++) { |
+ var summaryPath = summaryPaths[i]; |
+ var comma = summaryPath.indexOf(":"); |
+ if (comma != -1) { |
+ summaryPaths[i] = summaryPath.substring(0, comma); |
+ customSummaryModules[summaryPaths[i]] = |
+ summaryPath.substring(comma + 1); |
+ } |
+ } |
+ } |
} |
/// Creates a SourceFactory configured by the [options]. |