OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
| 7 import 'package:analyzer/dart/element/element.dart'; |
| 8 import 'package:analyzer/dart/element/visitor.dart'; |
7 import 'package:analyzer/file_system/file_system.dart'; | 9 import 'package:analyzer/file_system/file_system.dart'; |
8 import 'package:analyzer/file_system/memory_file_system.dart'; | 10 import 'package:analyzer/file_system/memory_file_system.dart'; |
9 import 'package:analyzer/source/package_map_resolver.dart'; | 11 import 'package:analyzer/source/package_map_resolver.dart'; |
10 import 'package:analyzer/src/dart/analysis/byte_store.dart'; | 12 import 'package:analyzer/src/dart/analysis/byte_store.dart'; |
11 import 'package:analyzer/src/dart/analysis/driver.dart'; | 13 import 'package:analyzer/src/dart/analysis/driver.dart'; |
12 import 'package:analyzer/src/dart/analysis/file_state.dart'; | 14 import 'package:analyzer/src/dart/analysis/file_state.dart'; |
13 import 'package:analyzer/src/dart/analysis/status.dart'; | 15 import 'package:analyzer/src/dart/analysis/status.dart'; |
14 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl; | 16 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl; |
15 import 'package:analyzer/src/generated/source.dart'; | 17 import 'package:analyzer/src/generated/source.dart'; |
16 import 'package:test/test.dart'; | 18 import 'package:test/test.dart'; |
17 | 19 |
18 import '../../context/mock_sdk.dart'; | 20 import '../../context/mock_sdk.dart'; |
19 | 21 |
| 22 /** |
| 23 * Finds an [Element] with the given [name]. |
| 24 */ |
| 25 Element findChildElement(Element root, String name, [ElementKind kind]) { |
| 26 Element result = null; |
| 27 root.accept(new _ElementVisitorFunctionWrapper((Element element) { |
| 28 if (element.name != name) { |
| 29 return; |
| 30 } |
| 31 if (kind != null && element.kind != kind) { |
| 32 return; |
| 33 } |
| 34 result = element; |
| 35 })); |
| 36 return result; |
| 37 } |
| 38 |
| 39 typedef bool Predicate<E>(E argument); |
| 40 |
| 41 /** |
| 42 * A function to be called for every [Element]. |
| 43 */ |
| 44 typedef void _ElementVisitorFunction(Element element); |
| 45 |
20 class BaseAnalysisDriverTest { | 46 class BaseAnalysisDriverTest { |
21 static final MockSdk sdk = new MockSdk(); | 47 static final MockSdk sdk = new MockSdk(); |
22 | 48 |
23 final MemoryResourceProvider provider = new MemoryResourceProvider(); | 49 final MemoryResourceProvider provider = new MemoryResourceProvider(); |
24 final ByteStore byteStore = new MemoryByteStore(); | 50 final ByteStore byteStore = new MemoryByteStore(); |
25 final FileContentOverlay contentOverlay = new FileContentOverlay(); | 51 final FileContentOverlay contentOverlay = new FileContentOverlay(); |
26 | 52 |
27 final StringBuffer logBuffer = new StringBuffer(); | 53 final StringBuffer logBuffer = new StringBuffer(); |
28 PerformanceLog logger; | 54 PerformanceLog logger; |
29 | 55 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 if (status.isIdle) { | 127 if (status.isIdle) { |
102 idleStatusMonitor.notify(); | 128 idleStatusMonitor.notify(); |
103 } | 129 } |
104 }); | 130 }); |
105 driver.results.listen(allResults.add); | 131 driver.results.listen(allResults.add); |
106 } | 132 } |
107 | 133 |
108 String _p(String path) => provider.convertPath(path); | 134 String _p(String path) => provider.convertPath(path); |
109 } | 135 } |
110 | 136 |
| 137 /** |
| 138 * Wraps an [_ElementVisitorFunction] into a [GeneralizingElementVisitor]. |
| 139 */ |
| 140 class _ElementVisitorFunctionWrapper extends GeneralizingElementVisitor { |
| 141 final _ElementVisitorFunction function; |
| 142 |
| 143 _ElementVisitorFunctionWrapper(this.function); |
| 144 |
| 145 visitElement(Element element) { |
| 146 function(element); |
| 147 super.visitElement(element); |
| 148 } |
| 149 } |
| 150 |
111 class _Monitor { | 151 class _Monitor { |
112 Completer<Null> _completer = new Completer<Null>(); | 152 Completer<Null> _completer = new Completer<Null>(); |
113 | 153 |
114 Future<Null> get signal async { | 154 Future<Null> get signal async { |
115 await _completer.future; | 155 await _completer.future; |
116 _completer = new Completer<Null>(); | 156 _completer = new Completer<Null>(); |
117 } | 157 } |
118 | 158 |
119 void notify() { | 159 void notify() { |
120 if (!_completer.isCompleted) { | 160 if (!_completer.isCompleted) { |
121 _completer.complete(null); | 161 _completer.complete(null); |
122 } | 162 } |
123 } | 163 } |
124 } | 164 } |
OLD | NEW |