2009-04-22 00:02:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USING:  tools.test  eval  compiler  compiler.errors  compiler.units  definitions  kernel  math  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespaces macros assocs ;
 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-13 20:21:44 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								IN:  compiler.tests.redefine0  
						 
					
						
							
								
									
										
										
										
											2009-04-21 17:09:53 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								! Test ripple-up behavior  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-1  (  --  a  )  3  ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-2  (  --  )  test-1 ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ test-2 ] [ not-compiled? ] must-fail-with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ "IN: compiler.tests.redefine0 : test-1 ( -- ) ;"  eval( -- ) ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ 0  0  } [ test-1 ] must-infer-as
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ test-2 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-1  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-2  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] with-compilation-unit
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-3  (  a  --  )  drop  ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-4  (  --  )  [ 1  2  3  ] test-3 ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ test-4 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ "IN: compiler.tests.redefine0 USE: kernel : test-3 ( a -- ) call ; inline"  eval( -- ) ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ test-4 ] [ not-compiled? ] must-fail-with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-3  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-4  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] with-compilation-unit
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-5  (  a  --  quot  )  ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-6  (  a  --  b  )  test-5 ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ 31337  ] [ 31337  test-6 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ "IN: compiler.tests.redefine0 USING: macros kernel ; MACRO: test-5 ( a -- quot ) drop [ ] ;"  eval( -- ) ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ 31337  test-6 ] [ not-compiled? ] must-fail-with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-5  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-6  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] with-compilation-unit
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GENERIC:  test-7  (  a  --  b  )
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								M:  integer  test-7  +  ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-8  (  a  --  b  )  255  bitand  test-7 ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ 1  test-7 ] [ not-compiled? ] must-fail-with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ 1  test-8 ] [ not-compiled? ] must-fail-with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-22 00:02:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[ ] [ "IN: compiler.tests.redefine0 USING: macros math kernel ; GENERIC: test-7 ( x y -- z ) : test-8 ( a b -- c ) 255 bitand test-7 ;"  eval( -- ) ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2009-04-21 17:09:53 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ 4  ] [ 1  3  test-7 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ 4  ] [ 1  259  test-8 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-7  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-8  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] with-compilation-unit
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2009-04-22 00:02:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								! Indirect dependency on an unoptimized word  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:  test-9  (  --  )  ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<< SYMBOL:  quot 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 02:08:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[ test-9 ] quot set-global
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MACRO:  test-10  (  --  quot  )  quot get  ;  >> 
						 
					
						
							
								
									
										
										
										
											2009-04-22 00:02:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:  test-11  (  --  )  test-10 ;
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ test-11 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ "IN: compiler.tests.redefine0 : test-9 ( -- ) 1 ;"  eval( -- ) ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								! test-11 should get recompiled now  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ test-11 ] [ not-compiled? ] must-fail-with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ "IN: compiler.tests.redefine0 : test-9 ( -- a ) 1 ;"  eval( -- ) ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ "IN: compiler.tests.redefine0 : test-9 ( -- ) ;"  eval( -- ) ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [ test-11 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								quot global  delete-at
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-9  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-10  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ test-11  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        \ quot  forget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] with-compilation-unit
							 
						 
					
						
							
								
									
										
										
										
											2009-04-26 01:51:47 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								] unit-test