OLD | NEW |
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 import "dart:math"; | 5 import "dart:math"; |
6 import "dart:typed_data"; | 6 import "dart:typed_data"; |
7 | 7 |
8 // Equivalent of calling FATAL from C++ code. | 8 // Equivalent of calling FATAL from C++ code. |
9 _fatal(msg) native "DartCore_fatal"; | 9 _fatal(msg) native "DartCore_fatal"; |
10 | 10 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 return false; | 54 return false; |
55 } | 55 } |
56 while(true) { | 56 while(true) { |
57 if (yieldEachIterator != null) { | 57 if (yieldEachIterator != null) { |
58 if (yieldEachIterator.moveNext()) { | 58 if (yieldEachIterator.moveNext()) { |
59 return true; | 59 return true; |
60 } | 60 } |
61 yieldEachIterator = null; | 61 yieldEachIterator = null; |
62 } | 62 } |
63 isYieldEach = false; | 63 isYieldEach = false; |
| 64 // moveNextFn() will update the values of isYieldEach and _current. |
64 if (!moveNextFn(this)) { | 65 if (!moveNextFn(this)) { |
65 moveNextFn = null; | 66 moveNextFn = null; |
66 _current = null; | 67 _current = null; |
67 return false; | 68 return false; |
68 } | 69 } |
69 if (isYieldEach) { | 70 if (isYieldEach) { |
70 // Spec mandates: it is a dynamic error if the class of [the object | 71 // Spec mandates: it is a dynamic error if the class of [the object |
71 // returned by yield*] does not implement Iterable. | 72 // returned by yield*] does not implement Iterable. |
72 yieldEachIterator = (_current as Iterable).iterator; | 73 yieldEachIterator = (_current as Iterable).iterator; |
73 _current = null; | 74 _current = null; |
74 continue; | 75 continue; |
75 } | 76 } |
76 return true; | 77 return true; |
77 } | 78 } |
78 } | 79 } |
79 } | 80 } |
80 | 81 |
81 patch class StackTrace { | 82 patch class StackTrace { |
82 /* patch */ static StackTrace get current native "StackTrace_current"; | 83 /* patch */ static StackTrace get current native "StackTrace_current"; |
83 } | 84 } |
OLD | NEW |