| 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 |