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:kernel/kernel.dart'; | 5 import 'package:kernel/kernel.dart'; |
6 import 'package:kernel/class_hierarchy.dart'; | 6 import 'package:kernel/class_hierarchy.dart'; |
7 import 'package:test/test.dart'; | 7 import 'package:test/test.dart'; |
8 import 'class_hierarchy_basic.dart'; | 8 import 'class_hierarchy_basic.dart'; |
9 import 'dart:io'; | 9 import 'dart:io'; |
10 import 'dart:math'; | 10 import 'dart:math'; |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 ++progress; | 108 ++progress; |
109 if (verbose) { | 109 if (verbose) { |
110 stdout.write('\rInterface queries ${100 * progress ~/ total}%'); | 110 stdout.write('\rInterface queries ${100 * progress ~/ total}%'); |
111 } | 111 } |
112 } | 112 } |
113 for (var classNode in classHierarchy.classes) { | 113 for (var classNode in classHierarchy.classes) { |
114 String getHash(member, superMember, setter) { | 114 String getHash(member, superMember, setter) { |
115 String eq = setter ? '=' : ''; | 115 String eq = setter ? '=' : ''; |
116 return '$member$eq overrides $superMember$eq'; | 116 return '$member$eq overrides $superMember$eq'; |
117 } | 117 } |
| 118 |
118 Set<String> expectedOverrides = new Set<String>(); | 119 Set<String> expectedOverrides = new Set<String>(); |
119 basic.forEachOverridePair(classNode, (member, superMember, setter) { | 120 basic.forEachOverridePair(classNode, (member, superMember, setter) { |
120 expectedOverrides.add(getHash(member, superMember, setter)); | 121 expectedOverrides.add(getHash(member, superMember, setter)); |
121 }); | 122 }); |
122 Set<String> actualOverrides = new Set<String>(); | 123 Set<String> actualOverrides = new Set<String>(); |
123 classHierarchy.forEachOverridePair(classNode, (member, superMember, setter)
{ | 124 classHierarchy.forEachOverridePair(classNode, |
| 125 (member, superMember, setter) { |
124 actualOverrides.add(getHash(member, superMember, setter)); | 126 actualOverrides.add(getHash(member, superMember, setter)); |
125 }); | 127 }); |
126 for (var actual in actualOverrides) { | 128 for (var actual in actualOverrides) { |
127 if (!expectedOverrides.contains(actual)) { | 129 if (!expectedOverrides.contains(actual)) { |
128 fail("forEachOverridePair($classNode) should not report that $actual"); | 130 fail("forEachOverridePair($classNode) should not report that $actual"); |
129 } | 131 } |
130 } | 132 } |
131 for (var expected in expectedOverrides) { | 133 for (var expected in expectedOverrides) { |
132 if (!actualOverrides.contains(expected)) { | 134 if (!actualOverrides.contains(expected)) { |
133 fail("forEachOverridePair($classNode) did not report that $expected"); | 135 fail("forEachOverridePair($classNode) did not report that $expected"); |
134 } | 136 } |
135 } | 137 } |
136 } | 138 } |
137 if (verbose) { | 139 if (verbose) { |
138 print('\rProgress 100%. Done.'); | 140 print('\rProgress 100%. Done.'); |
139 } | 141 } |
140 } | 142 } |
141 | 143 |
142 var random = new Random(12345); | 144 var random = new Random(12345); |
143 | 145 |
144 List/*<T>*/ pickRandom/*<T>*/(List/*<T>*/ items, int n) { | 146 List/*<T>*/ pickRandom/*<T>*/(List/*<T>*/ items, int n) { |
145 var result = /*<T>*/[]; | 147 var result = /*<T>*/ []; |
146 for (int i = 0; i < n; ++i) { | 148 for (int i = 0; i < n; ++i) { |
147 result.add(items[random.nextInt(items.length)]); | 149 result.add(items[random.nextInt(items.length)]); |
148 } | 150 } |
149 return result; | 151 return result; |
150 } | 152 } |
OLD | NEW |