| 
									
										
										
										
											2010-02-01 11:50:13 -05:00
										 |  |  | USING: tools.test macros math kernel arrays | 
					
						
							| 
									
										
										
										
											2010-02-01 12:56:13 -05:00
										 |  |  | vectors io.streams.string prettyprint parser eval see | 
					
						
							|  |  |  | stack-checker compiler.units definitions vocabs ;
 | 
					
						
							|  |  |  | IN: macros.tests | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-23 01:34:02 -04:00
										 |  |  | MACRO: see-test ( a b -- quot ) + ;
 | 
					
						
							| 
									
										
										
										
											2008-05-28 19:17:58 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-23 01:34:02 -04:00
										 |  |  | [ t ] [ \ see-test macro? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ "USING: macros math ;\nIN: macros.tests\nMACRO: see-test ( a b -- quot ) + ;\n" ] | 
					
						
							| 
									
										
										
										
											2008-05-28 19:17:58 -04:00
										 |  |  | [ [ \ see-test see ] with-string-writer ] | 
					
						
							|  |  |  | unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-23 01:34:02 -04:00
										 |  |  | [ t ] [ \ see-test macro? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-28 19:17:58 -04:00
										 |  |  | [ t ] [ | 
					
						
							| 
									
										
										
										
											2009-04-17 16:49:21 -04:00
										 |  |  |     "USING: math ;\nIN: macros.tests\n: see-test ( a b -- c ) - ;\n" dup eval( -- ) | 
					
						
							| 
									
										
										
										
											2008-05-28 19:17:58 -04:00
										 |  |  |     [ \ see-test see ] with-string-writer =
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-06-11 03:58:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-23 01:34:02 -04:00
										 |  |  | [ f ] [ \ see-test macro? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-01 12:56:13 -05:00
										 |  |  | [ ] [ "USING: macros stack-checker kernel ; IN: hanging-macro MACRO: c ( quot -- ) infer drop [ ] ;" eval( -- ) ] unit-test | 
					
						
							|  |  |  | [ ] [ "USING: macros kernel ; IN: hanging-macro : a ( -- ) [ a ] c ;" eval( -- ) ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ ] [ [ "hanging-macro" forget-vocab ] with-compilation-unit ] unit-test | 
					
						
							| 
									
										
										
										
											2008-06-11 03:58:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-27 03:00:10 -05:00
										 |  |  | [ ] [ "IN: macros.tests USE: macros MACRO: foo ( -- x ) [ ] ;" eval( -- ) ] unit-test | 
					
						
							|  |  |  |     [ "IN: macros.tests USE: macros MACRO: foo ( -- x ) [ ] ; inline" eval( -- ) ] must-fail | 
					
						
							| 
									
										
										
										
											2010-02-01 12:56:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! The macro expander code should infer | 
					
						
							|  |  |  | MACRO: bad-macro ( a -- b ) 1 2 3 [ ] ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Must fail twice, and not memoize a bad result | 
					
						
							|  |  |  | [ [ 0 bad-macro ] call ] must-fail | 
					
						
							|  |  |  | [ [ 0 bad-macro ] call ] must-fail | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ [ 0 bad-macro ] infer ] must-fail | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ ] [ [ \ bad-macro forget ] with-compilation-unit ] unit-test |