| 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:analysis_server/src/services/search/search_engine.dart'; | 7 import 'package:analysis_server/src/services/search/search_engine.dart'; |
| 8 import 'package:analysis_server/src/services/search/search_engine_internal2.dart
'; | 8 import 'package:analysis_server/src/services/search/search_engine_internal2.dart
'; |
| 9 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
| 10 import 'package:analyzer/file_system/file_system.dart'; | 10 import 'package:analyzer/file_system/file_system.dart'; |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 contains(predicate((SearchMatch m) => | 147 contains(predicate((SearchMatch m) => |
| 148 m.kind == MatchKind.DECLARATION && | 148 m.kind == MatchKind.DECLARATION && |
| 149 m.element.name == name && | 149 m.element.name == name && |
| 150 m.element.nameOffset == nameOffset))); | 150 m.element.nameOffset == nameOffset))); |
| 151 } | 151 } |
| 152 | 152 |
| 153 assertHasElement('test', codeA.indexOf('test; // 1')); | 153 assertHasElement('test', codeA.indexOf('test; // 1')); |
| 154 assertHasElement('test', codeB.indexOf('test() {} // 2')); | 154 assertHasElement('test', codeB.indexOf('test() {} // 2')); |
| 155 } | 155 } |
| 156 | 156 |
| 157 test_searchMemberReferences() async { |
| 158 var a = _p('/test/a.dart'); |
| 159 var b = _p('/test/b.dart'); |
| 160 |
| 161 provider.newFile( |
| 162 a, |
| 163 ''' |
| 164 class A { |
| 165 int test; |
| 166 } |
| 167 foo(p) { |
| 168 p.test; |
| 169 } |
| 170 '''); |
| 171 provider.newFile( |
| 172 b, |
| 173 ''' |
| 174 import 'a.dart'; |
| 175 bar(p) { |
| 176 p.test = 1; |
| 177 } |
| 178 '''); |
| 179 |
| 180 var driver1 = _newDriver(); |
| 181 var driver2 = _newDriver(); |
| 182 |
| 183 driver1.addFile(a); |
| 184 driver2.addFile(b); |
| 185 |
| 186 var searchEngine = new SearchEngineImpl2([driver1, driver2]); |
| 187 List<SearchMatch> matches = |
| 188 await searchEngine.searchMemberReferences('test'); |
| 189 expect(matches, hasLength(2)); |
| 190 expect( |
| 191 matches, |
| 192 contains(predicate((SearchMatch m) => |
| 193 m.element.name == 'foo' || m.kind == MatchKind.READ))); |
| 194 expect( |
| 195 matches, |
| 196 contains(predicate((SearchMatch m) => |
| 197 m.element.name == 'bar' || m.kind == MatchKind.WRITE))); |
| 198 } |
| 199 |
| 157 test_searchReferences() async { | 200 test_searchReferences() async { |
| 158 var a = _p('/test/a.dart'); | 201 var a = _p('/test/a.dart'); |
| 159 var b = _p('/test/b.dart'); | 202 var b = _p('/test/b.dart'); |
| 160 | 203 |
| 161 provider.newFile( | 204 provider.newFile( |
| 162 a, | 205 a, |
| 163 ''' | 206 ''' |
| 164 class T {} | 207 class T {} |
| 165 T a; | 208 T a; |
| 166 '''); | 209 '''); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 contentOverlay, | 285 contentOverlay, |
| 243 'test', | 286 'test', |
| 244 new SourceFactory( | 287 new SourceFactory( |
| 245 [new DartUriResolver(sdk), new ResourceUriResolver(provider)], | 288 [new DartUriResolver(sdk), new ResourceUriResolver(provider)], |
| 246 null, | 289 null, |
| 247 provider), | 290 provider), |
| 248 new AnalysisOptionsImpl()..strongMode = true); | 291 new AnalysisOptionsImpl()..strongMode = true); |
| 249 | 292 |
| 250 String _p(String path) => provider.convertPath(path); | 293 String _p(String path) => provider.convertPath(path); |
| 251 } | 294 } |
| OLD | NEW |