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

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

Issue 2488353004: Remove Compiler access from ResolutionEnqueuer (Closed)
Patch Set: Updated cf. comments. Created 4 years, 1 month 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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:async_helper/async_helper.dart"; 5 import "package:async_helper/async_helper.dart";
6 import "package:expect/expect.dart"; 6 import "package:expect/expect.dart";
7 import 'compiler_helper.dart'; 7 import 'compiler_helper.dart';
8 import 'type_mask_test_helper.dart'; 8 import 'type_mask_test_helper.dart';
9 import 'dart:async'; 9 import 'dart:async';
10 10
11 const String TEST = r""" 11 const String TEST = r"""
12 foo(x, [y]) => y; 12 foo(x, [y]) => y;
13 13
14 main() { 14 main() {
15 assert(foo('Hi', true), foo(true)); 15 assert(foo('Hi', true), foo(true));
16 foo(1); 16 foo(1);
17 } 17 }
18 """; 18 """;
19 19
20 Future runTest() async { 20 Future runTest() async {
21 Uri uri = new Uri(scheme: 'source'); 21 Uri uri = new Uri(scheme: 'source');
22 { 22 {
23 // Assertions enabled: 23 // Assertions enabled:
24 var compiler = compilerFor(TEST, uri, enableUserAssertions: true); 24 var compiler = compilerFor(TEST, uri, enableUserAssertions: true);
25 await compiler.run(uri); 25 await compiler.run(uri);
26 var commonMasks = compiler.commonMasks; 26 var commonMasks = compiler.closedWorld.commonMasks;
27 var typesInferrer = compiler.globalInference.typesInferrer; 27 var typesInferrer = compiler.globalInference.typesInferrerInternal;
28 var foo = findElement(compiler, "foo"); 28 var foo = findElement(compiler, "foo");
29 // Return type is null|bool. 29 // Return type is null|bool.
30 var mask = typesInferrer.getReturnTypeOfElement(foo); 30 var mask = typesInferrer.getReturnTypeOfElement(foo);
31 Expect.isTrue(mask.isNullable); 31 Expect.isTrue(mask.isNullable);
32 Expect.equals(commonMasks.boolType, simplify(mask.nonNullable(), compiler)); 32 Expect.equals(commonMasks.boolType, simplify(mask.nonNullable(), compiler));
33 // First parameter is uint31|String|bool. 33 // First parameter is uint31|String|bool.
34 var mask1 = typesInferrer.getTypeOfElement(foo.parameters[0]); 34 var mask1 = typesInferrer.getTypeOfElement(foo.parameters[0]);
35 Expect.isTrue(mask1.isUnion); 35 Expect.isTrue(mask1.isUnion);
36 var expectedTypes = new Set.from( 36 var expectedTypes = new Set.from(
37 [commonMasks.uint31Type, commonMasks.stringType, commonMasks.boolType]); 37 [commonMasks.uint31Type, commonMasks.stringType, commonMasks.boolType]);
38 for (var typeMask in mask1.disjointMasks) { 38 for (var typeMask in mask1.disjointMasks) {
39 Expect.isFalse(typeMask.isNullable); 39 Expect.isFalse(typeMask.isNullable);
40 var simpleType = simplify(typeMask, compiler); 40 var simpleType = simplify(typeMask, compiler);
41 Expect.isTrue(expectedTypes.remove(simpleType), "$simpleType"); 41 Expect.isTrue(expectedTypes.remove(simpleType), "$simpleType");
42 } 42 }
43 Expect.isTrue(expectedTypes.isEmpty); 43 Expect.isTrue(expectedTypes.isEmpty);
44 // Second parameter is bool or null. 44 // Second parameter is bool or null.
45 var mask2 = typesInferrer.getTypeOfElement(foo.parameters[1]); 45 var mask2 = typesInferrer.getTypeOfElement(foo.parameters[1]);
46 Expect.isTrue(mask2.isNullable); 46 Expect.isTrue(mask2.isNullable);
47 Expect.equals( 47 Expect.equals(
48 commonMasks.boolType, simplify(mask2.nonNullable(), compiler)); 48 commonMasks.boolType, simplify(mask2.nonNullable(), compiler));
49 } 49 }
50 50
51 { 51 {
52 // Assertions disabled: 52 // Assertions disabled:
53 var compiler = compilerFor(TEST, uri, enableUserAssertions: false); 53 var compiler = compilerFor(TEST, uri, enableUserAssertions: false);
54 await compiler.run(uri); 54 await compiler.run(uri);
55 var commonMasks = compiler.commonMasks; 55 var commonMasks = compiler.closedWorld.commonMasks;
56 var typesInferrer = compiler.globalInference.typesInferrer; 56 var typesInferrer = compiler.globalInference.typesInferrerInternal;
57 var foo = findElement(compiler, "foo"); 57 var foo = findElement(compiler, "foo");
58 // Return type is null. 58 // Return type is null.
59 var mask = typesInferrer.getReturnTypeOfElement(foo); 59 var mask = typesInferrer.getReturnTypeOfElement(foo);
60 Expect.isTrue(mask.isNullable); 60 Expect.isTrue(mask.isNullable);
61 Expect.isTrue(mask.nonNullable().isEmpty); 61 Expect.isTrue(mask.nonNullable().isEmpty);
62 // First parameter is uint31. 62 // First parameter is uint31.
63 var mask1 = typesInferrer.getTypeOfElement(foo.parameters[0]); 63 var mask1 = typesInferrer.getTypeOfElement(foo.parameters[0]);
64 Expect.isFalse(mask1.isNullable); 64 Expect.isFalse(mask1.isNullable);
65 Expect.equals(commonMasks.uint31Type, simplify(mask1, compiler)); 65 Expect.equals(commonMasks.uint31Type, simplify(mask1, compiler));
66 // Second parameter is null. 66 // Second parameter is null.
67 var mask2 = typesInferrer.getTypeOfElement(foo.parameters[1]); 67 var mask2 = typesInferrer.getTypeOfElement(foo.parameters[1]);
68 Expect.isTrue(mask2.isNullable); 68 Expect.isTrue(mask2.isNullable);
69 Expect.isTrue(simplify(mask2.nonNullable(), compiler).isEmpty); 69 Expect.isTrue(simplify(mask2.nonNullable(), compiler).isEmpty);
70 } 70 }
71 } 71 }
72 72
73 main() { 73 main() {
74 asyncStart(); 74 asyncStart();
75 runTest().then((_) { 75 runTest().then((_) {
76 // Make sure that the type is still correct when we do a second compilation. 76 // Make sure that the type is still correct when we do a second compilation.
77 return runTest(); 77 return runTest();
78 }).whenComplete(asyncEnd); 78 }).whenComplete(asyncEnd);
79 } 79 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/type_inference6_test.dart ('k') | tests/compiler/dart2js/type_inference8_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698