2017-04-06 16:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
									
										
										
										
											2025-07-02 20:10:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-06 16:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  path  =  require ( "path" ) ;  
						 
					
						
							
								
									
										
										
										
											2025-07-03 17:06:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  fs  =  require ( "graceful-fs" ) ;  
						 
					
						
							
								
									
										
										
										
											2014-06-18 04:34:30 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 01:29:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  check  =  ( expected ,  actual )  =>  {  
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( expected  instanceof  RegExp )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 01:29:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										expected  =  {  message :  expected  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Array . isArray ( expected ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-17 00:13:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  expected . every ( ( e )  =>  check ( e ,  actual ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-17 00:13:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  Object . keys ( expected ) . every ( ( key )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 01:29:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										let  value  =  actual [ key ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( typeof  value  ===  "object" )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 01:29:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											value  =  JSON . stringify ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  expected [ key ] . test ( value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2018-12-19 01:29:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-07-17 00:13:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  explain  =  ( object )  =>  {  
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( object  instanceof  RegExp )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 01:29:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										object  =  {  message :  object  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  Object . keys ( object ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-17 00:13:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										. map ( ( key )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											let  value  =  object [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( typeof  value  ===  "object"  &&  ! ( value  instanceof  RegExp ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												value  =  JSON . stringify ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											let  msg  =  ` ${ key }  =  ${ value } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-02 20:10:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( key  !==  "stack"  &&  key  !==  "details"  &&  msg . length  >  100 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-31 10:39:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												msg  =  ` ${ msg . slice ( 0 ,  97 ) } ... ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-02 20:10:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  msg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										. join ( "; " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2018-12-19 01:29:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  diffItems  =  ( actual ,  expected ,  kind )  =>  {  
						 
					
						
							
								
									
										
										
										
											2025-07-03 17:06:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  tooMuch  =  [ ... actual ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  missing  =  [ ... expected ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( let  i  =  0 ;  i  <  missing . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  current  =  missing [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( let  j  =  0 ;  j  <  tooMuch . length ;  j ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( check ( current ,  tooMuch [ j ] ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												tooMuch . splice ( j ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												missing . splice ( i ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												i -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  diff  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( missing . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										diff . push ( ` The following expected  ${ kind } s are missing:
 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-17 00:13:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$ { missing . map ( ( item )  =>  ` ${ explain ( item ) } ` ) . join ( "\n\n" ) } ` );
  
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( tooMuch . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										diff . push ( ` The following  ${ kind } s are unexpected:
 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-17 00:13:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$ { tooMuch . map ( ( item )  =>  ` ${ explain ( item ) } ` ) . join ( "\n\n" ) } ` );
  
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  diff . join ( "\n\n" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								module . exports  =  function  checkArrayExpectation (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testDirectory , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									object , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									kind , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									filename , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									upperCaseKind , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-01 21:55:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									options , 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! done )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-01 21:55:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										done  =  options ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										options  =  upperCaseKind ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-03 19:13:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										upperCaseKind  =  filename ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-06 16:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										filename  =  ` ${ kind } s ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-03 19:13:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-07 20:11:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									let  array  =  object [ ` ${ kind } s ` ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 02:36:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Array . isArray ( array )  &&  kind  ===  "warning" )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-17 00:13:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										array  =  array . filter ( ( item )  =>  ! /from Terser/ . test ( item ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-30 18:50:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( fs . existsSync ( path . join ( testDirectory ,  ` ${ filename } .js ` ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-06 16:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  expectedFilename  =  path . join ( testDirectory ,  ` ${ filename } .js ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-02 20:10:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-01 21:55:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										let  expected  =  require ( expectedFilename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-02 20:10:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-01 21:55:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( typeof  expected  ===  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											expected  =  expected ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  diff  =  diffItems ( array ,  expected ,  kind ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-30 18:50:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( expected . length  <  array . length )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												done ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													new  Error ( 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														` More  ${ kind } s ( ${ array . length }  instead of  ${ expected . length } ) while compiling than expected: \n \n ${ diff } \n \n Check expected  ${ kind } s:  ${ expectedFilename } ` 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-30 18:50:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( expected . length  >  array . length )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												done ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													new  Error ( 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-13 23:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														` Less  ${ kind } s ( ${ array . length }  instead of  ${ expected . length } ) while compiling than expected: \n \n ${ diff } \n \n Check expected  ${ kind } s:  ${ expectedFilename } ` 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-30 18:50:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( let  i  =  0 ;  i  <  array . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( Array . isArray ( expected [ i ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 22:40:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												for  ( const  expectedItem  of  expected [ i ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( ! check ( expectedItem ,  array [ i ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															done ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																new  Error ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																	` ${ upperCaseKind }   ${ i } :  ${ explain ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		array [ i ] 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 22:40:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																	) }  doesn ' t  match  $ { explain ( expectedItem ) } ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-30 18:50:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-18 04:34:30 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-14 00:12:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( ! check ( expected [ i ] ,  array [ i ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													done ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														new  Error ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															` ${ upperCaseKind }   ${ i } :  ${ explain ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																array [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															) }  doesn ' t  match  $ { explain ( expected [ i ] ) } ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-14 00:12:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-18 04:34:30 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( array . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-19 15:58:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												new  Error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													` ${ upperCaseKind } s while compiling: \n \n ${ array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														. map ( explain ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														. join ( "\n\n" ) } ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												) 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-25 09:00:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-18 04:34:30 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-15 21:08:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;