parsing: show a better error for illegal month/day numbers in dates
This commit is contained in:
		
							parent
							
								
									cd8dffc485
								
							
						
					
					
						commit
						b2c8933af4
					
				| @ -262,11 +262,10 @@ ymd = do | |||||||
|   y <- many1 digit |   y <- many1 digit | ||||||
|   datesepchar |   datesepchar | ||||||
|   m <- try (count 2 digit) <|> count 1 digit |   m <- try (count 2 digit) <|> count 1 digit | ||||||
|   guard (read m >= 1 && (read m <= 12)) |   when (read m < 1 || (read m > 12)) $ error $ "bad month number: " ++ m | ||||||
|   -- when (read m < 1 || (read m > 12)) $ fail "bad month number specified" |  | ||||||
|   datesepchar |   datesepchar | ||||||
|   d <- try (count 2 digit) <|> count 1 digit |   d <- try (count 2 digit) <|> count 1 digit | ||||||
|   when (read d < 1 || (read d > 31)) $ fail "bad day number specified" |   when (read d < 1 || (read d > 31)) $ error $ "bad day number: " ++ d | ||||||
|   return $ (y,m,d) |   return $ (y,m,d) | ||||||
| 
 | 
 | ||||||
| ym :: GenParser Char st SmartDate | ym :: GenParser Char st SmartDate | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								tests/parse-dates.test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tests/parse-dates.test
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | # dates with bad month or day numbers should be rejected | ||||||
|  | -f- print | ||||||
|  | <<< | ||||||
|  | 2010/31/12 x | ||||||
|  |    a  1 | ||||||
|  |    b | ||||||
|  | >>>2 /bad month number: 31/ | ||||||
|  | >>>= 1 | ||||||
|  | -f- print | ||||||
|  | <<< | ||||||
|  | 2010/12/32 x | ||||||
|  |    a  1 | ||||||
|  |    b | ||||||
|  | >>>2 /bad day number: 32/ | ||||||
|  | >>>= 1 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user