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 'package:analysis_server/src/services/index2/index2.dart'; | 5 import 'package:analysis_server/src/services/index2/index2.dart'; |
6 import 'package:analyzer/dart/ast/ast.dart'; | 6 import 'package:analyzer/dart/ast/ast.dart'; |
7 import 'package:analyzer/dart/element/element.dart'; | 7 import 'package:analyzer/dart/element/element.dart'; |
8 import 'package:analyzer/src/generated/source.dart'; | 8 import 'package:analyzer/src/generated/source.dart'; |
9 import 'package:analyzer/src/summary/idl.dart'; | 9 import 'package:analyzer/src/summary/idl.dart'; |
10 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 10 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 main(int a, int b) { | 141 main(int a, int b) { |
142 } | 142 } |
143 '''); | 143 '''); |
144 ClassElement intElement = context.typeProvider.intType.element; | 144 ClassElement intElement = context.typeProvider.intType.element; |
145 List<Location> locations = await index.getRelations( | 145 List<Location> locations = await index.getRelations( |
146 intElement, IndexRelationKind.IS_REFERENCED_BY); | 146 intElement, IndexRelationKind.IS_REFERENCED_BY); |
147 findLocationTest(locations, 'int a'); | 147 findLocationTest(locations, 'int a'); |
148 findLocationTest(locations, 'int b'); | 148 findLocationTest(locations, 'int b'); |
149 } | 149 } |
150 | 150 |
| 151 test_getUnresolvedMemberReferences() async { |
| 152 _indexTestUnit(''' |
| 153 class A { |
| 154 var test; // A |
| 155 mainA() { |
| 156 test(); // a-inv-r-nq |
| 157 test = 1; // a-ref-r-nq |
| 158 test += 2; // a-ref-r-nq |
| 159 print(test); // a-ref-r-nq |
| 160 } |
| 161 } |
| 162 main(A a, p) { |
| 163 a.test(); // a-inv-r-q |
| 164 a.test = 1; // a-ref-r-q |
| 165 a.test += 2; // a-ref-r-q |
| 166 print(a.test); // a-ref-r-q |
| 167 p.test(); // p-inv-ur-q |
| 168 p.test = 1; // p-ref-ur-q |
| 169 p.test += 2; // p-ref-ur-q |
| 170 print(p.test); // p-ref-ur-q |
| 171 } |
| 172 '''); |
| 173 List<Location> locations = |
| 174 await index.getUnresolvedMemberReferences('test'); |
| 175 expect(locations, hasLength(4)); |
| 176 findLocationTest(locations, 'test(); // p-inv-ur-q'); |
| 177 findLocationTest(locations, 'test = 1; // p-ref-ur-q'); |
| 178 findLocationTest(locations, 'test += 2; // p-ref-ur-q'); |
| 179 findLocationTest(locations, 'test); // p-ref-ur-q'); |
| 180 } |
| 181 |
151 /** | 182 /** |
152 * Assert that the given list of [locations] has a [Location] corresponding | 183 * Assert that the given list of [locations] has a [Location] corresponding |
153 * to the [element]. | 184 * to the [element]. |
154 */ | 185 */ |
155 void _assertHasDefinedName(List<Location> locations, Element element) { | 186 void _assertHasDefinedName(List<Location> locations, Element element) { |
156 String libraryUri = element.library.source.uri.toString(); | 187 String libraryUri = element.library.source.uri.toString(); |
157 String unitUri = element.source.uri.toString(); | 188 String unitUri = element.source.uri.toString(); |
158 for (Location location in locations) { | 189 for (Location location in locations) { |
159 if (location.libraryUri == libraryUri && | 190 if (location.libraryUri == libraryUri && |
160 location.unitUri == unitUri && | 191 location.unitUri == unitUri && |
(...skipping 11 matching lines...) Expand all Loading... |
172 index.indexUnit(testUnit); | 203 index.indexUnit(testUnit); |
173 } | 204 } |
174 | 205 |
175 Source _indexUnit(String path, String code) { | 206 Source _indexUnit(String path, String code) { |
176 Source source = addSource(path, code); | 207 Source source = addSource(path, code); |
177 CompilationUnit unit = resolveLibraryUnit(source); | 208 CompilationUnit unit = resolveLibraryUnit(source); |
178 index.indexUnit(unit); | 209 index.indexUnit(unit); |
179 return source; | 210 return source; |
180 } | 211 } |
181 } | 212 } |
OLD | NEW |