OLD | NEW |
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 'dart:async'; | 5 import 'dart:async'; |
6 import 'package:expect/expect.dart'; | 6 import 'package:expect/expect.dart'; |
7 import 'package:async_helper/async_helper.dart'; | 7 import 'package:async_helper/async_helper.dart'; |
8 import 'compiler_helper.dart'; | 8 import 'compiler_helper.dart'; |
9 | 9 |
10 const String TEST_ONE = r""" | 10 const String TEST_ONE = r""" |
11 foo(a) { | 11 foo(a) { |
12 int b = foo(true); | 12 int b = foo(true); |
13 if (a) b = foo(2); | 13 if (a) b = foo(2); |
14 return b; | 14 return b; |
15 } | 15 } |
16 """; | 16 """; |
17 | 17 |
18 | |
19 const String TEST_TWO = r""" | 18 const String TEST_TWO = r""" |
20 bar(a) {} | 19 bar(a) {} |
21 foo(d) { | 20 foo(d) { |
22 int a = 1; | 21 int a = 1; |
23 int c = foo(1); | 22 int c = foo(1); |
24 if (true) {} | 23 if (true) {} |
25 return a + c; | 24 return a + c; |
26 } | 25 } |
27 """; | 26 """; |
28 | 27 |
29 const String TEST_THREE = r""" | 28 const String TEST_THREE = r""" |
30 foo(int a, int b) { | 29 foo(int a, int b) { |
31 return 0 + a + b; | 30 return 0 + a + b; |
32 } | 31 } |
33 """; | 32 """; |
34 | 33 |
35 const String TEST_THREE_WITH_BAILOUT = r""" | 34 const String TEST_THREE_WITH_BAILOUT = r""" |
36 foo(int a, int b) { | 35 foo(int a, int b) { |
37 var t; | 36 var t; |
38 for (int i = 0; i < 1; i++) { | 37 for (int i = 0; i < 1; i++) { |
39 t = 0 + a + b; | 38 t = 0 + a + b; |
40 } | 39 } |
41 return t; | 40 return t; |
42 } | 41 } |
43 """; | 42 """; |
44 | 43 |
45 main() { | 44 main() { |
46 asyncTest(() => Future.wait([ | 45 asyncTest(() => Future.wait([ |
47 compile(TEST_ONE, entry: 'foo', check: (String generated) { | 46 compile(TEST_ONE, entry: 'foo', check: (String generated) { |
48 RegExp regexp = new RegExp(getIntTypeCheck(anyIdentifier)); | 47 RegExp regexp = new RegExp(getIntTypeCheck(anyIdentifier)); |
49 Iterator<Match> matches = regexp.allMatches(generated).iterator; | 48 Iterator<Match> matches = regexp.allMatches(generated).iterator; |
50 checkNumberOfMatches(matches, 0); | 49 checkNumberOfMatches(matches, 0); |
51 Expect.isTrue( | 50 Expect.isTrue(generated.contains( |
52 generated.contains( | |
53 new RegExp(r'return a === true \? [$A-Z]+\.foo\(2\) : b;'))); | 51 new RegExp(r'return a === true \? [$A-Z]+\.foo\(2\) : b;'))); |
54 }), | 52 }), |
55 compile(TEST_TWO, entry: 'foo', check: (String generated) { | 53 compile(TEST_TWO, entry: 'foo', check: (String generated) { |
56 RegExp regexp = new RegExp("foo\\(1\\)"); | 54 RegExp regexp = new RegExp("foo\\(1\\)"); |
57 Iterator<Match> matches = regexp.allMatches(generated).iterator; | 55 Iterator<Match> matches = regexp.allMatches(generated).iterator; |
58 checkNumberOfMatches(matches, 1); | 56 checkNumberOfMatches(matches, 1); |
59 }), | 57 }), |
60 compile(TEST_THREE, entry: 'foo', check: (String generated) { | 58 compile(TEST_THREE, entry: 'foo', check: (String generated) { |
61 RegExp regexp = new RegExp(getNumberTypeCheck('a')); | 59 RegExp regexp = new RegExp(getNumberTypeCheck('a')); |
62 Expect.isTrue(regexp.hasMatch(generated)); | 60 Expect.isTrue(regexp.hasMatch(generated)); |
63 regexp = new RegExp(getNumberTypeCheck('b')); | 61 regexp = new RegExp(getNumberTypeCheck('b')); |
64 Expect.isTrue(regexp.hasMatch(generated)); | 62 Expect.isTrue(regexp.hasMatch(generated)); |
65 }), | 63 }), |
66 compile(TEST_THREE_WITH_BAILOUT, entry: 'foo', check: (String generated) { | 64 compile(TEST_THREE_WITH_BAILOUT, entry: 'foo', |
67 RegExp regexp = new RegExp(getNumberTypeCheck('a')); | 65 check: (String generated) { |
68 Expect.isTrue(regexp.hasMatch(generated)); | 66 RegExp regexp = new RegExp(getNumberTypeCheck('a')); |
69 regexp = new RegExp(getNumberTypeCheck('b')); | 67 Expect.isTrue(regexp.hasMatch(generated)); |
70 Expect.isTrue(regexp.hasMatch(generated)); | 68 regexp = new RegExp(getNumberTypeCheck('b')); |
71 }) | 69 Expect.isTrue(regexp.hasMatch(generated)); |
72 ])); | 70 }) |
| 71 ])); |
73 } | 72 } |
OLD | NEW |