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:analyzer/dart/ast/ast.dart'; | 5 import 'package:analyzer/dart/ast/ast.dart'; |
6 import 'package:analyzer/src/dart/analysis/referenced_names.dart'; | 6 import 'package:analyzer/src/dart/analysis/referenced_names.dart'; |
7 import 'package:test/test.dart'; | 7 import 'package:test/test.dart'; |
8 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 8 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
9 | 9 |
10 import '../../../generated/parser_test.dart'; | 10 import '../../../generated/parser_test.dart'; |
11 | 11 |
12 main() { | 12 main() { |
13 defineReflectiveSuite(() { | 13 defineReflectiveSuite(() { |
14 defineReflectiveTests(ReferencedNamesBuilderTest); | 14 defineReflectiveTests(ComputeReferencedNamesTest); |
| 15 defineReflectiveTests(ComputeSubtypedNamesTest); |
15 }); | 16 }); |
16 } | 17 } |
17 | 18 |
18 @reflectiveTest | 19 @reflectiveTest |
19 class ReferencedNamesBuilderTest extends ParserTestCase { | 20 class ComputeReferencedNamesTest extends ParserTestCase { |
20 test_class_constructor() { | 21 test_class_constructor() { |
21 Set<String> names = _computeReferencedNames(''' | 22 Set<String> names = _computeReferencedNames(''' |
22 class U { | 23 class U { |
23 U.named(A a, B b) { | 24 U.named(A a, B b) { |
24 C c = null; | 25 C c = null; |
25 } | 26 } |
26 } | 27 } |
27 '''); | 28 '''); |
28 expect(names, unorderedEquals(['A', 'B', 'C'])); | 29 expect(names, unorderedEquals(['A', 'B', 'C'])); |
29 } | 30 } |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 } | 403 } |
403 '''); | 404 '''); |
404 expect(names, unorderedEquals(['A', 'B', 'C'])); | 405 expect(names, unorderedEquals(['A', 'B', 'C'])); |
405 } | 406 } |
406 | 407 |
407 Set<String> _computeReferencedNames(String code) { | 408 Set<String> _computeReferencedNames(String code) { |
408 CompilationUnit unit = parseCompilationUnit2(code); | 409 CompilationUnit unit = parseCompilationUnit2(code); |
409 return computeReferencedNames(unit); | 410 return computeReferencedNames(unit); |
410 } | 411 } |
411 } | 412 } |
| 413 |
| 414 @reflectiveTest |
| 415 class ComputeSubtypedNamesTest extends ParserTestCase { |
| 416 void test_prefixed() { |
| 417 Set<String> names = _computeSubtypedNames(''' |
| 418 import 'lib.dart' as p; |
| 419 class X extends p.A with p.B implements p.C {} |
| 420 '''); |
| 421 expect(names, unorderedEquals(['A', 'B', 'C'])); |
| 422 } |
| 423 |
| 424 void test_typeArguments() { |
| 425 Set<String> names = _computeSubtypedNames(''' |
| 426 import 'lib.dart'; |
| 427 class X extends A<B> {} |
| 428 '''); |
| 429 expect(names, unorderedEquals(['A'])); |
| 430 } |
| 431 |
| 432 void test_unprefixed() { |
| 433 Set<String> names = _computeSubtypedNames(''' |
| 434 import 'lib.dart'; |
| 435 class X extends A {} |
| 436 class Y extends A with B {} |
| 437 class Z implements A, B, C {} |
| 438 '''); |
| 439 expect(names, unorderedEquals(['A', 'B', 'C'])); |
| 440 } |
| 441 |
| 442 Set<String> _computeSubtypedNames(String code) { |
| 443 CompilationUnit unit = parseCompilationUnit2(code); |
| 444 return computeSubtypedNames(unit); |
| 445 } |
| 446 } |
OLD | NEW |