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

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

Issue 2102053003: Remove DDC custom error list now that strong mode analyzer handles it (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: another fix 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 | « lib/runtime/dart_sdk.js ('k') | lib/src/analyzer/dart_sdk.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) 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:analyzer/file_system/file_system.dart' show ResourceUriResolver;
7 import 'package:analyzer/file_system/physical_file_system.dart'
8 show PhysicalResourceProvider;
6 import 'package:args/args.dart' show ArgParser, ArgResults; 9 import 'package:args/args.dart' show ArgParser, ArgResults;
7 import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl; 10 import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl;
8 import 'package:analyzer/src/generated/engine.dart' 11 import 'package:analyzer/src/generated/engine.dart'
9 show AnalysisContext, AnalysisEngine, AnalysisOptionsImpl; 12 show AnalysisContext, AnalysisEngine, AnalysisOptionsImpl;
10 import 'package:analyzer/src/generated/java_io.dart' show JavaFile; 13 import 'package:analyzer/src/generated/java_io.dart' show JavaFile;
11 import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk; 14 import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk;
12 import 'package:analyzer/src/generated/source_io.dart' 15 import 'package:analyzer/src/generated/source_io.dart'
13 show 16 show
14 CustomUriResolver, 17 CustomUriResolver,
15 DartUriResolver, 18 DartUriResolver,
16 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
22 InSummaryPackageUriResolver, 24 InSummaryPackageUriResolver,
23 InputPackagesResultProvider, 25 InputPackagesResultProvider,
24 SummaryDataStore; 26 SummaryDataStore;
25 import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk; 27 import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk;
26 import 'package:cli_util/cli_util.dart' show getSdkDir; 28 import 'package:cli_util/cli_util.dart' show getSdkDir;
27 import 'package:path/path.dart' as path; 29 import 'package:path/path.dart' as path;
28 30
29 import 'dart_sdk.dart' show MockDartSdk, mockSdkSources;
30 import 'multi_package_resolver.dart' show MultiPackageResolver; 31 import 'multi_package_resolver.dart' show MultiPackageResolver;
31 32
32 /// Options used to set up Source URI resolution in the analysis context. 33 /// Options used to set up Source URI resolution in the analysis context.
33 class AnalyzerOptions { 34 class AnalyzerOptions {
34 /// Custom URI mappings, such as "dart:foo" -> "path/to/foo.dart" 35 /// Custom URI mappings, such as "dart:foo" -> "path/to/foo.dart"
35 final Map<String, String> customUrlMappings; 36 final Map<String, String> customUrlMappings;
36 37
37 /// Package root when resolving 'package:' urls the standard way. 38 /// Package root when resolving 'package:' urls the standard way.
38 final String packageRoot; 39 final String packageRoot;
39 40
40 /// List of summary file paths. 41 /// List of summary file paths.
41 final List<String> summaryPaths; 42 final List<String> summaryPaths;
42 43
43 /// List of paths used for the multi-package resolver. 44 /// List of paths used for the multi-package resolver.
44 final List<String> packagePaths; 45 final List<String> packagePaths;
45 46
46 /// Whether to use a mock-sdk during compilation.
47 final bool useMockSdk;
48
49 /// Path to the dart-sdk. Null if `useMockSdk` is true or if the path couldn't 47 /// Path to the dart-sdk. Null if `useMockSdk` is true or if the path couldn't
50 /// be determined 48 /// be determined
51 final String dartSdkPath; 49 final String dartSdkPath;
52 50
53 /// Path to the dart-sdk summary. If this is set, it will be used in favor 51 /// Path to the dart-sdk summary. If this is set, it will be used in favor
54 /// of the unsummarized one. 52 /// of the unsummarized one.
55 final String dartSdkSummaryPath; 53 final String dartSdkSummaryPath;
56 54
57 AnalyzerOptions( 55 AnalyzerOptions(
58 {this.summaryPaths: const [], 56 {this.summaryPaths: const [],
59 this.useMockSdk: false,
60 String dartSdkPath, 57 String dartSdkPath,
61 this.dartSdkSummaryPath, 58 this.dartSdkSummaryPath,
62 this.customUrlMappings: const {}, 59 this.customUrlMappings: const {},
63 this.packageRoot: 'packages/', 60 this.packageRoot: 'packages/',
64 this.packagePaths: const []}) 61 this.packagePaths: const []})
65 : dartSdkPath = dartSdkPath ?? getSdkDir().path; 62 : dartSdkPath = dartSdkPath ?? getSdkDir().path;
66 63
67 AnalyzerOptions.fromArguments(ArgResults args) 64 AnalyzerOptions.fromArguments(ArgResults args)
68 : summaryPaths = args['summary'] as List<String>, 65 : summaryPaths = args['summary'] as List<String>,
69 useMockSdk = false,
70 dartSdkPath = args['dart-sdk'] ?? getSdkDir().path, 66 dartSdkPath = args['dart-sdk'] ?? getSdkDir().path,
71 dartSdkSummaryPath = args['dart-sdk-summary'], 67 dartSdkSummaryPath = args['dart-sdk-summary'],
72 customUrlMappings = _parseUrlMappings(args['url-mapping']), 68 customUrlMappings = _parseUrlMappings(args['url-mapping']),
73 packageRoot = args['package-root'], 69 packageRoot = args['package-root'],
74 packagePaths = (args['package-paths'] as String)?.split(',') ?? []; 70 packagePaths = (args['package-paths'] as String)?.split(',') ?? [];
75 71
76 /// Whether to resolve 'package:' uris using the multi-package resolver. 72 /// Whether to resolve 'package:' uris using the multi-package resolver.
77 bool get useMultiPackage => packagePaths.isNotEmpty; 73 bool get useMultiPackage => packagePaths.isNotEmpty;
78 74
79 static ArgParser addArguments(ArgParser parser) { 75 static ArgParser addArguments(ArgParser parser) {
(...skipping 27 matching lines...) Expand all
107 return mappings; 103 return mappings;
108 } 104 }
109 } 105 }
110 106
111 /// Creates an [AnalysisContext] with dev_compiler type rules and inference, 107 /// Creates an [AnalysisContext] with dev_compiler type rules and inference,
112 /// using [createSourceFactory] to set up its [SourceFactory]. 108 /// using [createSourceFactory] to set up its [SourceFactory].
113 AnalysisContext createAnalysisContextWithSources(AnalyzerOptions options, 109 AnalysisContext createAnalysisContextWithSources(AnalyzerOptions options,
114 {DartUriResolver sdkResolver, List<UriResolver> fileResolvers}) { 110 {DartUriResolver sdkResolver, List<UriResolver> fileResolvers}) {
115 AnalysisEngine.instance.processRequiredPlugins(); 111 AnalysisEngine.instance.processRequiredPlugins();
116 112
117 sdkResolver ??= options.useMockSdk 113 sdkResolver ??=
118 ? createMockSdkResolver(mockSdkSources) 114 createSdkPathResolver(options.dartSdkSummaryPath, options.dartSdkPath);
119 : createSdkPathResolver(options.dartSdkSummaryPath, options.dartSdkPath);
120 115
121 // Read the summaries. 116 // Read the summaries.
122 SummaryDataStore summaryData; 117 SummaryDataStore summaryData;
123 if (options.summaryPaths.isNotEmpty) { 118 if (options.summaryPaths.isNotEmpty) {
124 summaryData = new SummaryDataStore(options.summaryPaths); 119 summaryData = new SummaryDataStore(options.summaryPaths);
125 } 120 }
126 121
127 var srcFactory = _createSourceFactory(options, 122 var srcFactory = _createSourceFactory(options,
128 sdkResolver: sdkResolver, 123 sdkResolver: sdkResolver,
129 fileResolvers: fileResolvers, 124 fileResolvers: fileResolvers,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 resolvers.add(new InSummaryPackageUriResolver(summaryData)); 163 resolvers.add(new InSummaryPackageUriResolver(summaryData));
169 } 164 }
170 165
171 if (fileResolvers == null) fileResolvers = createFileResolvers(options); 166 if (fileResolvers == null) fileResolvers = createFileResolvers(options);
172 resolvers.addAll(fileResolvers); 167 resolvers.addAll(fileResolvers);
173 return new SourceFactory(resolvers); 168 return new SourceFactory(resolvers);
174 } 169 }
175 170
176 List<UriResolver> createFileResolvers(AnalyzerOptions options) { 171 List<UriResolver> createFileResolvers(AnalyzerOptions options) {
177 return [ 172 return [
178 new FileUriResolver(), 173 new ResourceUriResolver(PhysicalResourceProvider.INSTANCE),
179 options.useMultiPackage 174 options.useMultiPackage
180 ? new MultiPackageResolver(options.packagePaths) 175 ? new MultiPackageResolver(options.packagePaths)
181 : new PackageUriResolver([new JavaFile(options.packageRoot)]) 176 : new PackageUriResolver([new JavaFile(options.packageRoot)])
182 ]; 177 ];
183 } 178 }
184 179
185 /// Creates a [DartUriResolver] that uses a mock 'dart:' library contents.
186 DartUriResolver createMockSdkResolver(Map<String, String> mockSources) =>
187 new MockDartSdk(mockSources, reportMissing: true).resolver;
188
189 DirectoryBasedDartSdk _createDirectoryBasedDartSdk(String sdkPath) { 180 DirectoryBasedDartSdk _createDirectoryBasedDartSdk(String sdkPath) {
190 var sdk = new DirectoryBasedDartSdk( 181 var sdk = new DirectoryBasedDartSdk(
191 new JavaFile(sdkPath), /*useDart2jsPaths:*/ true); 182 new JavaFile(sdkPath), /*useDart2jsPaths:*/ true);
192 sdk.useSummary = true; 183 sdk.useSummary = true;
193 sdk.analysisOptions = new AnalysisOptionsImpl()..strongMode = true; 184 sdk.analysisOptions = new AnalysisOptionsImpl()..strongMode = true;
194 return sdk; 185 return sdk;
195 } 186 }
196 187
197 /// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath]. 188 /// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath].
198 DartUriResolver createSdkPathResolver(String sdkSummaryPath, String sdkPath) { 189 DartUriResolver createSdkPathResolver(String sdkSummaryPath, String sdkPath) {
199 var sdk = (sdkSummaryPath != null) 190 var sdk = (sdkSummaryPath != null)
200 ? new SummaryBasedDartSdk(sdkSummaryPath, true) 191 ? new SummaryBasedDartSdk(sdkSummaryPath, true)
201 : _createDirectoryBasedDartSdk(sdkPath); 192 : _createDirectoryBasedDartSdk(sdkPath);
202 return new DartUriResolver(sdk); 193 return new DartUriResolver(sdk);
203 } 194 }
OLDNEW
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | lib/src/analyzer/dart_sdk.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698