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

Side by Side Diff: pkg/analyzer_plugin/test/support/abstract_context.dart

Issue 2965133003: Move findElementsByName() into shared analyzer/element_search.dart file. (Closed)
Patch Set: Created 3 years, 5 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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/analysis/session.dart'; 7 import 'package:analyzer/dart/analysis/session.dart';
8 import 'package:analyzer/dart/ast/ast.dart'; 8 import 'package:analyzer/dart/ast/ast.dart';
9 import 'package:analyzer/dart/ast/visitor.dart';
10 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
11 import 'package:analyzer/dart/element/visitor.dart'; 10 import 'package:analyzer/dart/element/visitor.dart';
12 import 'package:analyzer/exception/exception.dart'; 11 import 'package:analyzer/exception/exception.dart';
13 import 'package:analyzer/file_system/file_system.dart'; 12 import 'package:analyzer/file_system/file_system.dart';
14 import 'package:analyzer/file_system/memory_file_system.dart'; 13 import 'package:analyzer/file_system/memory_file_system.dart';
15 import 'package:analyzer/source/package_map_resolver.dart'; 14 import 'package:analyzer/source/package_map_resolver.dart';
16 import 'package:analyzer/src/dart/analysis/driver.dart'; 15 import 'package:analyzer/src/dart/analysis/driver.dart';
17 import 'package:analyzer/src/dart/analysis/file_state.dart'; 16 import 'package:analyzer/src/dart/analysis/file_state.dart';
18 import 'package:analyzer/src/generated/engine.dart'; 17 import 'package:analyzer/src/generated/engine.dart';
19 import 'package:analyzer/src/generated/engine.dart' as engine; 18 import 'package:analyzer/src/generated/engine.dart' as engine;
20 import 'package:analyzer/src/generated/sdk.dart'; 19 import 'package:analyzer/src/generated/sdk.dart';
21 import 'package:analyzer/src/generated/source_io.dart'; 20 import 'package:analyzer/src/generated/source_io.dart';
21 import 'package:analyzer/src/generated/testing/element_search.dart';
22 import 'package:front_end/src/base/performace_logger.dart'; 22 import 'package:front_end/src/base/performace_logger.dart';
23 import 'package:front_end/src/incremental/byte_store.dart'; 23 import 'package:front_end/src/incremental/byte_store.dart';
24 24
25 import 'mock_sdk.dart'; 25 import 'mock_sdk.dart';
26 26
27 /** 27 /**
28 * Finds an [Element] with the given [name]. 28 * Finds an [Element] with the given [name].
29 */ 29 */
30 Element findChildElement(Element root, String name, [ElementKind kind]) { 30 Element findChildElement(Element root, String name, [ElementKind kind]) {
31 Element result = null; 31 Element result = null;
32 root.accept(new _ElementVisitorFunctionWrapper((Element element) { 32 root.accept(new _ElementVisitorFunctionWrapper((Element element) {
33 if (element.name != name) { 33 if (element.name != name) {
34 return; 34 return;
35 } 35 }
36 if (kind != null && element.kind != kind) { 36 if (kind != null && element.kind != kind) {
37 return; 37 return;
38 } 38 }
39 result = element; 39 result = element;
40 })); 40 }));
41 return result; 41 return result;
42 } 42 }
43 43
44 /** 44 /**
45 * Search the [unit] for the [Element]s with the given [name].
46 */
47 List<Element> findElementsByName(CompilationUnit unit, String name) {
48 var finder = new _ElementsByNameFinder(name);
49 unit.accept(finder);
50 return finder.elements;
51 }
52
53 /**
54 * A function to be called for every [Element]. 45 * A function to be called for every [Element].
55 */ 46 */
56 typedef void _ElementVisitorFunction(Element element); 47 typedef void _ElementVisitorFunction(Element element);
57 48
58 class AbstractContextTest { 49 class AbstractContextTest {
59 MemoryResourceProvider provider; 50 MemoryResourceProvider provider;
60 DartSdk sdk; 51 DartSdk sdk;
61 Map<String, List<Folder>> packageMap; 52 Map<String, List<Folder>> packageMap;
62 UriResolver resourceResolver; 53 UriResolver resourceResolver;
63 54
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 173
183 @override 174 @override
184 void logInformation(String message, [CaughtException exception]) { 175 void logInformation(String message, [CaughtException exception]) {
185 print(message); 176 print(message);
186 if (exception != null) { 177 if (exception != null) {
187 print(exception); 178 print(exception);
188 } 179 }
189 } 180 }
190 } 181 }
191 182
192 class _ElementsByNameFinder extends RecursiveAstVisitor<Null> {
193 final String name;
194 final List<Element> elements = [];
195
196 _ElementsByNameFinder(this.name);
197
198 @override
199 visitSimpleIdentifier(SimpleIdentifier node) {
200 if (node.name == name && node.inDeclarationContext()) {
201 elements.add(node.staticElement);
202 }
203 }
204 }
205
206 /** 183 /**
207 * Wraps the given [_ElementVisitorFunction] into an instance of 184 * Wraps the given [_ElementVisitorFunction] into an instance of
208 * [engine.GeneralizingElementVisitor]. 185 * [engine.GeneralizingElementVisitor].
209 */ 186 */
210 class _ElementVisitorFunctionWrapper extends GeneralizingElementVisitor { 187 class _ElementVisitorFunctionWrapper extends GeneralizingElementVisitor {
211 final _ElementVisitorFunction function; 188 final _ElementVisitorFunction function;
212 189
213 _ElementVisitorFunctionWrapper(this.function); 190 _ElementVisitorFunctionWrapper(this.function);
214 191
215 @override 192 @override
216 visitElement(Element element) { 193 visitElement(Element element) {
217 function(element); 194 function(element);
218 super.visitElement(element); 195 super.visitElement(element);
219 } 196 }
220 } 197 }
OLDNEW
« pkg/analyzer/lib/src/generated/testing/element_search.dart ('K') | « pkg/analyzer/test/utils.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698