Exception: Time.toClockTime: picoseconds out of range
Got the "picoseconds out of range" exception when using addToClockTime TimeDiff ClockTime from System.Time
If you evaluate test1 or test3 you will either get a result or an exception.[[BR]] If you evaluate test2 you'll see that the TimeDiff often has a picosecond field that results in values outside the [0..999999999999] range enforced by 'toClockTime' of Time.hsc, as called from 'addToClockTime' in Time.hsc.
--BEGIN CODE--
module Test where
import System.IO
import System.Time
testTD = TimeDiff {
tdYear = 0,
tdMonth = 0,
tdDay = 0,
tdHour = 0,
tdMin = 10,
tdSec = 0,
tdPicosec = 0
}
test1 t = do
to <- tdUntil (addToClockTime testTD t) >>= return . tdToSeconds
hPutStrLn stdout ("timeout is:" ++ show to)
test2 t = do
td <- tdUntil (addToClockTime testTD t)-- >>= return . tdToSeconds
hPutStrLn stdout ("timediff is: " ++ show td)
test3 t = do
toct <- tdUntil (addToClockTime testTD t) >>= return . (\td -> addToClockTime td (TOD 0 0))
hPutStrLn stdout ("timeout ct is" ++ show toct)
tdToSeconds :: TimeDiff -> Integer
tdToSeconds td = s where
TOD s p = addToClockTime td (TOD 0 0)
tdUntil :: ClockTime -> IO TimeDiff
tdUntil ct = getClockTime >>= return . (diffClockTimes ct)
--END CODE--
Trac metadata
| Trac field | Value |
|---|---|
| Version | 6.4.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | GHCi |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |