OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library analyzer.src.context.context_builder; | 5 library analyzer.src.context.context_builder; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 import 'dart:core'; | 8 import 'dart:core'; |
9 | 9 |
10 import 'package:analyzer/context/declared_variables.dart'; | 10 import 'package:analyzer/context/declared_variables.dart'; |
11 import 'package:analyzer/file_system/file_system.dart'; | 11 import 'package:analyzer/file_system/file_system.dart'; |
12 import 'package:analyzer/plugin/options.dart'; | 12 import 'package:analyzer/plugin/options.dart'; |
13 import 'package:analyzer/plugin/resolver_provider.dart'; | 13 import 'package:analyzer/plugin/resolver_provider.dart'; |
14 import 'package:analyzer/source/analysis_options_provider.dart'; | 14 import 'package:analyzer/source/analysis_options_provider.dart'; |
15 import 'package:analyzer/source/package_map_resolver.dart'; | 15 import 'package:analyzer/source/package_map_resolver.dart'; |
16 import 'package:analyzer/src/dart/sdk/sdk.dart'; | 16 import 'package:analyzer/src/dart/sdk/sdk.dart'; |
17 import 'package:analyzer/src/generated/engine.dart'; | 17 import 'package:analyzer/src/generated/engine.dart'; |
18 import 'package:analyzer/src/generated/sdk.dart'; | 18 import 'package:analyzer/src/generated/sdk.dart'; |
19 import 'package:analyzer/src/generated/source.dart'; | 19 import 'package:analyzer/src/generated/source.dart'; |
| 20 import 'package:analyzer/src/summary/package_bundle_reader.dart'; |
| 21 import 'package:analyzer/src/summary/pub_summary.dart'; |
20 import 'package:analyzer/src/task/options.dart'; | 22 import 'package:analyzer/src/task/options.dart'; |
21 import 'package:package_config/packages.dart'; | 23 import 'package:package_config/packages.dart'; |
22 import 'package:package_config/packages_file.dart'; | 24 import 'package:package_config/packages_file.dart'; |
23 import 'package:package_config/src/packages_impl.dart'; | 25 import 'package:package_config/src/packages_impl.dart'; |
24 import 'package:path/src/context.dart'; | 26 import 'package:path/src/context.dart'; |
25 import 'package:yaml/yaml.dart'; | 27 import 'package:yaml/yaml.dart'; |
26 | 28 |
27 /** | 29 /** |
28 * A utility class used to build an analysis context for a given directory. | 30 * A utility class used to build an analysis context for a given directory. |
29 * | 31 * |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 */ | 106 */ |
105 AnalysisOptions defaultOptions; | 107 AnalysisOptions defaultOptions; |
106 | 108 |
107 /** | 109 /** |
108 * A table mapping variable names to values for the declared variables, or | 110 * A table mapping variable names to values for the declared variables, or |
109 * `null` if no additional variables should be declared. | 111 * `null` if no additional variables should be declared. |
110 */ | 112 */ |
111 Map<String, String> declaredVariables; | 113 Map<String, String> declaredVariables; |
112 | 114 |
113 /** | 115 /** |
| 116 * The manager of pub package summaries. |
| 117 */ |
| 118 PubSummaryManager pubSummaryManager; |
| 119 |
| 120 /** |
114 * Initialize a newly created builder to be ready to build a context rooted in | 121 * Initialize a newly created builder to be ready to build a context rooted in |
115 * the directory with the given [rootDirectoryPath]. | 122 * the directory with the given [rootDirectoryPath]. |
116 */ | 123 */ |
117 ContextBuilder(this.resourceProvider, this.sdkManager, this.contentCache); | 124 ContextBuilder(this.resourceProvider, this.sdkManager, this.contentCache); |
118 | 125 |
119 /** | 126 /** |
120 * Return an analysis context that is configured correctly to analyze code in | 127 * Return an analysis context that is configured correctly to analyze code in |
121 * the directory with the given [path]. | 128 * the directory with the given [path]. |
122 * | 129 * |
123 * *Note:* This method is not yet fully implemented and should not be used. | 130 * *Note:* This method is not yet fully implemented and should not be used. |
124 */ | 131 */ |
125 AnalysisContext buildContext(String path) { | 132 AnalysisContext buildContext(String path) { |
126 InternalAnalysisContext context = | 133 InternalAnalysisContext context = |
127 AnalysisEngine.instance.createAnalysisContext(); | 134 AnalysisEngine.instance.createAnalysisContext(); |
128 AnalysisOptions options = getAnalysisOptions(context, path); | 135 AnalysisOptions options = getAnalysisOptions(context, path); |
129 context.contentCache = contentCache; | 136 context.contentCache = contentCache; |
130 context.sourceFactory = createSourceFactory(path, options); | 137 context.sourceFactory = createSourceFactory(path, options); |
131 context.analysisOptions = options; | 138 context.analysisOptions = options; |
132 context.name = path; | 139 context.name = path; |
133 //_processAnalysisOptions(context, optionMap); | 140 //_processAnalysisOptions(context, optionMap); |
134 declareVariables(context); | 141 declareVariables(context); |
| 142 configureSummaries(context); |
135 return context; | 143 return context; |
136 } | 144 } |
137 | 145 |
| 146 /** |
| 147 * Configure the context to make use of summaries. |
| 148 */ |
| 149 void configureSummaries(InternalAnalysisContext context) { |
| 150 if (pubSummaryManager != null) { |
| 151 List<LinkedPubPackage> linkedBundles = |
| 152 pubSummaryManager.getLinkedBundles(context); |
| 153 if (linkedBundles.isNotEmpty) { |
| 154 SummaryDataStore store = new SummaryDataStore([]); |
| 155 for (LinkedPubPackage package in linkedBundles) { |
| 156 store.addBundle(null, package.unlinked); |
| 157 store.addBundle(null, package.linked); |
| 158 } |
| 159 context.resultProvider = |
| 160 new InputPackagesResultProvider(context, store); |
| 161 } |
| 162 } |
| 163 } |
| 164 |
138 Map<String, List<Folder>> convertPackagesToMap(Packages packages) { | 165 Map<String, List<Folder>> convertPackagesToMap(Packages packages) { |
139 Map<String, List<Folder>> folderMap = new HashMap<String, List<Folder>>(); | 166 Map<String, List<Folder>> folderMap = new HashMap<String, List<Folder>>(); |
140 if (packages != null && packages != Packages.noPackages) { | 167 if (packages != null && packages != Packages.noPackages) { |
141 packages.asMap().forEach((String packageName, Uri uri) { | 168 packages.asMap().forEach((String packageName, Uri uri) { |
142 String path = resourceProvider.pathContext.fromUri(uri); | 169 String path = resourceProvider.pathContext.fromUri(uri); |
143 folderMap[packageName] = [resourceProvider.getFolder(path)]; | 170 folderMap[packageName] = [resourceProvider.getFolder(path)]; |
144 }); | 171 }); |
145 } | 172 } |
146 return folderMap; | 173 return folderMap; |
147 } | 174 } |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 String _readEmbedderYaml(Folder libDir) { | 591 String _readEmbedderYaml(Folder libDir) { |
565 File file = libDir.getChild(EMBEDDER_FILE_NAME); | 592 File file = libDir.getChild(EMBEDDER_FILE_NAME); |
566 try { | 593 try { |
567 return file.readAsStringSync(); | 594 return file.readAsStringSync(); |
568 } on FileSystemException { | 595 } on FileSystemException { |
569 // File can't be read. | 596 // File can't be read. |
570 return null; | 597 return null; |
571 } | 598 } |
572 } | 599 } |
573 } | 600 } |
OLD | NEW |