48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								USING: accessors classes.tuple compiler.tree kernel namespaces sequences
							 | 
						||
| 
								 | 
							
								stack-checker.backend stack-checker.known-words stack-checker.recursive-state
							 | 
						||
| 
								 | 
							
								stack-checker.state stack-checker.values stack-checker.visitor tools.test
							 | 
						||
| 
								 | 
							
								words ;
							 | 
						||
| 
								 | 
							
								IN: stack-checker.known-words.tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! Because node is an identity-tuple
							 | 
						||
| 
								 | 
							
								: node-seqs-eq? ( seq1 seq2 -- ? )
							 | 
						||
| 
								 | 
							
								    [ [ tuple-slots ] map concat ] bi@ = ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{ t } [
							 | 
						||
| 
								 | 
							
								    0 \ <value> set-global [
							 | 
						||
| 
								 | 
							
								        V{ } clone stack-visitor set
							 | 
						||
| 
								 | 
							
								        \ swap "shuffle" word-prop infer-shuffle
							 | 
						||
| 
								 | 
							
								    ] with-infer nip V{
							 | 
						||
| 
								 | 
							
								        T{ #introduce { out-d { 1 2 } } }
							 | 
						||
| 
								 | 
							
								        T{ #shuffle
							 | 
						||
| 
								 | 
							
								           { mapping { { 3 2 } { 4 1 } } }
							 | 
						||
| 
								 | 
							
								           { in-d V{ 1 2 } }
							 | 
						||
| 
								 | 
							
								           { out-d V{ 3 4 } }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        T{ #return { in-d V{ 3 4 } } }
							 | 
						||
| 
								 | 
							
								    } node-seqs-eq?
							 | 
						||
| 
								 | 
							
								] unit-test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: foo ( x -- )
							 | 
						||
| 
								 | 
							
								    drop ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{ t } [
							 | 
						||
| 
								 | 
							
								    0 \ <value> set-global [
							 | 
						||
| 
								 | 
							
								        V{ } clone stack-visitor set
							 | 
						||
| 
								 | 
							
								        1234
							 | 
						||
| 
								 | 
							
								        T{ literal-tuple
							 | 
						||
| 
								 | 
							
								           { value [ foo ] }
							 | 
						||
| 
								 | 
							
								           { recursion T{ recursive-state } }
							 | 
						||
| 
								 | 
							
								        } infer-call*
							 | 
						||
| 
								 | 
							
								    ] with-infer nip V{
							 | 
						||
| 
								 | 
							
								        T{ #shuffle
							 | 
						||
| 
								 | 
							
								           { mapping { } }
							 | 
						||
| 
								 | 
							
								           { in-d { 1234 } }
							 | 
						||
| 
								 | 
							
								           { out-d { } }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        T{ #introduce { out-d { 1 } } }
							 | 
						||
| 
								 | 
							
								        T{ #call { word foo } { in-d V{ 1 } } { out-d { } } }
							 | 
						||
| 
								 | 
							
								        T{ #return { in-d V{ } } }
							 | 
						||
| 
								 | 
							
								    } node-seqs-eq?
							 | 
						||
| 
								 | 
							
								] unit-test
							 |