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

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

Issue 2183603003: Working compiler in browser. (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Cleaned up CL with John's comments Created 4 years, 4 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 | lib/src/compiler/compiler.dart » ('j') | web/web_command.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 2
3 // for details. All rights reserved. Use of this source code is governed by a 3 // for details. All rights reserved. Use of this source code is governed by a
4 // BSD-style license that can be found in the LICENSE file. 4 // BSD-style license that can be found in the LICENSE file.
5 5
6 import 'package:args/args.dart' show ArgParser, ArgResults; 6 import 'package:args/args.dart' show ArgParser, ArgResults;
7 import 'package:analyzer/file_system/file_system.dart' show ResourceProvider;
7 import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl; 8 import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl;
8 import 'package:analyzer/src/generated/engine.dart' 9 import 'package:analyzer/src/generated/engine.dart'
9 show AnalysisContext, AnalysisEngine, AnalysisOptionsImpl; 10 show AnalysisContext, AnalysisEngine, AnalysisOptionsImpl;
10 import 'package:analyzer/src/generated/java_io.dart' show JavaFile; 11 import 'package:analyzer/src/generated/java_io.dart' show JavaFile;
11 import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk; 12 import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk;
13 import 'package:analyzer/src/generated/source.dart';
12 import 'package:analyzer/src/generated/source_io.dart' 14 import 'package:analyzer/src/generated/source_io.dart'
13 show 15 show
14 CustomUriResolver, 16 CustomUriResolver,
15 DartUriResolver, 17 DartUriResolver,
16 FileUriResolver, 18 FileUriResolver,
17 PackageUriResolver, 19 PackageUriResolver,
18 SourceFactory, 20 SourceFactory,
19 UriResolver; 21 UriResolver;
20 import 'package:analyzer/src/summary/package_bundle_reader.dart' 22 import 'package:analyzer/src/summary/package_bundle_reader.dart'
21 show 23 show
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 mappings[splitMapping[0]] = path.absolute(splitMapping[1]); 106 mappings[splitMapping[0]] = path.absolute(splitMapping[1]);
105 } 107 }
106 } 108 }
107 return mappings; 109 return mappings;
108 } 110 }
109 } 111 }
110 112
111 /// Creates an [AnalysisContext] with dev_compiler type rules and inference, 113 /// Creates an [AnalysisContext] with dev_compiler type rules and inference,
112 /// using [createSourceFactory] to set up its [SourceFactory]. 114 /// using [createSourceFactory] to set up its [SourceFactory].
113 AnalysisContext createAnalysisContextWithSources(AnalyzerOptions options, 115 AnalysisContext createAnalysisContextWithSources(AnalyzerOptions options,
114 {DartUriResolver sdkResolver, List<UriResolver> fileResolvers}) { 116 {DartUriResolver sdkResolver,
117 List<UriResolver> fileResolvers,
118 ResourceProvider resourceProvider}) {
115 AnalysisEngine.instance.processRequiredPlugins(); 119 AnalysisEngine.instance.processRequiredPlugins();
116 120
117 sdkResolver ??= options.useMockSdk 121 sdkResolver ??= options.useMockSdk
118 ? createMockSdkResolver(mockSdkSources) 122 ? createMockSdkResolver(mockSdkSources)
119 : createSdkPathResolver(options.dartSdkSummaryPath, options.dartSdkPath); 123 : createSdkPathResolver(options.dartSdkSummaryPath, options.dartSdkPath);
120 124
121 // Read the summaries. 125 // Read the summaries.
122 SummaryDataStore summaryData; 126 SummaryDataStore summaryData;
123 if (options.summaryPaths.isNotEmpty) { 127 if (options.summaryPaths.isNotEmpty) {
124 summaryData = new SummaryDataStore(options.summaryPaths); 128 summaryData = new SummaryDataStore(options.summaryPaths);
125 } 129 }
126 130
127 var srcFactory = _createSourceFactory(options, 131 var srcFactory = _createSourceFactory(options,
128 sdkResolver: sdkResolver, 132 sdkResolver: sdkResolver,
129 fileResolvers: fileResolvers, 133 fileResolvers: fileResolvers,
130 summaryData: summaryData); 134 summaryData: summaryData,
135 resourceProvider: resourceProvider);
131 136
132 var context = createAnalysisContext(); 137 var context = createAnalysisContext();
133 context.sourceFactory = srcFactory; 138 context.sourceFactory = srcFactory;
134 if (summaryData != null) { 139 if (summaryData != null) {
135 context.typeProvider = sdkResolver.dartSdk.context.typeProvider; 140 context.typeProvider = sdkResolver.dartSdk.context.typeProvider;
136 context.resultProvider = 141 context.resultProvider =
137 new InputPackagesResultProvider(context, summaryData); 142 new InputPackagesResultProvider(context, summaryData);
138 } 143 }
139 return context; 144 return context;
140 } 145 }
(...skipping 10 matching lines...) Expand all
151 /// Creates a SourceFactory configured by the [options]. 156 /// Creates a SourceFactory configured by the [options].
152 /// 157 ///
153 /// Use [options.useMockSdk] to specify the SDK mode, or use [sdkResolver] 158 /// Use [options.useMockSdk] to specify the SDK mode, or use [sdkResolver]
154 /// to entirely override the DartUriResolver. 159 /// to entirely override the DartUriResolver.
155 /// 160 ///
156 /// If supplied, [fileResolvers] will override the default `file:` and 161 /// If supplied, [fileResolvers] will override the default `file:` and
157 /// `package:` URI resolvers. 162 /// `package:` URI resolvers.
158 SourceFactory _createSourceFactory(AnalyzerOptions options, 163 SourceFactory _createSourceFactory(AnalyzerOptions options,
159 {DartUriResolver sdkResolver, 164 {DartUriResolver sdkResolver,
160 List<UriResolver> fileResolvers, 165 List<UriResolver> fileResolvers,
161 SummaryDataStore summaryData}) { 166 SummaryDataStore summaryData,
167 ResourceProvider resourceProvider}) {
162 var resolvers = <UriResolver>[]; 168 var resolvers = <UriResolver>[];
163 if (options.customUrlMappings.isNotEmpty) { 169 if (options.customUrlMappings.isNotEmpty) {
164 resolvers.add(new CustomUriResolver(options.customUrlMappings)); 170 resolvers.add(new CustomUriResolver(options.customUrlMappings));
165 } 171 }
166 resolvers.add(sdkResolver); 172 resolvers.add(sdkResolver);
167 if (summaryData != null) { 173 if (summaryData != null) {
168 resolvers.add(new InSummaryPackageUriResolver(summaryData)); 174 resolvers.add(new InSummaryPackageUriResolver(summaryData));
169 } 175 }
170 176
171 if (fileResolvers == null) fileResolvers = createFileResolvers(options); 177 if (fileResolvers == null) fileResolvers = createFileResolvers(options);
172 resolvers.addAll(fileResolvers); 178 resolvers.addAll(fileResolvers);
173 return new SourceFactory(resolvers); 179 return new SourceFactory(resolvers, null, resourceProvider);
174 } 180 }
175 181
176 List<UriResolver> createFileResolvers(AnalyzerOptions options) { 182 List<UriResolver> createFileResolvers(AnalyzerOptions options) {
177 return [ 183 return [
178 new FileUriResolver(), 184 new FileUriResolver(),
179 options.useMultiPackage 185 options.useMultiPackage
180 ? new MultiPackageResolver(options.packagePaths) 186 ? new MultiPackageResolver(options.packagePaths)
181 : new PackageUriResolver([new JavaFile(options.packageRoot)]) 187 : new PackageUriResolver([new JavaFile(options.packageRoot)])
182 ]; 188 ];
183 } 189 }
(...skipping 10 matching lines...) Expand all
194 return sdk; 200 return sdk;
195 } 201 }
196 202
197 /// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath]. 203 /// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath].
198 DartUriResolver createSdkPathResolver(String sdkSummaryPath, String sdkPath) { 204 DartUriResolver createSdkPathResolver(String sdkSummaryPath, String sdkPath) {
199 var sdk = (sdkSummaryPath != null) 205 var sdk = (sdkSummaryPath != null)
200 ? new SummaryBasedDartSdk(sdkSummaryPath, true) 206 ? new SummaryBasedDartSdk(sdkSummaryPath, true)
201 : _createDirectoryBasedDartSdk(sdkPath); 207 : _createDirectoryBasedDartSdk(sdkPath);
202 return new DartUriResolver(sdk); 208 return new DartUriResolver(sdk);
203 } 209 }
OLDNEW
« no previous file with comments | « no previous file | lib/src/compiler/compiler.dart » ('j') | web/web_command.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698