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 /// Test that the dart2js copy of [KernelVisitor] generates the expected class | 5 /// Test that the dart2js copy of [KernelVisitor] generates the expected class |
6 /// hierarchy. | 6 /// hierarchy. |
7 | 7 |
8 import 'package:compiler/src/commandline_options.dart' show Flags; | 8 import 'package:compiler/src/commandline_options.dart' show Flags; |
9 import 'package:compiler/src/compiler.dart' show Compiler; | 9 import 'package:compiler/src/compiler.dart' show Compiler; |
10 import 'package:compiler/src/elements/elements.dart'; | |
11 import 'package:compiler/src/js_backend/backend.dart' show JavaScriptBackend; | 10 import 'package:compiler/src/js_backend/backend.dart' show JavaScriptBackend; |
12 import 'package:compiler/src/library_loader.dart' show LoadedLibraries; | 11 import 'package:compiler/src/library_loader.dart' show LoadedLibraries; |
13 import 'package:kernel/ast.dart' as ir; | 12 import 'package:kernel/ast.dart' as ir; |
14 import 'package:kernel/class_hierarchy.dart'; | 13 import 'package:kernel/class_hierarchy.dart'; |
15 import 'package:test/test.dart'; | 14 import 'package:test/test.dart'; |
16 | 15 |
17 import '../memory_compiler.dart'; | 16 import '../memory_compiler.dart'; |
18 | 17 |
19 main(List<String> arguments) { | 18 main(List<String> arguments) { |
20 Compiler compiler = compilerFor(memorySourceFiles: { | 19 Compiler compiler = compilerFor(memorySourceFiles: { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 print('$cls'); | 52 print('$cls'); |
54 print(' dispatch targets:'); | 53 print(' dispatch targets:'); |
55 hierarchy | 54 hierarchy |
56 .getDispatchTargets(cls) | 55 .getDispatchTargets(cls) |
57 .forEach((member) => print(' $member')); | 56 .forEach((member) => print(' $member')); |
58 } | 57 } |
59 return cls; | 58 return cls; |
60 } | 59 } |
61 } | 60 } |
62 fail('Class $name not found.'); | 61 fail('Class $name not found.'); |
| 62 throw "Not reachable."; |
63 } | 63 } |
64 | 64 |
65 ir.Class classS = getClass('S'); | 65 ir.Class classS = getClass('S'); |
66 ir.Class classM = getClass('M'); | 66 ir.Class classM = getClass('M'); |
67 ir.Class classC = getClass('C'); | 67 ir.Class classC = getClass('C'); |
68 | 68 |
69 void checkInheritance(ir.Class superClass, ir.Class subClass) { | 69 void checkInheritance(ir.Class superClass, ir.Class subClass) { |
70 for (ir.Member member in hierarchy.getDispatchTargets(superClass)) { | 70 for (ir.Member member in hierarchy.getDispatchTargets(superClass)) { |
71 expect( | 71 expect( |
72 hierarchy.getDispatchTarget(subClass, member.name), equals(member), | 72 hierarchy.getDispatchTarget(subClass, member.name), equals(member), |
73 reason: 'Unexpected dispatch target for ${member.name} ' | 73 reason: 'Unexpected dispatch target for ${member.name} ' |
74 'in $subClass'); | 74 'in $subClass'); |
75 } | 75 } |
76 } | 76 } |
77 | 77 |
78 checkInheritance(classS, classC); | 78 checkInheritance(classS, classC); |
79 checkInheritance(classM, classC); | 79 checkInheritance(classM, classC); |
80 }); | 80 }); |
81 } | 81 } |
OLD | NEW |