math.complex: Check C{ } syntax -- can only have two elements in the complex array. Fixes #612.
							parent
							
								
									0178117d6c
								
							
						
					
					
						commit
						2b45ba9a4f
					
				| 
						 | 
				
			
			@ -76,3 +76,6 @@ IN: math.complex.tests
 | 
			
		|||
10 number-base [
 | 
			
		||||
    [ "C{ 1/2 2/3 }" ] [ C{ 1/2 2/3 } unparse ] unit-test
 | 
			
		||||
] with-variable
 | 
			
		||||
 | 
			
		||||
[ "C{ 1 2 3 }" eval( -- obj ) ]
 | 
			
		||||
[ error>> T{ malformed-complex f V{ 1 2 3 } } = ] must-fail-with
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,8 @@
 | 
			
		|||
! Copyright (C) 2006, 2009 Slava Pestov.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: accessors kernel kernel.private math math.private
 | 
			
		||||
math.functions arrays math.functions.private sequences parser ;
 | 
			
		||||
math.functions arrays math.functions.private sequences
 | 
			
		||||
sequences.private parser ;
 | 
			
		||||
IN: math.complex.private
 | 
			
		||||
 | 
			
		||||
M: real real-part ; inline
 | 
			
		||||
| 
						 | 
				
			
			@ -30,7 +31,12 @@ M: complex sqrt >polar [ sqrt ] [ 2.0 / ] bi* polar> ; inline
 | 
			
		|||
 | 
			
		||||
IN: syntax
 | 
			
		||||
 | 
			
		||||
SYNTAX: C{ \ } [ first2 rect> ] parse-literal ;
 | 
			
		||||
ERROR: malformed-complex obj ;
 | 
			
		||||
 | 
			
		||||
: parse-complex ( seq -- complex )
 | 
			
		||||
    dup length 2 = [ first2-unsafe rect> ] [ malformed-complex ] if ;
 | 
			
		||||
 | 
			
		||||
SYNTAX: C{ \ } [ parse-complex ] parse-literal ;
 | 
			
		||||
 | 
			
		||||
USE: prettyprint.custom
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue