OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 analysis.server; | 5 library analysis.server; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:collection'; | 8 import 'dart:collection'; |
9 import 'dart:core' hide Resource; | 9 import 'dart:core' hide Resource; |
10 import 'dart:io' as io; | 10 import 'dart:io' as io; |
(...skipping 1665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1676 * Set up a [SourceFactory] that resolves packages as appropriate for the | 1676 * Set up a [SourceFactory] that resolves packages as appropriate for the |
1677 * given [disposition]. | 1677 * given [disposition]. |
1678 */ | 1678 */ |
1679 SourceFactory _createSourceFactory(InternalAnalysisContext context, | 1679 SourceFactory _createSourceFactory(InternalAnalysisContext context, |
1680 AnalysisOptions options, FolderDisposition disposition, Folder folder) { | 1680 AnalysisOptions options, FolderDisposition disposition, Folder folder) { |
1681 List<UriResolver> resolvers = []; | 1681 List<UriResolver> resolvers = []; |
1682 List<UriResolver> packageUriResolvers = | 1682 List<UriResolver> packageUriResolvers = |
1683 disposition.createPackageUriResolvers(resourceProvider); | 1683 disposition.createPackageUriResolvers(resourceProvider); |
1684 | 1684 |
1685 // If no embedded URI resolver was provided, defer to a locator-backed one. | 1685 // If no embedded URI resolver was provided, defer to a locator-backed one. |
| 1686 SdkExtensionFinder extFinder = |
| 1687 disposition.getSdkExtensionFinder(resourceProvider); |
| 1688 List<String> extFilePaths = extFinder.extensionFilePaths; |
1686 EmbedderYamlLocator locator = | 1689 EmbedderYamlLocator locator = |
1687 disposition.getEmbedderLocator(resourceProvider); | 1690 disposition.getEmbedderLocator(resourceProvider); |
1688 Map<Folder, YamlMap> embedderYamls = locator.embedderYamls; | 1691 Map<Folder, YamlMap> embedderYamls = locator.embedderYamls; |
1689 EmbedderSdk embedderSdk = new EmbedderSdk(resourceProvider, embedderYamls); | 1692 EmbedderSdk embedderSdk = new EmbedderSdk(resourceProvider, embedderYamls); |
1690 if (embedderSdk.libraryMap.size() == 0) { | 1693 if (embedderSdk.libraryMap.size() == 0) { |
1691 // There was no embedder file, or the file was empty, so used the default | 1694 // There was no embedder file, or the file was empty, so used the default |
1692 // SDK. | 1695 // SDK. |
1693 resolvers.add(new DartUriResolver( | 1696 resolvers.add(new DartUriResolver( |
1694 analysisServer.sdkManager.getSdkForOptions(options))); | 1697 analysisServer.sdkManager.getSdkForOptions(options))); |
1695 } else { | 1698 } else { |
1696 // The embedder file defines an alternate SDK, so use it. | 1699 // The embedder file defines an alternate SDK, so use it. |
1697 List<String> paths = <String>[]; | 1700 List<String> paths = <String>[]; |
1698 for (Folder folder in embedderYamls.keys) { | 1701 for (Folder folder in embedderYamls.keys) { |
1699 paths.add(folder | 1702 paths.add(folder |
1700 .getChildAssumingFile(EmbedderYamlLocator.EMBEDDER_FILE_NAME) | 1703 .getChildAssumingFile(EmbedderYamlLocator.EMBEDDER_FILE_NAME) |
1701 .path); | 1704 .path); |
1702 } | 1705 } |
| 1706 paths.addAll(extFilePaths); |
1703 DartSdk dartSdk = analysisServer.sdkManager | 1707 DartSdk dartSdk = analysisServer.sdkManager |
1704 .getSdk(new SdkDescription(paths, options), () { | 1708 .getSdk(new SdkDescription(paths, options), () { |
| 1709 if (extFilePaths.isNotEmpty) { |
| 1710 embedderSdk.addExtensions(extFinder.urlMappings); |
| 1711 } |
1705 embedderSdk.analysisOptions = options; | 1712 embedderSdk.analysisOptions = options; |
1706 // TODO(brianwilkerson) Enable summary use after we have decided where | 1713 // TODO(brianwilkerson) Enable summary use after we have decided where |
1707 // summary files for embedder files will live. | 1714 // summary files for embedder files will live. |
1708 embedderSdk.useSummary = false; | 1715 embedderSdk.useSummary = false; |
1709 return embedderSdk; | 1716 return embedderSdk; |
1710 }); | 1717 }); |
1711 resolvers.add(new DartUriResolver(dartSdk)); | 1718 resolvers.add(new DartUriResolver(dartSdk)); |
1712 } | 1719 } |
1713 | 1720 |
1714 resolvers.addAll(packageUriResolvers); | 1721 resolvers.addAll(packageUriResolvers); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1815 /** | 1822 /** |
1816 * The [PerformanceTag] for time spent in server request handlers. | 1823 * The [PerformanceTag] for time spent in server request handlers. |
1817 */ | 1824 */ |
1818 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); | 1825 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); |
1819 | 1826 |
1820 /** | 1827 /** |
1821 * The [PerformanceTag] for time spent in split store microtasks. | 1828 * The [PerformanceTag] for time spent in split store microtasks. |
1822 */ | 1829 */ |
1823 static PerformanceTag splitStore = new PerformanceTag('splitStore'); | 1830 static PerformanceTag splitStore = new PerformanceTag('splitStore'); |
1824 } | 1831 } |
OLD | NEW |