Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1003)

Side by Side Diff: pkg/analyzer/lib/src/context/builder.dart

Issue 2163003002: Add a hook to ContextBuilder needed by server (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analyzer/test/src/context/builder_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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' hide Resource; 8 import 'dart:core' hide Resource;
9 import 'dart:io' as io; 9 import 'dart:io' as io;
10 10
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 */ 68 */
69 final ContentCache contentCache; 69 final ContentCache contentCache;
70 70
71 /** 71 /**
72 * The resolver provider used to create a package: URI resolver, or `null` if 72 * The resolver provider used to create a package: URI resolver, or `null` if
73 * the normal (Package Specification DEP) lookup mechanism is to be used. 73 * the normal (Package Specification DEP) lookup mechanism is to be used.
74 */ 74 */
75 ResolverProvider packageResolverProvider; 75 ResolverProvider packageResolverProvider;
76 76
77 /** 77 /**
78 * The resolver provider used to create a file: URI resolver, or `null` if
79 * the normal file URI resolver is to be used.
80 */
81 ResolverProvider fileResolverProvider;
82
83 /**
78 * The file path of the .packages file that should be used in place of any 84 * The file path of the .packages file that should be used in place of any
79 * file found using the normal (Package Specification DEP) lookup mechanism, 85 * file found using the normal (Package Specification DEP) lookup mechanism,
80 * or `null` if the normal lookup mechanism should be used. 86 * or `null` if the normal lookup mechanism should be used.
81 */ 87 */
82 String defaultPackageFilePath; 88 String defaultPackageFilePath;
83 89
84 /** 90 /**
85 * The file path of the packages directory that should be used in place of any 91 * The file path of the packages directory that should be used in place of any
86 * file found using the normal (Package Specification DEP) lookup mechanism, 92 * file found using the normal (Package Specification DEP) lookup mechanism,
87 * or `null` if the normal lookup mechanism should be used. 93 * or `null` if the normal lookup mechanism should be used.
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 return new MapPackages(map); 196 return new MapPackages(map);
191 } else if (defaultPackagesDirectoryPath != null) { 197 } else if (defaultPackagesDirectoryPath != null) {
192 return getPackagesDirectory( 198 return getPackagesDirectory(
193 new Uri.directory(defaultPackagesDirectoryPath)); 199 new Uri.directory(defaultPackagesDirectoryPath));
194 } 200 }
195 return findPackagesFromFile(new Uri.directory(rootDirectoryPath)); 201 return findPackagesFromFile(new Uri.directory(rootDirectoryPath));
196 } 202 }
197 203
198 SourceFactory createSourceFactory( 204 SourceFactory createSourceFactory(
199 String rootDirectoryPath, AnalysisOptions options) { 205 String rootDirectoryPath, AnalysisOptions options) {
206 Folder _folder = null;
207 Folder folder() {
208 return _folder ??= resourceProvider.getResource('.');
209 }
210 UriResolver fileResolver = fileResolverProvider == null
211 ? new ResourceUriResolver(resourceProvider)
212 : fileResolverProvider(folder());
200 if (packageResolverProvider != null) { 213 if (packageResolverProvider != null) {
201 Folder folder = resourceProvider.getResource('.'); 214 UriResolver packageResolver = packageResolverProvider(folder());
202 UriResolver resolver = packageResolverProvider(folder); 215 if (packageResolver != null) {
203 if (resolver != null) {
204 // TODO(brianwilkerson) This doesn't support either embedder files or 216 // TODO(brianwilkerson) This doesn't support either embedder files or
205 // sdk extensions because we don't have a way to get the package map 217 // sdk extensions because we don't have a way to get the package map
206 // from the resolver. 218 // from the resolver.
207 List<UriResolver> resolvers = <UriResolver>[ 219 List<UriResolver> resolvers = <UriResolver>[
208 new DartUriResolver(findSdk(null, options)), 220 new DartUriResolver(findSdk(null, options)),
209 resolver, 221 packageResolver,
210 new ResourceUriResolver(resourceProvider) 222 fileResolver
211 ]; 223 ];
212 return new SourceFactory(resolvers); 224 return new SourceFactory(resolvers);
213 } 225 }
214 } 226 }
215 Map<String, List<Folder>> packageMap = 227 Map<String, List<Folder>> packageMap =
216 convertPackagesToMap(createPackageMap(rootDirectoryPath)); 228 convertPackagesToMap(createPackageMap(rootDirectoryPath));
217 List<UriResolver> resolvers = <UriResolver>[]; 229 List<UriResolver> resolvers = <UriResolver>[];
218 resolvers.add(new DartUriResolver(findSdk(packageMap, options))); 230 resolvers.add(new DartUriResolver(findSdk(packageMap, options)));
219 if (packageMap != null) { 231 if (packageMap != null) {
220 resolvers.add(new PackageMapUriResolver(resourceProvider, packageMap)); 232 resolvers.add(new PackageMapUriResolver(resourceProvider, packageMap));
221 } 233 }
222 resolvers.add(new ResourceUriResolver(resourceProvider)); 234 resolvers.add(fileResolver);
223 return new SourceFactory(resolvers); 235 return new SourceFactory(resolvers);
224 } 236 }
225 237
226 /** 238 /**
227 * Add any [declaredVariables] to the list of declared variables used by the 239 * Add any [declaredVariables] to the list of declared variables used by the
228 * given [context]. 240 * given [context].
229 */ 241 */
230 void declareVariables(InternalAnalysisContext context) { 242 void declareVariables(InternalAnalysisContext context) {
231 if (declaredVariables != null && declaredVariables.isNotEmpty) { 243 if (declaredVariables != null && declaredVariables.isNotEmpty) {
232 DeclaredVariables contextVariables = context.declaredVariables; 244 DeclaredVariables contextVariables = context.declaredVariables;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 } 347 }
336 file = folder 348 file = folder
337 .getChildAssumingFile(AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE); 349 .getChildAssumingFile(AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
338 if (file.exists) { 350 if (file.exists) {
339 return file; 351 return file;
340 } 352 }
341 } 353 }
342 return null; 354 return null;
343 } 355 }
344 } 356 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/src/context/builder_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698