| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 import 'package:args/args.dart' show ArgParser, ArgResults; | 5 import 'package:args/args.dart' show ArgParser, ArgResults; |
| 6 import 'package:analyzer/file_system/file_system.dart' | 6 import 'package:analyzer/file_system/file_system.dart' |
| 7 show ResourceProvider, ResourceUriResolver; | 7 show ResourceProvider, ResourceUriResolver; |
| 8 import 'package:analyzer/file_system/physical_file_system.dart' | 8 import 'package:analyzer/file_system/physical_file_system.dart' |
| 9 show PhysicalResourceProvider; | 9 show PhysicalResourceProvider; |
| 10 import 'package:analyzer/source/custom_resolver.dart'; | 10 import 'package:analyzer/source/custom_resolver.dart'; |
| 11 import 'package:analyzer/source/package_map_resolver.dart'; | 11 import 'package:analyzer/source/package_map_resolver.dart'; |
| 12 import 'package:analyzer/src/context/builder.dart'; | 12 import 'package:analyzer/src/context/builder.dart'; |
| 13 import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl; | 13 import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl; |
| 14 import 'package:analyzer/src/dart/sdk/sdk.dart' show FolderBasedDartSdk; | 14 import 'package:analyzer/src/dart/sdk/sdk.dart' show FolderBasedDartSdk; |
| 15 import 'package:analyzer/src/generated/engine.dart' | 15 import 'package:analyzer/src/generated/engine.dart' |
| 16 show AnalysisContext, AnalysisEngine, AnalysisOptionsImpl; | 16 show AnalysisEngine, AnalysisOptionsImpl; |
| 17 import 'package:analyzer/src/generated/source.dart' | 17 import 'package:analyzer/src/generated/source.dart' |
| 18 show DartUriResolver, SourceFactory, UriResolver; | 18 show DartUriResolver, SourceFactory, UriResolver; |
| 19 import 'package:analyzer/src/summary/package_bundle_reader.dart' | 19 import 'package:analyzer/src/summary/package_bundle_reader.dart' |
| 20 show InSummaryUriResolver, InputPackagesResultProvider, SummaryDataStore; | 20 show InSummaryUriResolver, SummaryDataStore; |
| 21 import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk; | 21 import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk; |
| 22 import 'package:cli_util/cli_util.dart' show getSdkDir; | 22 import 'package:cli_util/cli_util.dart' show getSdkDir; |
| 23 import 'package:path/path.dart' as path; | 23 import 'package:path/path.dart' as path; |
| 24 | 24 |
| 25 import 'multi_package_resolver.dart' show MultiPackageResolver; | 25 import 'multi_package_resolver.dart' show MultiPackageResolver; |
| 26 | 26 |
| 27 /// Options used to set up Source URI resolution in the analysis context. | 27 /// Options used to set up Source URI resolution in the analysis context. |
| 28 class AnalyzerOptions { | 28 class AnalyzerOptions { |
| 29 /// Custom URI mappings, such as "dart:foo" -> "path/to/foo.dart" | 29 /// Custom URI mappings, such as "dart:foo" -> "path/to/foo.dart" |
| 30 final Map<String, String> customUrlMappings; | 30 final Map<String, String> customUrlMappings; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 for (var mapping in argument) { | 91 for (var mapping in argument) { |
| 92 var splitMapping = mapping.split(','); | 92 var splitMapping = mapping.split(','); |
| 93 if (splitMapping.length >= 2) { | 93 if (splitMapping.length >= 2) { |
| 94 mappings[splitMapping[0]] = path.absolute(splitMapping[1]); | 94 mappings[splitMapping[0]] = path.absolute(splitMapping[1]); |
| 95 } | 95 } |
| 96 } | 96 } |
| 97 return mappings; | 97 return mappings; |
| 98 } | 98 } |
| 99 } | 99 } |
| 100 | 100 |
| 101 /// Creates an [AnalysisContext] with dev_compiler type rules and inference, | |
| 102 /// using [createSourceFactory] to set up its [SourceFactory]. | |
| 103 AnalysisContext createAnalysisContextWithSources(AnalyzerOptions options, | |
| 104 {DartUriResolver sdkResolver, | |
| 105 List<UriResolver> fileResolvers, | |
| 106 ResourceProvider resourceProvider}) { | |
| 107 AnalysisEngine.instance.processRequiredPlugins(); | |
| 108 | |
| 109 sdkResolver ??= | |
| 110 createSdkPathResolver(options.dartSdkSummaryPath, options.dartSdkPath); | |
| 111 | |
| 112 // Read the summaries. | |
| 113 SummaryDataStore summaryData; | |
| 114 if (options.summaryPaths.isNotEmpty) { | |
| 115 summaryData = new SummaryDataStore(options.summaryPaths); | |
| 116 } | |
| 117 | |
| 118 var srcFactory = _createSourceFactory(options, | |
| 119 sdkResolver: sdkResolver, | |
| 120 fileResolvers: fileResolvers, | |
| 121 summaryData: summaryData, | |
| 122 resourceProvider: resourceProvider); | |
| 123 | |
| 124 var context = createAnalysisContext(); | |
| 125 context.sourceFactory = srcFactory; | |
| 126 if (summaryData != null) { | |
| 127 context.typeProvider = sdkResolver.dartSdk.context.typeProvider; | |
| 128 context.resultProvider = | |
| 129 new InputPackagesResultProvider(context, summaryData); | |
| 130 } | |
| 131 return context; | |
| 132 } | |
| 133 | |
| 134 /// Creates an analysis context that contains our restricted typing rules. | 101 /// Creates an analysis context that contains our restricted typing rules. |
| 135 AnalysisContextImpl createAnalysisContext() { | 102 AnalysisContextImpl createAnalysisContext() { |
| 136 var res = AnalysisEngine.instance.createAnalysisContext(); | 103 var res = AnalysisEngine.instance.createAnalysisContext(); |
| 137 res.analysisOptions = new AnalysisOptionsImpl() | 104 res.analysisOptions = new AnalysisOptionsImpl() |
| 138 ..strongMode = true | 105 ..strongMode = true |
| 139 ..trackCacheDependencies = false; | 106 ..trackCacheDependencies = false; |
| 140 return res; | 107 return res; |
| 141 } | 108 } |
| 142 | 109 |
| 143 /// Creates a SourceFactory configured by the [options]. | 110 /// Creates a SourceFactory configured by the [options]. |
| 144 /// | 111 /// |
| 145 /// Use [options.useMockSdk] to specify the SDK mode, or use [sdkResolver] | 112 /// Use [options.useMockSdk] to specify the SDK mode, or use [sdkResolver] |
| 146 /// to entirely override the DartUriResolver. | 113 /// to entirely override the DartUriResolver. |
| 147 /// | 114 /// |
| 148 /// If supplied, [fileResolvers] will override the default `file:` and | 115 /// If supplied, [fileResolvers] will override the default `file:` and |
| 149 /// `package:` URI resolvers. | 116 /// `package:` URI resolvers. |
| 150 SourceFactory _createSourceFactory(AnalyzerOptions options, | 117 SourceFactory createSourceFactory(AnalyzerOptions options, |
| 151 {DartUriResolver sdkResolver, | 118 {DartUriResolver sdkResolver, |
| 152 List<UriResolver> fileResolvers, | 119 List<UriResolver> fileResolvers, |
| 153 SummaryDataStore summaryData, | 120 SummaryDataStore summaryData, |
| 154 ResourceProvider resourceProvider}) { | 121 ResourceProvider resourceProvider}) { |
| 155 resourceProvider ??= PhysicalResourceProvider.INSTANCE; | 122 resourceProvider ??= PhysicalResourceProvider.INSTANCE; |
| 156 var resolvers = <UriResolver>[]; | 123 var resolvers = <UriResolver>[]; |
| 157 if (options.customUrlMappings.isNotEmpty) { | 124 if (options.customUrlMappings.isNotEmpty) { |
| 158 resolvers.add( | 125 resolvers.add( |
| 159 new CustomUriResolver(resourceProvider, options.customUrlMappings)); | 126 new CustomUriResolver(resourceProvider, options.customUrlMappings)); |
| 160 } | 127 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 return sdk; | 164 return sdk; |
| 198 } | 165 } |
| 199 | 166 |
| 200 /// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath]. | 167 /// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath]. |
| 201 DartUriResolver createSdkPathResolver(String sdkSummaryPath, String sdkPath) { | 168 DartUriResolver createSdkPathResolver(String sdkSummaryPath, String sdkPath) { |
| 202 var sdk = (sdkSummaryPath != null) | 169 var sdk = (sdkSummaryPath != null) |
| 203 ? new SummaryBasedDartSdk(sdkSummaryPath, true) | 170 ? new SummaryBasedDartSdk(sdkSummaryPath, true) |
| 204 : _createFolderBasedDartSdk(sdkPath); | 171 : _createFolderBasedDartSdk(sdkPath); |
| 205 return new DartUriResolver(sdk); | 172 return new DartUriResolver(sdk); |
| 206 } | 173 } |
| OLD | NEW |