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

Side by Side Diff: pkg/analyzer/test/src/task/driver_test.dart

Issue 1121963002: Record dependencies and invalidate results. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merge and fixes for review comments. Created 5 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer/test/src/task/dart_test.dart ('k') | no next file » | 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 // 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 test.src.task.driver_test; 5 library test.src.task.driver_test;
6 6
7 import 'dart:async';
8 import 'dart:collection';
9
10 import 'package:analyzer/src/cancelable_future.dart';
11 import 'package:analyzer/src/context/cache.dart'; 7 import 'package:analyzer/src/context/cache.dart';
12 import 'package:analyzer/src/generated/ast.dart'; 8 import 'package:analyzer/src/context/context.dart';
13 import 'package:analyzer/src/generated/constant.dart'; 9 import 'package:analyzer/src/generated/engine.dart'
14 import 'package:analyzer/src/generated/element.dart'; 10 hide AnalysisContextImpl, AnalysisTask;
15 import 'package:analyzer/src/generated/engine.dart' hide AnalysisTask;
16 import 'package:analyzer/src/generated/error.dart';
17 import 'package:analyzer/src/generated/html.dart';
18 import 'package:analyzer/src/generated/java_engine.dart'; 11 import 'package:analyzer/src/generated/java_engine.dart';
19 import 'package:analyzer/src/generated/resolver.dart';
20 import 'package:analyzer/src/generated/source.dart';
21 import 'package:analyzer/src/task/driver.dart'; 12 import 'package:analyzer/src/task/driver.dart';
22 import 'package:analyzer/src/task/inputs.dart'; 13 import 'package:analyzer/src/task/inputs.dart';
23 import 'package:analyzer/src/task/manager.dart'; 14 import 'package:analyzer/src/task/manager.dart';
24 import 'package:analyzer/task/model.dart'; 15 import 'package:analyzer/task/model.dart';
25 import 'package:unittest/unittest.dart'; 16 import 'package:unittest/unittest.dart';
26 17
27 import '../../generated/resolver_test.dart';
28 import '../../generated/test_support.dart'; 18 import '../../generated/test_support.dart';
29 import '../../reflective_tests.dart'; 19 import '../../reflective_tests.dart';
20 import '../context/abstract_context_test.dart';
30 import 'test_support.dart'; 21 import 'test_support.dart';
31 22
32 main() { 23 main() {
33 groupSep = ' | '; 24 groupSep = ' | ';
34 runReflectiveTests(AnalysisDriverTest); 25 runReflectiveTests(AnalysisDriverTest);
35 runReflectiveTests(WorkOrderTest); 26 runReflectiveTests(WorkOrderTest);
36 runReflectiveTests(WorkItemTest); 27 runReflectiveTests(WorkItemTest);
37 } 28 }
38 29
39 @reflectiveTest 30 @reflectiveTest
40 class AnalysisDriverTest extends EngineTestCase { 31 class AnalysisDriverTest extends AbstractContextTest {
41 TaskManager manager; 32 AnalysisContextImpl createAnalysisContext() {
42 _TestContext context; 33 return new _TestContext();
43 AnalysisDriver driver;
44
45 void setUp() {
46 manager = new TaskManager();
47 context = new _TestContext();
48 driver = new AnalysisDriver(manager, context);
49 } 34 }
50 35
51 test_computeResult() { 36 test_computeResult() {
52 AnalysisTarget target = new TestSource(); 37 AnalysisTarget target = new TestSource();
53 ResultDescriptor result = new ResultDescriptor('result', null); 38 ResultDescriptor result = new ResultDescriptor('result', null);
54 TestAnalysisTask task; 39 TestAnalysisTask task;
55 TaskDescriptor descriptor = new TaskDescriptor( 40 TaskDescriptor descriptor = new TaskDescriptor(
56 'task', (context, target) => task, (target) => {}, [result]); 41 'task', (context, target) => task, (target) => {}, [result]);
57 task = new TestAnalysisTask(context, target, descriptor: descriptor); 42 task = new TestAnalysisTask(context, target, descriptor: descriptor);
58 manager.addTaskDescriptor(descriptor); 43 taskManager.addTaskDescriptor(descriptor);
59 44
60 driver.computeResult(target, result); 45 analysisDriver.computeResult(target, result);
61 expect(context.getCacheEntry(target).getValue(result), 1); 46 expect(context.getCacheEntry(target).getValue(result), 1);
62 } 47 }
63 48
64 test_create() { 49 test_create() {
65 expect(driver, isNotNull); 50 expect(analysisDriver, isNotNull);
66 expect(driver.context, context); 51 expect(analysisDriver.context, context);
67 expect(driver.currentWorkOrder, isNull); 52 expect(analysisDriver.currentWorkOrder, isNull);
68 expect(driver.taskManager, manager); 53 expect(analysisDriver.taskManager, taskManager);
69 } 54 }
70 55
71 test_createNextWorkOrder_complete() { 56 test_createNextWorkOrder_complete() {
72 AnalysisTarget priorityTarget = new TestSource(); 57 AnalysisTarget priorityTarget = new TestSource();
73 AnalysisTarget normalTarget = new TestSource(); 58 AnalysisTarget normalTarget = new TestSource();
74 ResultDescriptor result = new ResultDescriptor('result', null); 59 ResultDescriptor result = new ResultDescriptor('result', null);
75 TaskDescriptor descriptor = new TaskDescriptor('task', 60 TaskDescriptor descriptor = new TaskDescriptor('task',
76 (context, target) => new TestAnalysisTask(context, target), 61 (context, target) => new TestAnalysisTask(context, target),
77 (target) => {}, [result]); 62 (target) => {}, [result]);
78 manager.addGeneralResult(result); 63 taskManager.addGeneralResult(result);
79 manager.addTaskDescriptor(descriptor); 64 taskManager.addTaskDescriptor(descriptor);
80 context.priorityTargets.add(priorityTarget); 65 context.priorityTargets.add(priorityTarget);
81 context.getCacheEntry(priorityTarget).setValue(result, ''); 66 context.getCacheEntry(priorityTarget).setValue(
67 result, '', TargetedResult.EMPTY_LIST);
82 context.explicitTargets.add(normalTarget); 68 context.explicitTargets.add(normalTarget);
83 context.getCacheEntry(priorityTarget).setValue(result, ''); 69 context.getCacheEntry(priorityTarget).setValue(
70 result, '', TargetedResult.EMPTY_LIST);
84 71
85 expect(driver.createNextWorkOrder(), isNull); 72 expect(analysisDriver.createNextWorkOrder(), isNull);
86 } 73 }
87 74
88 test_createNextWorkOrder_normalTarget() { 75 test_createNextWorkOrder_normalTarget() {
89 AnalysisTarget priorityTarget = new TestSource(); 76 AnalysisTarget priorityTarget = new TestSource();
90 AnalysisTarget normalTarget = new TestSource(); 77 AnalysisTarget normalTarget = new TestSource();
91 ResultDescriptor result = new ResultDescriptor('result', null); 78 ResultDescriptor result = new ResultDescriptor('result', null);
92 TaskDescriptor descriptor = new TaskDescriptor('task', 79 TaskDescriptor descriptor = new TaskDescriptor('task',
93 (context, target) => new TestAnalysisTask(context, target), 80 (context, target) => new TestAnalysisTask(context, target),
94 (target) => {}, [result]); 81 (target) => {}, [result]);
95 manager.addGeneralResult(result); 82 taskManager.addGeneralResult(result);
96 manager.addTaskDescriptor(descriptor); 83 taskManager.addTaskDescriptor(descriptor);
97 context.priorityTargets.add(priorityTarget); 84 context.priorityTargets.add(priorityTarget);
98 context.getCacheEntry(priorityTarget).setValue(result, ''); 85 context.getCacheEntry(priorityTarget).setValue(
86 result, '', TargetedResult.EMPTY_LIST);
99 context.explicitTargets.add(normalTarget); 87 context.explicitTargets.add(normalTarget);
100 context.getCacheEntry(normalTarget).setState(result, CacheState.INVALID); 88 context.getCacheEntry(normalTarget).setState(result, CacheState.INVALID);
101 89
102 WorkOrder workOrder = driver.createNextWorkOrder(); 90 WorkOrder workOrder = analysisDriver.createNextWorkOrder();
103 expect(workOrder, isNotNull); 91 expect(workOrder, isNotNull);
104 expect(workOrder.moveNext(), true); 92 expect(workOrder.moveNext(), true);
105 expect(workOrder.currentItem.target, normalTarget); 93 expect(workOrder.currentItem.target, normalTarget);
106 } 94 }
107 95
108 test_createNextWorkOrder_noTargets() { 96 test_createNextWorkOrder_noTargets() {
109 ResultDescriptor result = new ResultDescriptor('result', null); 97 ResultDescriptor result = new ResultDescriptor('result', null);
110 TaskDescriptor descriptor = new TaskDescriptor('task', 98 TaskDescriptor descriptor = new TaskDescriptor('task',
111 (context, target) => new TestAnalysisTask(context, target), 99 (context, target) => new TestAnalysisTask(context, target),
112 (target) => {}, [result]); 100 (target) => {}, [result]);
113 manager.addGeneralResult(result); 101 taskManager.addGeneralResult(result);
114 manager.addTaskDescriptor(descriptor); 102 taskManager.addTaskDescriptor(descriptor);
115 103
116 expect(driver.createNextWorkOrder(), isNull); 104 expect(analysisDriver.createNextWorkOrder(), isNull);
117 } 105 }
118 106
119 test_createNextWorkOrder_priorityTarget() { 107 test_createNextWorkOrder_priorityTarget() {
120 AnalysisTarget priorityTarget = new TestSource(); 108 AnalysisTarget priorityTarget = new TestSource();
121 AnalysisTarget normalTarget = new TestSource(); 109 AnalysisTarget normalTarget = new TestSource();
122 ResultDescriptor result = new ResultDescriptor('result', null); 110 ResultDescriptor result = new ResultDescriptor('result', null);
123 TaskDescriptor descriptor = new TaskDescriptor('task', 111 TaskDescriptor descriptor = new TaskDescriptor('task',
124 (context, target) => new TestAnalysisTask(context, target), 112 (context, target) => new TestAnalysisTask(context, target),
125 (target) => {}, [result]); 113 (target) => {}, [result]);
126 manager.addGeneralResult(result); 114 taskManager.addGeneralResult(result);
127 manager.addTaskDescriptor(descriptor); 115 taskManager.addTaskDescriptor(descriptor);
128 context.priorityTargets.add(priorityTarget); 116 context.priorityTargets.add(priorityTarget);
129 context.getCacheEntry(priorityTarget).setState(result, CacheState.INVALID); 117 context.getCacheEntry(priorityTarget).setState(result, CacheState.INVALID);
130 context.explicitTargets.add(normalTarget); 118 context.explicitTargets.add(normalTarget);
131 context.getCacheEntry(normalTarget).setState(result, CacheState.INVALID); 119 context.getCacheEntry(normalTarget).setState(result, CacheState.INVALID);
132 120
133 WorkOrder workOrder = driver.createNextWorkOrder(); 121 WorkOrder workOrder = analysisDriver.createNextWorkOrder();
134 expect(workOrder, isNotNull); 122 expect(workOrder, isNotNull);
135 expect(workOrder.moveNext(), true); 123 expect(workOrder.moveNext(), true);
136 expect(workOrder.currentItem.target, priorityTarget); 124 expect(workOrder.currentItem.target, priorityTarget);
137 } 125 }
138 126
139 test_createWorkOrderForResult_error() { 127 test_createWorkOrderForResult_error() {
140 AnalysisTarget target = new TestSource(); 128 AnalysisTarget target = new TestSource();
141 ResultDescriptor result = new ResultDescriptor('result', null); 129 ResultDescriptor result = new ResultDescriptor('result', null);
142 CaughtException exception = new CaughtException(null, null); 130 CaughtException exception = new CaughtException(null, null);
143 context.getCacheEntry(target).setErrorState( 131 context.getCacheEntry(target).setErrorState(
144 exception, <ResultDescriptor>[result]); 132 exception, <ResultDescriptor>[result]);
145 133
146 expect(driver.createWorkOrderForResult(target, result), isNull); 134 expect(analysisDriver.createWorkOrderForResult(target, result), isNull);
147 } 135 }
148 136
149 test_createWorkOrderForResult_inProcess() { 137 test_createWorkOrderForResult_inProcess() {
150 AnalysisTarget target = new TestSource(); 138 AnalysisTarget target = new TestSource();
151 ResultDescriptor result = new ResultDescriptor('result', null); 139 ResultDescriptor result = new ResultDescriptor('result', null);
152 context.getCacheEntry(target).setState(result, CacheState.IN_PROCESS); 140 context.getCacheEntry(target).setState(result, CacheState.IN_PROCESS);
153 141
154 expect(driver.createWorkOrderForResult(target, result), isNull); 142 expect(analysisDriver.createWorkOrderForResult(target, result), isNull);
155 } 143 }
156 144
157 test_createWorkOrderForResult_invalid() { 145 test_createWorkOrderForResult_invalid() {
158 AnalysisTarget target = new TestSource(); 146 AnalysisTarget target = new TestSource();
159 ResultDescriptor result = new ResultDescriptor('result', null); 147 ResultDescriptor result = new ResultDescriptor('result', null);
160 TaskDescriptor descriptor = new TaskDescriptor('task', 148 TaskDescriptor descriptor = new TaskDescriptor('task',
161 (context, target) => new TestAnalysisTask(context, target), 149 (context, target) => new TestAnalysisTask(context, target),
162 (target) => {}, [result]); 150 (target) => {}, [result]);
163 manager.addTaskDescriptor(descriptor); 151 taskManager.addTaskDescriptor(descriptor);
164 context.getCacheEntry(target).setState(result, CacheState.INVALID); 152 context.getCacheEntry(target).setState(result, CacheState.INVALID);
165 153
166 WorkOrder workOrder = driver.createWorkOrderForResult(target, result); 154 WorkOrder workOrder =
155 analysisDriver.createWorkOrderForResult(target, result);
167 expect(workOrder, isNotNull); 156 expect(workOrder, isNotNull);
168 } 157 }
169 158
170 test_createWorkOrderForResult_valid() { 159 test_createWorkOrderForResult_valid() {
171 AnalysisTarget target = new TestSource(); 160 AnalysisTarget target = new TestSource();
172 ResultDescriptor result = new ResultDescriptor('result', null); 161 ResultDescriptor result = new ResultDescriptor('result', null);
173 context.getCacheEntry(target).setValue(result, ''); 162 context.getCacheEntry(target).setValue(
163 result, '', TargetedResult.EMPTY_LIST);
174 164
175 expect(driver.createWorkOrderForResult(target, result), isNull); 165 expect(analysisDriver.createWorkOrderForResult(target, result), isNull);
176 } 166 }
177 167
178 test_createWorkOrderForTarget_complete_generalTarget_generalResult() { 168 test_createWorkOrderForTarget_complete_generalTarget_generalResult() {
179 _createWorkOrderForTarget(true, false, false); 169 _createWorkOrderForTarget(true, false, false);
180 } 170 }
181 171
182 test_createWorkOrderForTarget_complete_generalTarget_priorityResult() { 172 test_createWorkOrderForTarget_complete_generalTarget_priorityResult() {
183 _createWorkOrderForTarget(true, false, true); 173 _createWorkOrderForTarget(true, false, true);
184 } 174 }
185 175
(...skipping 21 matching lines...) Expand all
207 _createWorkOrderForTarget(false, true, true); 197 _createWorkOrderForTarget(false, true, true);
208 } 198 }
209 199
210 test_performAnalysisTask() { 200 test_performAnalysisTask() {
211 AnalysisTarget target = new TestSource(); 201 AnalysisTarget target = new TestSource();
212 ResultDescriptor result = new ResultDescriptor('result', null); 202 ResultDescriptor result = new ResultDescriptor('result', null);
213 TestAnalysisTask task; 203 TestAnalysisTask task;
214 TaskDescriptor descriptor = new TaskDescriptor( 204 TaskDescriptor descriptor = new TaskDescriptor(
215 'task', (context, target) => task, (target) => {}, [result]); 205 'task', (context, target) => task, (target) => {}, [result]);
216 task = new TestAnalysisTask(context, target, descriptor: descriptor); 206 task = new TestAnalysisTask(context, target, descriptor: descriptor);
217 manager.addTaskDescriptor(descriptor); 207 taskManager.addTaskDescriptor(descriptor);
218 manager.addGeneralResult(result); 208 taskManager.addGeneralResult(result);
219 context.priorityTargets.add(target); 209 context.priorityTargets.add(target);
220 210
221 expect(driver.performAnalysisTask(), true); 211 expect(analysisDriver.performAnalysisTask(), true);
222 expect(driver.performAnalysisTask(), true); 212 expect(analysisDriver.performAnalysisTask(), true);
223 expect(driver.performAnalysisTask(), false); 213 expect(analysisDriver.performAnalysisTask(), false);
224 } 214 }
225 215
226 test_performAnalysisTask_infiniteLoop() { 216 test_performAnalysisTask_infiniteLoop() {
227 AnalysisTarget target = new TestSource(); 217 AnalysisTarget target = new TestSource();
228 ResultDescriptor resultA = new ResultDescriptor('resultA', -1); 218 ResultDescriptor resultA = new ResultDescriptor('resultA', -1);
229 ResultDescriptor resultB = new ResultDescriptor('resultB', -2); 219 ResultDescriptor resultB = new ResultDescriptor('resultB', -2);
230 // configure tasks 220 // configure tasks
231 TestAnalysisTask task1; 221 TestAnalysisTask task1;
232 TestAnalysisTask task2; 222 TestAnalysisTask task2;
233 TaskDescriptor descriptor1 = new TaskDescriptor('task1', 223 TaskDescriptor descriptor1 = new TaskDescriptor('task1',
234 (context, target) => task1, (target) => { 224 (context, target) => task1, (target) => {
235 'inputB': new SimpleTaskInput<int>(target, resultB) 225 'inputB': new SimpleTaskInput<int>(target, resultB)
236 }, [resultA]); 226 }, [resultA]);
237 TaskDescriptor descriptor2 = new TaskDescriptor('task2', 227 TaskDescriptor descriptor2 = new TaskDescriptor('task2',
238 (context, target) => task2, (target) => { 228 (context, target) => task2, (target) => {
239 'inputA': new SimpleTaskInput<int>(target, resultA) 229 'inputA': new SimpleTaskInput<int>(target, resultA)
240 }, [resultB]); 230 }, [resultB]);
241 task1 = new TestAnalysisTask(context, target, descriptor: descriptor1); 231 task1 = new TestAnalysisTask(context, target, descriptor: descriptor1);
242 task2 = new TestAnalysisTask(context, target, descriptor: descriptor2); 232 task2 = new TestAnalysisTask(context, target, descriptor: descriptor2);
243 manager.addTaskDescriptor(descriptor1); 233 taskManager.addTaskDescriptor(descriptor1);
244 manager.addTaskDescriptor(descriptor2); 234 taskManager.addTaskDescriptor(descriptor2);
245 context.explicitTargets.add(target); 235 context.explicitTargets.add(target);
246 manager.addGeneralResult(resultB); 236 taskManager.addGeneralResult(resultB);
247 // prepare work order 237 // prepare work order
248 expect(driver.performAnalysisTask(), true); 238 expect(analysisDriver.performAnalysisTask(), true);
249 expect(driver.performAnalysisTask(), true); 239 expect(analysisDriver.performAnalysisTask(), true);
250 CaughtException exception = context.getCacheEntry(target).exception; 240 CaughtException exception = context.getCacheEntry(target).exception;
251 expect(exception, isNotNull); 241 expect(exception, isNotNull);
252 expect(exception.exception, new isInstanceOf<InfiniteTaskLoopException>()); 242 expect(exception.exception, new isInstanceOf<InfiniteTaskLoopException>());
253 } 243 }
254 244
255 test_performAnalysisTask_inputsFirst() { 245 test_performAnalysisTask_inputsFirst() {
256 AnalysisTarget target = new TestSource(); 246 AnalysisTarget target = new TestSource();
257 ResultDescriptor resultA = new ResultDescriptor('resultA', -1); 247 ResultDescriptor resultA = new ResultDescriptor('resultA', -1);
258 ResultDescriptor resultB = new ResultDescriptor('resultB', -2); 248 ResultDescriptor resultB = new ResultDescriptor('resultB', -2);
259 // configure tasks 249 // configure tasks
260 TestAnalysisTask task1; 250 TestAnalysisTask task1;
261 TestAnalysisTask task2; 251 TestAnalysisTask task2;
262 TaskDescriptor descriptor1 = new TaskDescriptor( 252 TaskDescriptor descriptor1 = new TaskDescriptor(
263 'task1', (context, target) => task1, (target) => {}, [resultA]); 253 'task1', (context, target) => task1, (target) => {}, [resultA]);
264 TaskDescriptor descriptor2 = new TaskDescriptor('task2', 254 TaskDescriptor descriptor2 = new TaskDescriptor('task2',
265 (context, target) => task2, (target) => { 255 (context, target) => task2, (target) => {
266 'inputA': new SimpleTaskInput<int>(target, resultA) 256 'inputA': new SimpleTaskInput<int>(target, resultA)
267 }, [resultB]); 257 }, [resultB]);
268 task1 = new TestAnalysisTask(context, target, 258 task1 = new TestAnalysisTask(context, target,
269 descriptor: descriptor1, results: [resultA], value: 10); 259 descriptor: descriptor1, results: [resultA], value: 10);
270 task2 = new TestAnalysisTask(context, target, 260 task2 = new TestAnalysisTask(context, target,
271 descriptor: descriptor2, value: 20); 261 descriptor: descriptor2, value: 20);
272 manager.addTaskDescriptor(descriptor1); 262 taskManager.addTaskDescriptor(descriptor1);
273 manager.addTaskDescriptor(descriptor2); 263 taskManager.addTaskDescriptor(descriptor2);
274 context.explicitTargets.add(target); 264 context.explicitTargets.add(target);
275 manager.addGeneralResult(resultB); 265 taskManager.addGeneralResult(resultB);
276 // prepare work order 266 // prepare work order
277 expect(driver.performAnalysisTask(), true); 267 expect(analysisDriver.performAnalysisTask(), true);
278 expect(context.getCacheEntry(target).getValue(resultA), -1); 268 expect(context.getCacheEntry(target).getValue(resultA), -1);
279 expect(context.getCacheEntry(target).getValue(resultB), -2); 269 expect(context.getCacheEntry(target).getValue(resultB), -2);
280 // compute resultA 270 // compute resultA
281 expect(driver.performAnalysisTask(), true); 271 expect(analysisDriver.performAnalysisTask(), true);
282 expect(context.getCacheEntry(target).getValue(resultA), 10); 272 expect(context.getCacheEntry(target).getValue(resultA), 10);
283 expect(context.getCacheEntry(target).getValue(resultB), -2); 273 expect(context.getCacheEntry(target).getValue(resultB), -2);
284 // compute resultB 274 // compute resultB
285 expect(driver.performAnalysisTask(), true); 275 expect(analysisDriver.performAnalysisTask(), true);
286 expect(context.getCacheEntry(target).getValue(resultA), 10); 276 expect(context.getCacheEntry(target).getValue(resultA), 10);
287 expect(context.getCacheEntry(target).getValue(resultB), 20); 277 expect(context.getCacheEntry(target).getValue(resultB), 20);
288 // done 278 // done
289 expect(driver.performAnalysisTask(), false); 279 expect(analysisDriver.performAnalysisTask(), false);
290 } 280 }
291 281
292 test_performWorkItem_exceptionInTask() { 282 test_performWorkItem_exceptionInTask() {
293 AnalysisTarget target = new TestSource(); 283 AnalysisTarget target = new TestSource();
294 ResultDescriptor result = new ResultDescriptor('result', null); 284 ResultDescriptor result = new ResultDescriptor('result', null);
295 CaughtException exception = 285 CaughtException exception =
296 new CaughtException(new AnalysisException(), null); 286 new CaughtException(new AnalysisException(), null);
297 TestAnalysisTask task; 287 TestAnalysisTask task;
298 TaskDescriptor descriptor = new TaskDescriptor( 288 TaskDescriptor descriptor = new TaskDescriptor(
299 'task', (context, target) => task, (target) => {}, [result]); 289 'task', (context, target) => task, (target) => {}, [result]);
300 task = new TestAnalysisTask(context, target, 290 task = new TestAnalysisTask(context, target,
301 descriptor: descriptor, exception: exception); 291 descriptor: descriptor, exception: exception);
302 WorkItem item = new WorkItem(context, target, descriptor); 292 WorkItem item = new WorkItem(context, target, descriptor);
303 293
304 driver.performWorkItem(item); 294 analysisDriver.performWorkItem(item);
305 CacheEntry targetEntry = context.getCacheEntry(item.target); 295 CacheEntry targetEntry = context.getCacheEntry(item.target);
306 expect(targetEntry.exception, exception); 296 expect(targetEntry.exception, exception);
307 expect(targetEntry.getState(result), CacheState.ERROR); 297 expect(targetEntry.getState(result), CacheState.ERROR);
308 } 298 }
309 299
310 test_performWorkItem_noException() { 300 test_performWorkItem_noException() {
311 AnalysisTarget target = new TestSource(); 301 AnalysisTarget target = new TestSource();
312 ResultDescriptor result = new ResultDescriptor('result', null); 302 ResultDescriptor result = new ResultDescriptor('result', null);
313 TestAnalysisTask task; 303 TestAnalysisTask task;
314 TaskDescriptor descriptor = new TaskDescriptor( 304 TaskDescriptor descriptor = new TaskDescriptor(
315 'task', (context, target) => task, (target) => {}, [result]); 305 'task', (context, target) => task, (target) => {}, [result]);
316 task = new TestAnalysisTask(context, target, descriptor: descriptor); 306 task = new TestAnalysisTask(context, target, descriptor: descriptor);
317 WorkItem item = new WorkItem(context, target, descriptor); 307 WorkItem item = new WorkItem(context, target, descriptor);
318 308
319 driver.performWorkItem(item); 309 analysisDriver.performWorkItem(item);
320 CacheEntry targetEntry = context.getCacheEntry(item.target); 310 CacheEntry targetEntry = context.getCacheEntry(item.target);
321 expect(targetEntry.exception, isNull); 311 expect(targetEntry.exception, isNull);
322 expect(targetEntry.getState(result), CacheState.VALID); 312 expect(targetEntry.getState(result), CacheState.VALID);
323 } 313 }
324 314
325 test_performWorkItem_preExistingException() { 315 test_performWorkItem_preExistingException() {
326 AnalysisTarget target = new TestSource(); 316 AnalysisTarget target = new TestSource();
327 ResultDescriptor result = new ResultDescriptor('result', null); 317 ResultDescriptor result = new ResultDescriptor('result', null);
328 TaskDescriptor descriptor = new TaskDescriptor('task', 318 TaskDescriptor descriptor = new TaskDescriptor('task',
329 (context, target) => new TestAnalysisTask(context, target), 319 (context, target) => new TestAnalysisTask(context, target),
330 (target) => {}, [result]); 320 (target) => {}, [result]);
331 CaughtException exception = 321 CaughtException exception =
332 new CaughtException(new AnalysisException(), null); 322 new CaughtException(new AnalysisException(), null);
333 WorkItem item = new WorkItem(context, target, descriptor); 323 WorkItem item = new WorkItem(context, target, descriptor);
334 item.exception = exception; 324 item.exception = exception;
335 325
336 driver.performWorkItem(item); 326 analysisDriver.performWorkItem(item);
337 CacheEntry targetEntry = context.getCacheEntry(item.target); 327 CacheEntry targetEntry = context.getCacheEntry(item.target);
338 expect(targetEntry.exception, exception); 328 expect(targetEntry.exception, exception);
339 expect(targetEntry.getState(result), CacheState.ERROR); 329 expect(targetEntry.getState(result), CacheState.ERROR);
340 } 330 }
341 331
342 test_reset() { 332 test_reset() {
343 ResultDescriptor inputResult = new ResultDescriptor('input', null); 333 ResultDescriptor inputResult = new ResultDescriptor('input', null);
344 TaskDescriptor descriptor = new TaskDescriptor('task', 334 TaskDescriptor descriptor = new TaskDescriptor('task',
345 (context, target) => new TestAnalysisTask(context, target), 335 (context, target) => new TestAnalysisTask(context, target),
346 (target) => {'one': inputResult.of(target)}, 336 (target) => {'one': inputResult.of(target)},
347 [new ResultDescriptor('output', null)]); 337 [new ResultDescriptor('output', null)]);
348 driver.currentWorkOrder = 338 analysisDriver.currentWorkOrder =
349 new WorkOrder(manager, new WorkItem(null, null, descriptor)); 339 new WorkOrder(taskManager, new WorkItem(null, null, descriptor));
350 340
351 driver.reset(); 341 analysisDriver.reset();
352 expect(driver.currentWorkOrder, isNull); 342 expect(analysisDriver.currentWorkOrder, isNull);
353 } 343 }
354 344
355 /** 345 /**
356 * [complete] is `true` if the value of the result has already been computed. 346 * [complete] is `true` if the value of the result has already been computed.
357 * [priorityTarget] is `true` if the target is in the list of priority 347 * [priorityTarget] is `true` if the target is in the list of priority
358 * targets. 348 * targets.
359 * [priorityResult] is `true` if the result should only be computed for 349 * [priorityResult] is `true` if the result should only be computed for
360 * priority targets. 350 * priority targets.
361 */ 351 */
362 _createWorkOrderForTarget( 352 _createWorkOrderForTarget(
363 bool complete, bool priorityTarget, bool priorityResult) { 353 bool complete, bool priorityTarget, bool priorityResult) {
364 AnalysisTarget target = new TestSource(); 354 AnalysisTarget target = new TestSource();
365 ResultDescriptor result = new ResultDescriptor('result', null); 355 ResultDescriptor result = new ResultDescriptor('result', null);
366 TaskDescriptor descriptor = new TaskDescriptor('task', 356 TaskDescriptor descriptor = new TaskDescriptor('task',
367 (context, target) => new TestAnalysisTask(context, target), 357 (context, target) => new TestAnalysisTask(context, target),
368 (target) => {}, [result]); 358 (target) => {}, [result]);
369 if (priorityResult) { 359 if (priorityResult) {
370 manager.addPriorityResult(result); 360 taskManager.addPriorityResult(result);
371 } else { 361 } else {
372 manager.addGeneralResult(result); 362 taskManager.addGeneralResult(result);
373 } 363 }
374 manager.addTaskDescriptor(descriptor); 364 taskManager.addTaskDescriptor(descriptor);
375 if (priorityTarget) { 365 if (priorityTarget) {
376 context.priorityTargets.add(target); 366 context.priorityTargets.add(target);
377 } else { 367 } else {
378 context.explicitTargets.add(target); 368 context.explicitTargets.add(target);
379 } 369 }
380 if (complete) { 370 if (complete) {
381 context.getCacheEntry(target).setValue(result, ''); 371 context.getCacheEntry(target).setValue(
372 result, '', TargetedResult.EMPTY_LIST);
382 } else { 373 } else {
383 context.getCacheEntry(target).setState(result, CacheState.INVALID); 374 context.getCacheEntry(target).setState(result, CacheState.INVALID);
384 } 375 }
385 376
386 WorkOrder workOrder = 377 WorkOrder workOrder =
387 driver.createWorkOrderForTarget(target, priorityTarget); 378 analysisDriver.createWorkOrderForTarget(target, priorityTarget);
388 if (complete) { 379 if (complete) {
389 expect(workOrder, isNull); 380 expect(workOrder, isNull);
390 } else if (priorityResult) { 381 } else if (priorityResult) {
391 expect(workOrder, priorityTarget ? isNotNull : isNull); 382 expect(workOrder, priorityTarget ? isNotNull : isNull);
392 } else { 383 } else {
393 expect(workOrder, isNotNull); 384 expect(workOrder, isNotNull);
394 } 385 }
395 } 386 }
396 } 387 }
397 388
398 @reflectiveTest 389 @reflectiveTest
399 class WorkItemTest extends EngineTestCase { 390 class WorkItemTest extends EngineTestCase {
400 test_buildTask_complete() { 391 test_buildTask_complete() {
401 AnalysisContext context = new _TestContext(); 392 AnalysisContext context = new AnalysisContextImpl();
402 AnalysisTarget target = new TestSource(); 393 AnalysisTarget target = new TestSource();
403 TaskDescriptor descriptor = new TaskDescriptor('task', 394 TaskDescriptor descriptor = new TaskDescriptor('task',
404 (context, target) => new TestAnalysisTask(context, target), 395 (context, target) => new TestAnalysisTask(context, target),
405 (target) => {}, [new ResultDescriptor('output', null)]); 396 (target) => {}, [new ResultDescriptor('output', null)]);
406 WorkItem item = new WorkItem(context, target, descriptor); 397 WorkItem item = new WorkItem(context, target, descriptor);
407 AnalysisTask task = item.buildTask(); 398 AnalysisTask task = item.buildTask();
408 expect(task, isNotNull); 399 expect(task, isNotNull);
409 } 400 }
410 401
411 test_buildTask_incomplete() { 402 test_buildTask_incomplete() {
412 AnalysisContext context = new _TestContext(); 403 AnalysisContext context = new AnalysisContextImpl();
413 AnalysisTarget target = new TestSource(); 404 AnalysisTarget target = new TestSource();
414 ResultDescriptor inputResult = new ResultDescriptor('input', null); 405 ResultDescriptor inputResult = new ResultDescriptor('input', null);
415 List<ResultDescriptor> outputResults = 406 List<ResultDescriptor> outputResults =
416 <ResultDescriptor>[new ResultDescriptor('output', null)]; 407 <ResultDescriptor>[new ResultDescriptor('output', null)];
417 TaskDescriptor descriptor = new TaskDescriptor('task', (context, target) => 408 TaskDescriptor descriptor = new TaskDescriptor('task', (context, target) =>
418 new TestAnalysisTask(context, target, results: outputResults), 409 new TestAnalysisTask(context, target, results: outputResults),
419 (target) => {'one': inputResult.of(target)}, outputResults); 410 (target) => {'one': inputResult.of(target)}, outputResults);
420 WorkItem item = new WorkItem(context, target, descriptor); 411 WorkItem item = new WorkItem(context, target, descriptor);
421 expect(() => item.buildTask(), throwsStateError); 412 expect(() => item.buildTask(), throwsStateError);
422 } 413 }
423 414
424 test_create() { 415 test_create() {
425 AnalysisContext context = new _TestContext(); 416 AnalysisContext context = new AnalysisContextImpl();
426 AnalysisTarget target = new TestSource(); 417 AnalysisTarget target = new TestSource();
427 TaskDescriptor descriptor = new TaskDescriptor( 418 TaskDescriptor descriptor = new TaskDescriptor(
428 'task', null, (target) => {}, [new ResultDescriptor('result', null)]); 419 'task', null, (target) => {}, [new ResultDescriptor('result', null)]);
429 WorkItem item = new WorkItem(context, target, descriptor); 420 WorkItem item = new WorkItem(context, target, descriptor);
430 expect(item, isNotNull); 421 expect(item, isNotNull);
431 expect(item.context, context); 422 expect(item.context, context);
432 expect(item.descriptor, descriptor); 423 expect(item.descriptor, descriptor);
433 expect(item.target, target); 424 expect(item.target, target);
434 } 425 }
435 426
436 test_gatherInputs_complete() { 427 test_gatherInputs_complete() {
437 TaskManager manager = new TaskManager(); 428 TaskManager manager = new TaskManager();
438 AnalysisContext context = new _TestContext(); 429 AnalysisContext context = new AnalysisContextImpl();
439 AnalysisTarget target = new TestSource(); 430 AnalysisTarget target = new TestSource();
440 TaskDescriptor descriptor = new TaskDescriptor('task', 431 TaskDescriptor descriptor = new TaskDescriptor('task',
441 (context, target) => new TestAnalysisTask(context, target), 432 (context, target) => new TestAnalysisTask(context, target),
442 (target) => {}, [new ResultDescriptor('output', null)]); 433 (target) => {}, [new ResultDescriptor('output', null)]);
443 WorkItem item = new WorkItem(context, target, descriptor); 434 WorkItem item = new WorkItem(context, target, descriptor);
444 WorkItem result = item.gatherInputs(manager); 435 WorkItem result = item.gatherInputs(manager);
445 expect(result, isNull); 436 expect(result, isNull);
446 expect(item.exception, isNull); 437 expect(item.exception, isNull);
447 } 438 }
448 439
449 test_gatherInputs_incomplete() { 440 test_gatherInputs_incomplete() {
450 TaskManager manager = new TaskManager(); 441 TaskManager manager = new TaskManager();
451 AnalysisContext context = new _TestContext(); 442 AnalysisContext context = new AnalysisContextImpl();
452 AnalysisTarget target = new TestSource(); 443 AnalysisTarget target = new TestSource();
453 ResultDescriptor resultA = new ResultDescriptor('resultA', null); 444 ResultDescriptor resultA = new ResultDescriptor('resultA', null);
454 ResultDescriptor resultB = new ResultDescriptor('resultB', null); 445 ResultDescriptor resultB = new ResultDescriptor('resultB', null);
455 TaskDescriptor task1 = new TaskDescriptor('task', (context, target) => 446 TaskDescriptor task1 = new TaskDescriptor('task', (context, target) =>
456 new TestAnalysisTask(context, target, results: [resultA]), 447 new TestAnalysisTask(context, target, results: [resultA]),
457 (target) => {}, [resultA]); 448 (target) => {}, [resultA]);
458 TaskDescriptor task2 = new TaskDescriptor('task', 449 TaskDescriptor task2 = new TaskDescriptor('task',
459 (context, target) => new TestAnalysisTask(context, target), 450 (context, target) => new TestAnalysisTask(context, target),
460 (target) => {'one': resultA.of(target)}, [resultB]); 451 (target) => {'one': resultA.of(target)}, [resultB]);
461 manager.addTaskDescriptor(task1); 452 manager.addTaskDescriptor(task1);
462 manager.addTaskDescriptor(task2); 453 manager.addTaskDescriptor(task2);
463 WorkItem item = new WorkItem(context, target, task2); 454 WorkItem item = new WorkItem(context, target, task2);
464 expect(item.gatherInputs(manager), isNotNull); 455 expect(item.gatherInputs(manager), isNotNull);
465 } 456 }
466 457
467 test_gatherInputs_invalid() { 458 test_gatherInputs_invalid() {
468 TaskManager manager = new TaskManager(); 459 TaskManager manager = new TaskManager();
469 AnalysisContext context = new _TestContext(); 460 AnalysisContext context = new AnalysisContextImpl();
470 AnalysisTarget target = new TestSource(); 461 AnalysisTarget target = new TestSource();
471 ResultDescriptor inputResult = new ResultDescriptor('input', null); 462 ResultDescriptor inputResult = new ResultDescriptor('input', null);
472 TaskDescriptor descriptor = new TaskDescriptor('task', 463 TaskDescriptor descriptor = new TaskDescriptor('task',
473 (context, target) => new TestAnalysisTask(context, target), 464 (context, target) => new TestAnalysisTask(context, target),
474 (target) => {'one': inputResult.of(target)}, 465 (target) => {'one': inputResult.of(target)},
475 [new ResultDescriptor('output', null)]); 466 [new ResultDescriptor('output', null)]);
476 WorkItem item = new WorkItem(context, target, descriptor); 467 WorkItem item = new WorkItem(context, target, descriptor);
477 WorkItem result = item.gatherInputs(manager); 468 WorkItem result = item.gatherInputs(manager);
478 expect(result, isNull); 469 expect(result, isNull);
479 expect(item.exception, isNotNull); 470 expect(item.exception, isNotNull);
(...skipping 22 matching lines...) Expand all
502 WorkOrder order = new WorkOrder(manager, workItem); 493 WorkOrder order = new WorkOrder(manager, workItem);
503 // "item" has no child items 494 // "item" has no child items
504 expect(order.moveNext(), isTrue); 495 expect(order.moveNext(), isTrue);
505 expect(order.current, workItem); 496 expect(order.current, workItem);
506 // done 497 // done
507 expect(order.moveNext(), isFalse); 498 expect(order.moveNext(), isFalse);
508 expect(order.current, isNull); 499 expect(order.current, isNull);
509 } 500 }
510 } 501 }
511 502
512 class _TestContext implements InternalAnalysisContext { 503 /**
513 InternalAnalysisContext baseContext = 504 * An [AnalysisContextImpl] which allows to set explicit and implicit targets
514 AnalysisContextFactory.contextWithCore(); 505 * directly.
515 506 */
507 class _TestContext extends AnalysisContextImpl {
516 @override 508 @override
517 List<AnalysisTarget> explicitTargets = <AnalysisTarget>[]; 509 List<AnalysisTarget> explicitTargets = <AnalysisTarget>[];
518 510
519 Map<AnalysisTarget, CacheEntry> entryMap =
520 new HashMap<AnalysisTarget, CacheEntry>();
521
522 @override 511 @override
523 List<AnalysisTarget> priorityTargets = <AnalysisTarget>[]; 512 List<AnalysisTarget> priorityTargets = <AnalysisTarget>[];
524
525 String name = 'Test Context';
526
527 _TestContext();
528
529 AnalysisOptions get analysisOptions => baseContext.analysisOptions;
530
531 void set analysisOptions(AnalysisOptions options) {
532 baseContext.analysisOptions = options;
533 }
534
535 @override
536 void set analysisPriorityOrder(List<Source> sources) {
537 baseContext.analysisPriorityOrder = sources;
538 }
539
540 @override
541 set contentCache(ContentCache value) {
542 baseContext.contentCache = value;
543 }
544
545 @override
546 DeclaredVariables get declaredVariables => baseContext.declaredVariables;
547
548 @override
549 List<Source> get htmlSources => baseContext.htmlSources;
550
551 @override
552 bool get isDisposed => baseContext.isDisposed;
553
554 @override
555 List<Source> get launchableClientLibrarySources =>
556 baseContext.launchableClientLibrarySources;
557
558 @override
559 List<Source> get launchableServerLibrarySources =>
560 baseContext.launchableServerLibrarySources;
561
562 @override
563 LibraryResolverFactory get libraryResolverFactory =>
564 baseContext.libraryResolverFactory;
565
566 @override
567 List<Source> get librarySources => baseContext.librarySources;
568
569 @override
570 Stream<SourcesChangedEvent> get onSourcesChanged =>
571 baseContext.onSourcesChanged;
572
573 @override
574 List<Source> get prioritySources => baseContext.prioritySources;
575
576 @override
577 ResolverVisitorFactory get resolverVisitorFactory =>
578 baseContext.resolverVisitorFactory;
579
580 SourceFactory get sourceFactory => baseContext.sourceFactory;
581
582 void set sourceFactory(SourceFactory factory) {
583 baseContext.sourceFactory = factory;
584 }
585
586 @override
587 List<Source> get sources => baseContext.sources;
588
589 @override
590 AnalysisContextStatistics get statistics => baseContext.statistics;
591
592 @override
593 TypeProvider get typeProvider => baseContext.typeProvider;
594
595 @override
596 void set typeProvider(TypeProvider typeProvider) {
597 baseContext.typeProvider = typeProvider;
598 }
599
600 @override
601 TypeResolverVisitorFactory get typeResolverVisitorFactory =>
602 baseContext.typeResolverVisitorFactory;
603
604 @override
605 void addListener(AnalysisListener listener) {
606 baseContext.addListener(listener);
607 }
608
609 @override
610 void addSourceInfo(Source source, SourceEntry info) {
611 baseContext.addSourceInfo(source, info);
612 }
613
614 @override
615 void applyAnalysisDelta(AnalysisDelta delta) {
616 baseContext.applyAnalysisDelta(delta);
617 }
618
619 @override
620 void applyChanges(ChangeSet changeSet) {
621 baseContext.applyChanges(changeSet);
622 }
623
624 @override
625 String computeDocumentationComment(Element element) {
626 return baseContext.computeDocumentationComment(element);
627 }
628
629 @override
630 List<AnalysisError> computeErrors(Source source) {
631 return baseContext.computeErrors(source);
632 }
633
634 @override
635 List<Source> computeExportedLibraries(Source source) {
636 return baseContext.computeExportedLibraries(source);
637 }
638
639 @override
640 HtmlElement computeHtmlElement(Source source) {
641 return baseContext.computeHtmlElement(source);
642 }
643
644 @override
645 List<Source> computeImportedLibraries(Source source) {
646 return baseContext.computeImportedLibraries(source);
647 }
648
649 @override
650 SourceKind computeKindOf(Source source) {
651 return baseContext.computeKindOf(source);
652 }
653
654 @override
655 LibraryElement computeLibraryElement(Source source) {
656 return baseContext.computeLibraryElement(source);
657 }
658
659 @override
660 LineInfo computeLineInfo(Source source) {
661 return baseContext.computeLineInfo(source);
662 }
663
664 @override
665 CompilationUnit computeResolvableCompilationUnit(Source source) {
666 return baseContext.computeResolvableCompilationUnit(source);
667 }
668
669 @override
670 CancelableFuture<CompilationUnit> computeResolvedCompilationUnitAsync(
671 Source source, Source librarySource) {
672 return baseContext.computeResolvedCompilationUnitAsync(
673 source, librarySource);
674 }
675
676 @override
677 void dispose() {
678 baseContext.dispose();
679 }
680
681 @override
682 List<CompilationUnit> ensureResolvedDartUnits(Source source) {
683 return baseContext.ensureResolvedDartUnits(source);
684 }
685
686 @override
687 bool exists(Source source) {
688 return baseContext.exists(source);
689 }
690
691 @override
692 CacheEntry getCacheEntry(AnalysisTarget target) {
693 return entryMap.putIfAbsent(target, () => new CacheEntry());
694 }
695
696 @override
697 CompilationUnitElement getCompilationUnitElement(
698 Source unitSource, Source librarySource) {
699 return baseContext.getCompilationUnitElement(unitSource, librarySource);
700 }
701
702 @override
703 TimestampedData<String> getContents(Source source) {
704 return baseContext.getContents(source);
705 }
706
707 @override
708 InternalAnalysisContext getContextFor(Source source) {
709 return baseContext.getContextFor(source);
710 }
711
712 @override
713 Element getElement(ElementLocation location) {
714 return baseContext.getElement(location);
715 }
716
717 @override
718 AnalysisErrorInfo getErrors(Source source) {
719 return baseContext.getErrors(source);
720 }
721
722 @override
723 HtmlElement getHtmlElement(Source source) {
724 return baseContext.getHtmlElement(source);
725 }
726
727 @override
728 List<Source> getHtmlFilesReferencing(Source source) {
729 return baseContext.getHtmlFilesReferencing(source);
730 }
731
732 @override
733 SourceKind getKindOf(Source source) {
734 return baseContext.getKindOf(source);
735 }
736
737 @override
738 List<Source> getLibrariesContaining(Source source) {
739 return baseContext.getLibrariesContaining(source);
740 }
741
742 @override
743 List<Source> getLibrariesDependingOn(Source librarySource) {
744 return baseContext.getLibrariesDependingOn(librarySource);
745 }
746
747 @override
748 List<Source> getLibrariesReferencedFromHtml(Source htmlSource) {
749 return baseContext.getLibrariesReferencedFromHtml(htmlSource);
750 }
751
752 @override
753 LibraryElement getLibraryElement(Source source) {
754 return baseContext.getLibraryElement(source);
755 }
756
757 @override
758 LineInfo getLineInfo(Source source) {
759 return baseContext.getLineInfo(source);
760 }
761
762 @override
763 int getModificationStamp(Source source) {
764 return baseContext.getModificationStamp(source);
765 }
766
767 @override
768 Namespace getPublicNamespace(LibraryElement library) {
769 return baseContext.getPublicNamespace(library);
770 }
771
772 @override
773 CompilationUnit getResolvedCompilationUnit(
774 Source unitSource, LibraryElement library) {
775 return baseContext.getResolvedCompilationUnit(unitSource, library);
776 }
777
778 @override
779 CompilationUnit getResolvedCompilationUnit2(
780 Source unitSource, Source librarySource) {
781 return baseContext.getResolvedCompilationUnit2(unitSource, librarySource);
782 }
783
784 @override
785 HtmlUnit getResolvedHtmlUnit(Source htmlSource) {
786 return baseContext.getResolvedHtmlUnit(htmlSource);
787 }
788
789 @override
790 List<Source> getSourcesWithFullName(String path) {
791 return baseContext.getSourcesWithFullName(path);
792 }
793
794 @override
795 bool handleContentsChanged(
796 Source source, String originalContents, String newContents, bool notify) {
797 return baseContext.handleContentsChanged(
798 source, originalContents, newContents, notify);
799 }
800
801 @override
802 bool isClientLibrary(Source librarySource) {
803 return baseContext.isClientLibrary(librarySource);
804 }
805
806 @override
807 bool isServerLibrary(Source librarySource) {
808 return baseContext.isServerLibrary(librarySource);
809 }
810
811 @override
812 CompilationUnit parseCompilationUnit(Source source) {
813 return baseContext.parseCompilationUnit(source);
814 }
815
816 @override
817 HtmlUnit parseHtmlUnit(Source source) {
818 return baseContext.parseHtmlUnit(source);
819 }
820
821 @override
822 AnalysisResult performAnalysisTask() {
823 return baseContext.performAnalysisTask();
824 }
825
826 @override
827 void recordLibraryElements(Map<Source, LibraryElement> elementMap) {
828 baseContext.recordLibraryElements(elementMap);
829 }
830
831 @override
832 void removeListener(AnalysisListener listener) {
833 baseContext.removeListener(listener);
834 }
835
836 @override
837 CompilationUnit resolveCompilationUnit(
838 Source unitSource, LibraryElement library) {
839 return baseContext.resolveCompilationUnit(unitSource, library);
840 }
841
842 @override
843 CompilationUnit resolveCompilationUnit2(
844 Source unitSource, Source librarySource) {
845 return baseContext.resolveCompilationUnit2(unitSource, librarySource);
846 }
847
848 @override
849 HtmlUnit resolveHtmlUnit(Source htmlSource) {
850 return baseContext.resolveHtmlUnit(htmlSource);
851 }
852
853 @override
854 void setChangedContents(Source source, String contents, int offset,
855 int oldLength, int newLength) {
856 baseContext.setChangedContents(
857 source, contents, offset, oldLength, newLength);
858 }
859
860 @override
861 void setContents(Source source, String contents) {
862 baseContext.setContents(source, contents);
863 }
864
865 @override
866 void visitCacheItems(void callback(Source source, SourceEntry dartEntry,
867 DataDescriptor rowDesc, CacheState state)) {
868 baseContext.visitCacheItems(callback);
869 }
870 } 513 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/task/dart_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698