| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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:compiler/src/constants/values.dart"; | 6 import "package:compiler/src/constants/values.dart"; |
| 7 import "package:compiler/src/types/types.dart"; | 7 import "package:compiler/src/types/types.dart"; |
| 8 import "package:expect/expect.dart"; | 8 import "package:expect/expect.dart"; |
| 9 import 'compiler_helper.dart'; | 9 import 'compiler_helper.dart'; |
| 10 import 'type_mask_test_helper.dart'; | 10 import 'type_mask_test_helper.dart'; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 main() { | 27 main() { |
| 28 bar(foo(false)); | 28 bar(foo(false)); |
| 29 bar(foo(foo(false))); | 29 bar(foo(foo(false))); |
| 30 } | 30 } |
| 31 """; | 31 """; |
| 32 | 32 |
| 33 Future runTest1() { | 33 Future runTest1() { |
| 34 Uri uri = new Uri(scheme: 'source'); | 34 Uri uri = new Uri(scheme: 'source'); |
| 35 var compiler = compilerFor(TEST1, uri); | 35 var compiler = compilerFor(TEST1, uri); |
| 36 return compiler.run(uri).then((_) { | 36 return compiler.run(uri).then((_) { |
| 37 var commonMasks = compiler.commonMasks; | 37 var commonMasks = compiler.closedWorld.commonMasks; |
| 38 var typesInferrer = compiler.globalInference.typesInferrer; | 38 var typesInferrer = compiler.globalInference.typesInferrerInternal; |
| 39 var element = findElement(compiler, "foo"); | 39 var element = findElement(compiler, "foo"); |
| 40 var mask = typesInferrer.getReturnTypeOfElement(element); | 40 var mask = typesInferrer.getReturnTypeOfElement(element); |
| 41 var falseType = | 41 var falseType = |
| 42 new ValueTypeMask(commonMasks.boolType, new FalseConstantValue()); | 42 new ValueTypeMask(commonMasks.boolType, new FalseConstantValue()); |
| 43 // 'foo' should always return false | 43 // 'foo' should always return false |
| 44 Expect.equals(falseType, mask); | 44 Expect.equals(falseType, mask); |
| 45 // the argument to 'bar' is always false | 45 // the argument to 'bar' is always false |
| 46 var bar = findElement(compiler, "bar"); | 46 var bar = findElement(compiler, "bar"); |
| 47 var barArg = bar.parameters.first; | 47 var barArg = bar.parameters.first; |
| 48 var barArgMask = typesInferrer.getTypeOfElement(barArg); | 48 var barArgMask = typesInferrer.getTypeOfElement(barArg); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 70 main() { | 70 main() { |
| 71 bar(foo(5)); | 71 bar(foo(5)); |
| 72 bar(foo(6)); | 72 bar(foo(6)); |
| 73 } | 73 } |
| 74 """; | 74 """; |
| 75 | 75 |
| 76 Future runTest2() { | 76 Future runTest2() { |
| 77 Uri uri = new Uri(scheme: 'source'); | 77 Uri uri = new Uri(scheme: 'source'); |
| 78 var compiler = compilerFor(TEST2, uri); | 78 var compiler = compilerFor(TEST2, uri); |
| 79 return compiler.run(uri).then((_) { | 79 return compiler.run(uri).then((_) { |
| 80 var commonMasks = compiler.commonMasks; | 80 var commonMasks = compiler.closedWorld.commonMasks; |
| 81 var typesInferrer = compiler.globalInference.typesInferrer; | 81 var typesInferrer = compiler.globalInference.typesInferrerInternal; |
| 82 var element = findElement(compiler, "foo"); | 82 var element = findElement(compiler, "foo"); |
| 83 var mask = typesInferrer.getReturnTypeOfElement(element); | 83 var mask = typesInferrer.getReturnTypeOfElement(element); |
| 84 // Can't infer value for foo's return type, it could be either true or false | 84 // Can't infer value for foo's return type, it could be either true or false |
| 85 Expect.identical(commonMasks.boolType, mask); | 85 Expect.identical(commonMasks.boolType, mask); |
| 86 var bar = findElement(compiler, "bar"); | 86 var bar = findElement(compiler, "bar"); |
| 87 var barArg = bar.parameters.first; | 87 var barArg = bar.parameters.first; |
| 88 var barArgMask = typesInferrer.getTypeOfElement(barArg); | 88 var barArgMask = typesInferrer.getTypeOfElement(barArg); |
| 89 // The argument to bar should have the same type as the return type of foo | 89 // The argument to bar should have the same type as the return type of foo |
| 90 Expect.identical(commonMasks.boolType, barArgMask); | 90 Expect.identical(commonMasks.boolType, barArgMask); |
| 91 var barCode = compiler.backend.getGeneratedCode(bar); | 91 var barCode = compiler.backend.getGeneratedCode(bar); |
| 92 Expect.isTrue(barCode.contains('"bbb"')); | 92 Expect.isTrue(barCode.contains('"bbb"')); |
| 93 // Still must output the print for "aaa" | 93 // Still must output the print for "aaa" |
| 94 Expect.isTrue(barCode.contains('"aaa"')); | 94 Expect.isTrue(barCode.contains('"aaa"')); |
| 95 }); | 95 }); |
| 96 } | 96 } |
| 97 | 97 |
| 98 main() { | 98 main() { |
| 99 asyncStart(); | 99 asyncStart(); |
| 100 runTest1().then((_) { | 100 runTest1().then((_) { |
| 101 return runTest2(); | 101 return runTest2(); |
| 102 }).whenComplete(asyncEnd); | 102 }).whenComplete(asyncEnd); |
| 103 } | 103 } |
| OLD | NEW |