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

Side by Side Diff: packages/analyzer/lib/src/plugin/engine_plugin.dart

Issue 2990843002: Removed fixed dependencies (Closed)
Patch Set: Created 3 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
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 // 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.plugin.engine_plugin; 5 library analyzer.src.plugin.engine_plugin;
6 6
7 import 'package:analyzer/error/error.dart' show AnalysisError;
7 import 'package:analyzer/plugin/task.dart'; 8 import 'package:analyzer/plugin/task.dart';
8 import 'package:analyzer/src/generated/engine.dart' 9 import 'package:analyzer/src/generated/engine.dart'
9 show InternalAnalysisContext; 10 show InternalAnalysisContext;
10 import 'package:analyzer/src/generated/error.dart' show AnalysisError;
11 import 'package:analyzer/src/task/dart.dart'; 11 import 'package:analyzer/src/task/dart.dart';
12 import 'package:analyzer/src/task/dart_work_manager.dart'; 12 import 'package:analyzer/src/task/dart_work_manager.dart';
13 import 'package:analyzer/src/task/general.dart'; 13 import 'package:analyzer/src/task/general.dart';
14 import 'package:analyzer/src/task/html.dart'; 14 import 'package:analyzer/src/task/html.dart';
15 import 'package:analyzer/src/task/html_work_manager.dart'; 15 import 'package:analyzer/src/task/html_work_manager.dart';
16 import 'package:analyzer/src/task/options_work_manager.dart';
17 import 'package:analyzer/src/task/yaml.dart';
16 import 'package:analyzer/task/model.dart'; 18 import 'package:analyzer/task/model.dart';
17 import 'package:plugin/plugin.dart'; 19 import 'package:plugin/plugin.dart';
18 20
19 /** 21 /**
20 * A plugin that defines the extension points and extensions that are inherently 22 * A plugin that defines the extension points and extensions that are inherently
21 * defined by the analysis engine. 23 * defined by the analysis engine.
22 */ 24 */
23 class EnginePlugin implements Plugin { 25 class EnginePlugin implements Plugin {
24 /** 26 /**
25 * The simple identifier of the extension point that allows plugins to 27 * The simple identifier of the extension point that allows plugins to
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 59
58 /** 60 /**
59 * The unique identifier of this plugin. 61 * The unique identifier of this plugin.
60 */ 62 */
61 static const String UNIQUE_IDENTIFIER = 'analysis_engine.core'; 63 static const String UNIQUE_IDENTIFIER = 'analysis_engine.core';
62 64
63 /** 65 /**
64 * The extension point that allows plugins to register new analysis error 66 * The extension point that allows plugins to register new analysis error
65 * results for a Dart source. 67 * results for a Dart source.
66 */ 68 */
67 ExtensionPoint dartErrorsForSourceExtensionPoint; 69 ExtensionPoint<ListResultDescriptor<AnalysisError>>
70 dartErrorsForSourceExtensionPoint;
68 71
69 /** 72 /**
70 * The extension point that allows plugins to register new analysis error 73 * The extension point that allows plugins to register new analysis error
71 * results for a Dart library specific unit. 74 * results for a Dart library specific unit.
72 */ 75 */
73 ExtensionPoint dartErrorsForUnitExtensionPoint; 76 ExtensionPoint<ListResultDescriptor<AnalysisError>>
77 dartErrorsForUnitExtensionPoint;
74 78
75 /** 79 /**
76 * The extension point that allows plugins to register new analysis error 80 * The extension point that allows plugins to register new analysis error
77 * results for an HTML source. 81 * results for an HTML source.
78 */ 82 */
79 ExtensionPoint htmlErrorsExtensionPoint; 83 ExtensionPoint<ListResultDescriptor<AnalysisError>> htmlErrorsExtensionPoint;
80 84
81 /** 85 /**
82 * The extension point that allows plugins to register new analysis tasks with 86 * The extension point that allows plugins to register new analysis tasks with
83 * the analysis engine. 87 * the analysis engine.
84 */ 88 */
85 ExtensionPoint taskExtensionPoint; 89 ExtensionPoint<TaskDescriptor> taskExtensionPoint;
86 90
87 /** 91 /**
88 * The extension point that allows plugins to register new work manager 92 * The extension point that allows plugins to register new work manager
89 * factories with the analysis engine. 93 * factories with the analysis engine.
90 */ 94 */
91 ExtensionPoint workManagerFactoryExtensionPoint; 95 ExtensionPoint<WorkManagerFactory> workManagerFactoryExtensionPoint;
92 96
93 /** 97 /**
94 * Initialize a newly created plugin. 98 * Initialize a newly created plugin.
95 */ 99 */
96 EnginePlugin(); 100 EnginePlugin();
97 101
98 /** 102 /**
99 * Return a list containing all of the contributed analysis error result 103 * Return a list containing all of the contributed analysis error result
100 * descriptors for Dart sources. 104 * descriptors for Dart sources.
101 */ 105 */
(...skipping 26 matching lines...) Expand all
128 132
129 /** 133 /**
130 * Return a list containing all of the work manager factories that were 134 * Return a list containing all of the work manager factories that were
131 * contributed. 135 * contributed.
132 */ 136 */
133 List<WorkManagerFactory> get workManagerFactories => 137 List<WorkManagerFactory> get workManagerFactories =>
134 workManagerFactoryExtensionPoint.extensions; 138 workManagerFactoryExtensionPoint.extensions;
135 139
136 @override 140 @override
137 void registerExtensionPoints(RegisterExtensionPoint registerExtensionPoint) { 141 void registerExtensionPoints(RegisterExtensionPoint registerExtensionPoint) {
138 dartErrorsForSourceExtensionPoint = registerExtensionPoint( 142 dartErrorsForSourceExtensionPoint =
139 DART_ERRORS_FOR_SOURCE_EXTENSION_POINT, 143 new ExtensionPoint<ListResultDescriptor<AnalysisError>>(
140 _validateAnalysisErrorListResultDescriptor); 144 this, DART_ERRORS_FOR_SOURCE_EXTENSION_POINT, null);
141 dartErrorsForUnitExtensionPoint = registerExtensionPoint( 145 registerExtensionPoint(dartErrorsForSourceExtensionPoint);
142 DART_ERRORS_FOR_UNIT_EXTENSION_POINT, 146 dartErrorsForUnitExtensionPoint =
143 _validateAnalysisErrorListResultDescriptor); 147 new ExtensionPoint<ListResultDescriptor<AnalysisError>>(
144 htmlErrorsExtensionPoint = registerExtensionPoint( 148 this, DART_ERRORS_FOR_UNIT_EXTENSION_POINT, null);
145 HTML_ERRORS_EXTENSION_POINT, 149 registerExtensionPoint(dartErrorsForUnitExtensionPoint);
146 _validateAnalysisErrorListResultDescriptor); 150 htmlErrorsExtensionPoint =
151 new ExtensionPoint<ListResultDescriptor<AnalysisError>>(
152 this, HTML_ERRORS_EXTENSION_POINT, null);
153 registerExtensionPoint(htmlErrorsExtensionPoint);
147 taskExtensionPoint = 154 taskExtensionPoint =
148 registerExtensionPoint(TASK_EXTENSION_POINT, _validateTaskExtension); 155 new ExtensionPoint<TaskDescriptor>(this, TASK_EXTENSION_POINT, null);
149 workManagerFactoryExtensionPoint = registerExtensionPoint( 156 registerExtensionPoint(taskExtensionPoint);
150 WORK_MANAGER_FACTORY_EXTENSION_POINT, 157 workManagerFactoryExtensionPoint = new ExtensionPoint<WorkManagerFactory>(
151 _validateWorkManagerFactoryExtension); 158 this, WORK_MANAGER_FACTORY_EXTENSION_POINT, null);
159 registerExtensionPoint(workManagerFactoryExtensionPoint);
152 } 160 }
153 161
154 @override 162 @override
155 void registerExtensions(RegisterExtension registerExtension) { 163 void registerExtensions(RegisterExtension registerExtension) {
156 _registerTaskExtensions(registerExtension); 164 _registerTaskExtensions(registerExtension);
157 _registerWorkManagerFactoryExtensions(registerExtension); 165 _registerWorkManagerFactoryExtensions(registerExtension);
158 _registerDartErrorsForSource(registerExtension); 166 _registerDartErrorsForSource(registerExtension);
159 _registerDartErrorsForUnit(registerExtension); 167 _registerDartErrorsForUnit(registerExtension);
160 _registerHtmlErrors(registerExtension); 168 _registerHtmlErrors(registerExtension);
161 } 169 }
(...skipping 21 matching lines...) Expand all
183 // 191 //
184 // Register Dart tasks. 192 // Register Dart tasks.
185 // 193 //
186 registerExtension(taskId, BuildCompilationUnitElementTask.DESCRIPTOR); 194 registerExtension(taskId, BuildCompilationUnitElementTask.DESCRIPTOR);
187 registerExtension(taskId, BuildDirectiveElementsTask.DESCRIPTOR); 195 registerExtension(taskId, BuildDirectiveElementsTask.DESCRIPTOR);
188 registerExtension(taskId, BuildEnumMemberElementsTask.DESCRIPTOR); 196 registerExtension(taskId, BuildEnumMemberElementsTask.DESCRIPTOR);
189 registerExtension(taskId, BuildExportNamespaceTask.DESCRIPTOR); 197 registerExtension(taskId, BuildExportNamespaceTask.DESCRIPTOR);
190 registerExtension(taskId, BuildLibraryElementTask.DESCRIPTOR); 198 registerExtension(taskId, BuildLibraryElementTask.DESCRIPTOR);
191 registerExtension(taskId, BuildPublicNamespaceTask.DESCRIPTOR); 199 registerExtension(taskId, BuildPublicNamespaceTask.DESCRIPTOR);
192 registerExtension(taskId, BuildSourceExportClosureTask.DESCRIPTOR); 200 registerExtension(taskId, BuildSourceExportClosureTask.DESCRIPTOR);
193 registerExtension(taskId, BuildSourceImportExportClosureTask.DESCRIPTOR);
194 registerExtension(taskId, BuildTypeProviderTask.DESCRIPTOR); 201 registerExtension(taskId, BuildTypeProviderTask.DESCRIPTOR);
195 registerExtension(taskId, ComputeConstantDependenciesTask.DESCRIPTOR); 202 registerExtension(taskId, ComputeConstantDependenciesTask.DESCRIPTOR);
196 registerExtension(taskId, ComputeConstantValueTask.DESCRIPTOR); 203 registerExtension(taskId, ComputeConstantValueTask.DESCRIPTOR);
197 registerExtension( 204 registerExtension(
198 taskId, ComputeInferableStaticVariableDependenciesTask.DESCRIPTOR); 205 taskId, ComputeInferableStaticVariableDependenciesTask.DESCRIPTOR);
199 registerExtension(taskId, ComputeLibraryCycleTask.DESCRIPTOR); 206 registerExtension(taskId, ComputeLibraryCycleTask.DESCRIPTOR);
207 registerExtension(taskId, ComputeRequiredConstantsTask.DESCRIPTOR);
200 registerExtension(taskId, ContainingLibrariesTask.DESCRIPTOR); 208 registerExtension(taskId, ContainingLibrariesTask.DESCRIPTOR);
201 registerExtension(taskId, DartErrorsTask.DESCRIPTOR); 209 registerExtension(taskId, DartErrorsTask.DESCRIPTOR);
202 registerExtension(taskId, EvaluateUnitConstantsTask.DESCRIPTOR); 210 registerExtension(taskId, EvaluateUnitConstantsTask.DESCRIPTOR);
203 registerExtension(taskId, GatherUsedImportedElementsTask.DESCRIPTOR); 211 registerExtension(taskId, GatherUsedImportedElementsTask.DESCRIPTOR);
204 registerExtension(taskId, GatherUsedLocalElementsTask.DESCRIPTOR); 212 registerExtension(taskId, GatherUsedLocalElementsTask.DESCRIPTOR);
205 registerExtension(taskId, GenerateHintsTask.DESCRIPTOR); 213 registerExtension(taskId, GenerateHintsTask.DESCRIPTOR);
206 registerExtension(taskId, GenerateLintsTask.DESCRIPTOR); 214 registerExtension(taskId, GenerateLintsTask.DESCRIPTOR);
207 registerExtension(taskId, InferInstanceMembersInUnitTask.DESCRIPTOR); 215 registerExtension(taskId, InferInstanceMembersInUnitTask.DESCRIPTOR);
208 registerExtension(taskId, InferStaticVariableTypesInUnitTask.DESCRIPTOR); 216 registerExtension(taskId, InferStaticVariableTypesInUnitTask.DESCRIPTOR);
209 registerExtension(taskId, InferStaticVariableTypeTask.DESCRIPTOR); 217 registerExtension(taskId, InferStaticVariableTypeTask.DESCRIPTOR);
210 registerExtension(taskId, LibraryErrorsReadyTask.DESCRIPTOR); 218 registerExtension(taskId, LibraryErrorsReadyTask.DESCRIPTOR);
211 registerExtension(taskId, LibraryUnitErrorsTask.DESCRIPTOR); 219 registerExtension(taskId, LibraryUnitErrorsTask.DESCRIPTOR);
212 registerExtension(taskId, ParseDartTask.DESCRIPTOR); 220 registerExtension(taskId, ParseDartTask.DESCRIPTOR);
213 registerExtension(taskId, PartiallyResolveUnitReferencesTask.DESCRIPTOR); 221 registerExtension(taskId, PartiallyResolveUnitReferencesTask.DESCRIPTOR);
222 registerExtension(taskId, ReadyLibraryElement2Task.DESCRIPTOR);
223 registerExtension(taskId, ReadyLibraryElement5Task.DESCRIPTOR);
224 registerExtension(taskId, ReadyLibraryElement7Task.DESCRIPTOR);
225 registerExtension(taskId, ReadyResolvedUnitTask.DESCRIPTOR);
226 registerExtension(taskId, ResolveConstantExpressionTask.DESCRIPTOR);
227 registerExtension(taskId, ResolveDirectiveElementsTask.DESCRIPTOR);
228 registerExtension(taskId, ResolvedUnit7InLibraryClosureTask.DESCRIPTOR);
229 registerExtension(taskId, ResolvedUnit7InLibraryTask.DESCRIPTOR);
214 registerExtension(taskId, ResolveInstanceFieldsInUnitTask.DESCRIPTOR); 230 registerExtension(taskId, ResolveInstanceFieldsInUnitTask.DESCRIPTOR);
215 registerExtension(taskId, ResolveLibraryReferencesTask.DESCRIPTOR); 231 registerExtension(taskId, ResolveLibraryReferencesTask.DESCRIPTOR);
232 registerExtension(taskId, ResolveLibraryTask.DESCRIPTOR);
216 registerExtension(taskId, ResolveLibraryTypeNamesTask.DESCRIPTOR); 233 registerExtension(taskId, ResolveLibraryTypeNamesTask.DESCRIPTOR);
234 registerExtension(taskId, ResolveTopLevelLibraryTypeBoundsTask.DESCRIPTOR);
235 registerExtension(taskId, ResolveTopLevelUnitTypeBoundsTask.DESCRIPTOR);
217 registerExtension(taskId, ResolveUnitTask.DESCRIPTOR); 236 registerExtension(taskId, ResolveUnitTask.DESCRIPTOR);
218 registerExtension(taskId, ResolveUnitTypeNamesTask.DESCRIPTOR); 237 registerExtension(taskId, ResolveUnitTypeNamesTask.DESCRIPTOR);
219 registerExtension(taskId, ResolveVariableReferencesTask.DESCRIPTOR); 238 registerExtension(taskId, ResolveVariableReferencesTask.DESCRIPTOR);
220 registerExtension(taskId, ScanDartTask.DESCRIPTOR); 239 registerExtension(taskId, ScanDartTask.DESCRIPTOR);
221 registerExtension(taskId, StrongModeVerifyUnitTask.DESCRIPTOR); 240 registerExtension(taskId, StrongModeVerifyUnitTask.DESCRIPTOR);
222 registerExtension(taskId, VerifyUnitTask.DESCRIPTOR); 241 registerExtension(taskId, VerifyUnitTask.DESCRIPTOR);
223 // 242 //
224 // Register HTML tasks. 243 // Register HTML tasks.
225 // 244 //
226 registerExtension(taskId, DartScriptsTask.DESCRIPTOR); 245 registerExtension(taskId, DartScriptsTask.DESCRIPTOR);
227 registerExtension(taskId, HtmlErrorsTask.DESCRIPTOR); 246 registerExtension(taskId, HtmlErrorsTask.DESCRIPTOR);
228 registerExtension(taskId, ParseHtmlTask.DESCRIPTOR); 247 registerExtension(taskId, ParseHtmlTask.DESCRIPTOR);
248 //
249 // Register YAML tasks.
250 //
251 registerExtension(taskId, ParseYamlTask.DESCRIPTOR);
229 } 252 }
230 253
231 void _registerWorkManagerFactoryExtensions( 254 void _registerWorkManagerFactoryExtensions(
232 RegisterExtension registerExtension) { 255 RegisterExtension registerExtension) {
233 String taskId = WORK_MANAGER_EXTENSION_POINT_ID; 256 String taskId = WORK_MANAGER_EXTENSION_POINT_ID;
234 registerExtension(taskId, 257 registerExtension(taskId,
235 (InternalAnalysisContext context) => new DartWorkManager(context)); 258 (InternalAnalysisContext context) => new DartWorkManager(context));
236 registerExtension(taskId, 259 registerExtension(taskId,
237 (InternalAnalysisContext context) => new HtmlWorkManager(context)); 260 (InternalAnalysisContext context) => new HtmlWorkManager(context));
238 } 261 registerExtension(taskId,
239 262 (InternalAnalysisContext context) => new OptionsWorkManager(context));
240 /**
241 * Validate the given extension by throwing an [ExtensionError] if it is not
242 * a [ListResultDescriptor] of [AnalysisError]s.
243 */
244 void _validateAnalysisErrorListResultDescriptor(Object extension) {
245 if (extension is! ListResultDescriptor<AnalysisError>) {
246 String id = taskExtensionPoint.uniqueIdentifier;
247 throw new ExtensionError(
248 'Extensions to $id must be a ListResultDescriptor<AnalysisError>');
249 }
250 }
251
252 /**
253 * Validate the given extension by throwing an [ExtensionError] if it is not
254 * a [TaskDescriptor].
255 */
256 void _validateTaskExtension(Object extension) {
257 if (extension is! TaskDescriptor) {
258 String id = taskExtensionPoint.uniqueIdentifier;
259 throw new ExtensionError('Extensions to $id must be a TaskDescriptor');
260 }
261 }
262
263 /**
264 * Validate the given extension by throwing an [ExtensionError] if it is not
265 * a [WorkManagerFactory].
266 */
267 void _validateWorkManagerFactoryExtension(Object extension) {
268 if (extension is! WorkManagerFactory) {
269 String id = taskExtensionPoint.uniqueIdentifier;
270 throw new ExtensionError(
271 'Extensions to $id must be a WorkManagerFactory');
272 }
273 } 263 }
274 } 264 }
275 265
276 /** 266 /**
277 * Annotation describing the relationship between a getter in [EnginePlugin] 267 * Annotation describing the relationship between a getter in [EnginePlugin]
278 * and the associated identifier (in '../../plugin/task.dart') which can be 268 * and the associated identifier (in '../../plugin/task.dart') which can be
279 * passed to the extension manager to populate it. 269 * passed to the extension manager to populate it.
280 * 270 *
281 * This annotation is not used at runtime; it is used to aid in static analysis 271 * This annotation is not used at runtime; it is used to aid in static analysis
282 * of the task model during development. 272 * of the task model during development.
283 */ 273 */
284 class ExtensionPointId { 274 class ExtensionPointId {
285 final String extensionPointId; 275 final String extensionPointId;
286 276
287 const ExtensionPointId(this.extensionPointId); 277 const ExtensionPointId(this.extensionPointId);
288 } 278 }
OLDNEW
« no previous file with comments | « packages/analyzer/lib/src/plugin/command_line_plugin.dart ('k') | packages/analyzer/lib/src/plugin/options_plugin.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698