43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								USING: accessors arrays byte-arrays compiler.tree
							 | 
						||
| 
								 | 
							
								compiler.tree.propagation.copy compiler.tree.propagation.info
							 | 
						||
| 
								 | 
							
								compiler.tree.propagation.slots hashtables kernel math math.intervals
							 | 
						||
| 
								 | 
							
								namespaces sequences strings tools.test ;
							 | 
						||
| 
								 | 
							
								IN: compiler.tree.propagation.slots.tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: indexize ( seq -- assoc )
							 | 
						||
| 
								 | 
							
								    [ swap 2array ] map-index ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: setup-value-infos ( value-infos -- )
							 | 
						||
| 
								 | 
							
								    indexize >hashtable 1array value-infos set
							 | 
						||
| 
								 | 
							
								    H{ { 0 0 } { 1 1 } { 2 2 } } copies set ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{ t } [
							 | 
						||
| 
								 | 
							
								    \ <array> sequence-constructor?
							 | 
						||
| 
								 | 
							
								] unit-test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    T{ value-info-state
							 | 
						||
| 
								 | 
							
								       { class array }
							 | 
						||
| 
								 | 
							
								       { interval full-interval }
							 | 
						||
| 
								 | 
							
								       { slots
							 | 
						||
| 
								 | 
							
								         {
							 | 
						||
| 
								 | 
							
								             T{ value-info-state
							 | 
						||
| 
								 | 
							
								                { class fixnum }
							 | 
						||
| 
								 | 
							
								                { interval
							 | 
						||
| 
								 | 
							
								                  T{ interval
							 | 
						||
| 
								 | 
							
								                     { from { 7 t } }
							 | 
						||
| 
								 | 
							
								                     { to { 7 t } }
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                { literal 7 }
							 | 
						||
| 
								 | 
							
								                { literal? t }
							 | 
						||
| 
								 | 
							
								             }
							 | 
						||
| 
								 | 
							
								         }
							 | 
						||
| 
								 | 
							
								       }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								} [
							 | 
						||
| 
								 | 
							
								    { 7 f } [ <literal-info> ] map setup-value-infos
							 | 
						||
| 
								 | 
							
								    { 0 1 } { 2 } \ <array> <#call> dup word>>
							 | 
						||
| 
								 | 
							
								    propagate-sequence-constructor first
							 | 
						||
| 
								 | 
							
								] unit-test
							 |