Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: tests/compiler/dart2js/kernel/closed_world2_test.dart

Issue 2859133003: Find native classes with mixins in NativeClassFinder (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 // Partial test that the closed world computed from [WorldImpact]s derived from 5 // Partial test that the closed world computed from [WorldImpact]s derived from
6 // kernel is equivalent to the original computed from resolution. 6 // kernel is equivalent to the original computed from resolution.
7 library dart2js.kernel.closed_world2_test; 7 library dart2js.kernel.closed_world2_test;
8 8
9 import 'dart:async'; 9 import 'dart:async';
10 10
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 Expect.isFalse(compiler2.compilationFailed); 157 Expect.isFalse(compiler2.compilationFailed);
158 158
159 KernelEquivalence equivalence = new KernelEquivalence(elementMap); 159 KernelEquivalence equivalence = new KernelEquivalence(elementMap);
160 160
161 ElementEnvironment environment2 = compiler2.elementEnvironment; 161 ElementEnvironment environment2 = compiler2.elementEnvironment;
162 checkElementEnvironment(environment1, environment2, equivalence); 162 checkElementEnvironment(environment1, environment2, equivalence);
163 163
164 ResolutionEnqueuer enqueuer2 = compiler2.enqueuer.resolution; 164 ResolutionEnqueuer enqueuer2 = compiler2.enqueuer.resolution;
165 BackendUsage backendUsage2 = compiler2.backend.backendUsage; 165 BackendUsage backendUsage2 = compiler2.backend.backendUsage;
166 ClosedWorld closedWorld2 = compiler2.resolutionWorldBuilder.closeWorld(); 166 ClosedWorld closedWorld2 = compiler2.resolutionWorldBuilder.closeWorld();
167
168 checkNativeClasses(compiler1, compiler2, equivalence);
169
167 checkBackendUsage(backendUsage1, backendUsage2, equivalence); 170 checkBackendUsage(backendUsage1, backendUsage2, equivalence);
168 171
169 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2, 172 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2,
170 elementEquivalence: equivalence.entityEquivalence, 173 elementEquivalence: equivalence.entityEquivalence,
171 typeEquivalence: (ResolutionDartType a, DartType b) { 174 typeEquivalence: (ResolutionDartType a, DartType b) {
172 return equivalence.typeEquivalence(unalias(a), b); 175 return equivalence.typeEquivalence(unalias(a), b);
173 }, elementFilter: elementFilter, verbose: arguments.verbose); 176 }, elementFilter: elementFilter, verbose: arguments.verbose);
174 177
175 checkClosedWorlds(closedWorld1, closedWorld2, equivalence.entityEquivalence, 178 checkClosedWorlds(closedWorld1, closedWorld2, equivalence.entityEquivalence,
176 verbose: arguments.verbose); 179 verbose: arguments.verbose);
177 180
178 return ResultKind.success; 181 return ResultKind.success;
179 } 182 }
180 183
184 void checkNativeClasses(
185 Compiler compiler1, Compiler compiler2, KernelEquivalence equivalence) {
186 Iterable<ClassEntity> nativeClasses1 = compiler1
187 .backend.nativeResolutionEnqueuerForTesting.nativeClassesForTesting;
188 Iterable<ClassEntity> nativeClasses2 = compiler2
189 .backend.nativeResolutionEnqueuerForTesting.nativeClassesForTesting;
190
191 checkSetEquivalence(compiler1, compiler2, 'nativeClasses', nativeClasses1,
192 nativeClasses2, equivalence.entityEquivalence);
193
194 Iterable<ClassEntity> registeredClasses1 = compiler1
195 .backend.nativeResolutionEnqueuerForTesting.registeredClassesForTesting;
196 Iterable<ClassEntity> registeredClasses2 = compiler2
197 .backend.nativeResolutionEnqueuerForTesting.registeredClassesForTesting;
198
199 checkSetEquivalence(compiler1, compiler2, 'registeredClasses',
200 registeredClasses1, registeredClasses2, equivalence.entityEquivalence);
201 }
202
181 void checkNativeBasicData(NativeBasicDataImpl data1, NativeBasicDataImpl data2, 203 void checkNativeBasicData(NativeBasicDataImpl data1, NativeBasicDataImpl data2,
182 KernelEquivalence equivalence) { 204 KernelEquivalence equivalence) {
183 checkMapEquivalence( 205 checkMapEquivalence(
184 data1, 206 data1,
185 data2, 207 data2,
186 'nativeClassTagInfo', 208 'nativeClassTagInfo',
187 data1.nativeClassTagInfo, 209 data1.nativeClassTagInfo,
188 data2.nativeClassTagInfo, 210 data2.nativeClassTagInfo,
189 equivalence.entityEquivalence, 211 equivalence.entityEquivalence,
190 (a, b) => a == b); 212 (a, b) => a == b);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 300
279 classes2.add(cls2); 301 classes2.add(cls2);
280 }); 302 });
281 env2.forEachClass(lib2, (ClassEntity cls2) { 303 env2.forEachClass(lib2, (ClassEntity cls2) {
282 Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2"); 304 Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2");
283 }); 305 });
284 }); 306 });
285 307
286 // TODO(johnniwinther): Test the remaining properties of [ElementEnvironment]. 308 // TODO(johnniwinther): Test the remaining properties of [ElementEnvironment].
287 } 309 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/resolution_strategy.dart ('k') | tests/compiler/dart2js/kernel/closed_world_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698