File tree Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Original file line number Diff line number Diff line change @@ -93,9 +93,9 @@ export class ListWrapper {
9393  static  map ( array ,  fn )  { 
9494    return  array . map ( fn ) ; 
9595  } 
96-   static  forEach ( array ,  fn )  { 
97-     for ( var  p   of   array )  { 
98-       fn ( p ) ; 
96+   static  forEach ( array : List ,  fn : Function )  { 
97+     for   ( var  i   =   0 ;   i   <   array . length ;   i ++ )  { 
98+       fn ( array [ i ] ) ; 
9999    } 
100100  } 
101101  static  push ( array ,  el )  { 
@@ -198,8 +198,16 @@ export function isListLikeIterable(obj):boolean {
198198} 
199199
200200export  function  iterateListLike ( obj ,  fn :Function )  { 
201-   for  ( var  item  of  obj )  { 
202-     fn ( item ) ; 
201+   if  ( ListWrapper . isList ( obj ) )  { 
202+     for  ( var  i  =  0 ;  i  <  obj . length ;  i ++ )  { 
203+       fn ( obj [ i ] ) ; 
204+     } 
205+   }  else  { 
206+     var  iterator  =  obj [ Symbol . iterator ] ( ) ; 
207+     var  item ; 
208+     while  ( ! ( ( item  =  iterator . next ( ) ) . done ) )  { 
209+       fn ( item . value ) ; 
210+     } 
203211  } 
204212} 
205213
Original file line number Diff line number Diff line change @@ -259,8 +259,8 @@ var number = type.number = define('number', function(value) {
259259function  arrayOf ( ...types )  { 
260260  return  assert . define ( 'array of '  +  types . map ( prettyPrint ) . join ( '/' ) ,  function ( value )  { 
261261    if  ( assert ( value ) . is ( Array ) )  { 
262-       for  ( var  item   of   value )  { 
263-         assert ( item ) . is ( ...types ) ; 
262+       for  ( var  i   =   0 ;   i   <   value . length ;   i ++ )  { 
263+         assert ( value [ i ] ) . is ( ...types ) ; 
264264      } 
265265    } 
266266  } ) ; 
@@ -270,7 +270,8 @@ function structure(definition) {
270270  var  properties  =  Object . keys ( definition ) ; 
271271  return  assert . define ( 'object with properties '  +  properties . join ( ', ' ) ,  function ( value )  { 
272272    if  ( assert ( value ) . is ( Object ) )  { 
273-       for  ( var  property  of  properties )  { 
273+       for  ( var  i  =  0 ;  i  <  properties . length ;  i ++ )  { 
274+         var  property  =  properties [ i ] ; 
274275        assert ( value [ property ] ) . is ( definition [ property ] ) ; 
275276      } 
276277    } 
@@ -318,8 +319,8 @@ function assert(value) {
318319      // var errors = [] 
319320      var  allErrors  =  [ ] ; 
320321      var  errors ; 
321- 
322-       for   ( var  type  of  types )   { 
322+        for   ( var   i   =   0 ;   i   <   types . length ;   i ++ )   { 
323+          var  type  =  types [ i ] ; 
323324        errors  =  [ ] ; 
324325
325326        if  ( isType ( value ,  type ,  errors ) )  { 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments