| 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 | 
|---|