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

Side by Side Diff: tests/compiler/dart2js/subtype_test.dart

Issue 2307873002: Fix more-specific for interface types with call functions. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « pkg/compiler/lib/src/dart_types.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 library subtype_test; 5 library subtype_test;
6 6
7 import 'package:expect/expect.dart'; 7 import 'package:expect/expect.dart';
8 import "package:async_helper/async_helper.dart"; 8 import "package:async_helper/async_helper.dart";
9 import 'type_test_helper.dart'; 9 import 'type_test_helper.dart';
10 import 'package:compiler/src/dart_types.dart'; 10 import 'package:compiler/src/dart_types.dart';
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 } 270 }
271 """).then((env) { 271 """).then((env) {
272 void expect(bool expectSubtype, DartType T, DartType S, 272 void expect(bool expectSubtype, DartType T, DartType S,
273 {bool expectMoreSpecific}) { 273 {bool expectMoreSpecific}) {
274 testTypes(env, T, S, expectSubtype, expectMoreSpecific); 274 testTypes(env, T, S, expectSubtype, expectMoreSpecific);
275 } 275 }
276 276
277 ClassElement classA = env.getElement('A'); 277 ClassElement classA = env.getElement('A');
278 DartType A = classA.rawType; 278 DartType A = classA.rawType;
279 DartType function = env['Function']; 279 DartType function = env['Function'];
280 DartType call = env.getMemberType(classA, 'call');
280 DartType m1 = env.getMemberType(classA, 'm1'); 281 DartType m1 = env.getMemberType(classA, 'm1');
281 DartType m2 = env.getMemberType(classA, 'm2'); 282 DartType m2 = env.getMemberType(classA, 'm2');
282 DartType m3 = env.getMemberType(classA, 'm3'); 283 DartType m3 = env.getMemberType(classA, 'm3');
283 DartType m4 = env.getMemberType(classA, 'm4'); 284 DartType m4 = env.getMemberType(classA, 'm4');
284 DartType m5 = env.getMemberType(classA, 'm5'); 285 DartType m5 = env.getMemberType(classA, 'm5');
285 286
286 expect(true, A, function, expectMoreSpecific: false); 287 expect(true, A, function);
ahe 2016/09/02 13:07:11 I'm not sure this is what the specification says.
Johnni Winther 2016/09/02 13:12:37 A << call and call << Function + transitivity.
287 expect(true, A, m1, expectMoreSpecific: false); 288 expect(true, A, call);
289 expect(true, call, m1);
290 expect(true, A, m1);
288 expect(true, A, m2, expectMoreSpecific: false); 291 expect(true, A, m2, expectMoreSpecific: false);
289 expect(false, A, m3); 292 expect(false, A, m3);
290 expect(false, A, m4); 293 expect(false, A, m4);
291 expect(true, A, m5, expectMoreSpecific: false); 294 expect(true, A, m5);
292 })); 295 }));
293 } 296 }
294 297
295 testFunctionSubtyping() { 298 testFunctionSubtyping() {
296 asyncTest(() => TypeEnvironment.create(r""" 299 asyncTest(() => TypeEnvironment.create(r"""
297 _() => null; 300 _() => null;
298 void void_() {} 301 void void_() {}
299 void void_2() {} 302 void void_2() {}
300 int int_() => 0; 303 int int_() => 0;
301 int int_2() => 0; 304 int int_2() => 0;
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 expect(false, J_U, num_); 751 expect(false, J_U, num_);
749 expect(false, J_U, int_); 752 expect(false, J_U, int_);
750 expect(false, J_U, String_); 753 expect(false, J_U, String_);
751 expect(true, J_U, dynamic_); 754 expect(true, J_U, dynamic_);
752 expect(false, J_U, J_T); 755 expect(false, J_U, J_T);
753 expect(true, J_U, J_S); 756 expect(true, J_U, J_S);
754 expect(true, J_U, J_U); 757 expect(true, J_U, J_U);
755 expect(false, J_U, A_T); 758 expect(false, J_U, A_T);
756 })); 759 }));
757 } 760 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/dart_types.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698