@@ -100,18 +100,18 @@ data FFI = FFICode Char | FFIArg Int | FFIError String
100100ffi :: String -> [String] -> String
101101ffi code args = let parsed = ffiParse code in
102102 case ffiError parsed of
103− Just err -> compileJS $ jsError err
103+ Just err -> error err
104104 Nothing -> renderFFI parsed args
105105 where
106106 ffiParse :: String -> [FFI]
107107 ffiParse "" = []
108− ffiParse ['%'] = [FFIError "Invalid positional argument"]
108+ ffiParse ['%'] = [FFIError $ "FFI - Invalid positional argument"]
109109 ffiParse ('%':'%':ss) = FFICode '%' : ffiParse ss
110110 ffiParse ('%':s:ss)
111111 | isDigit s =
112112 FFIArg (read $ s : takeWhile isDigit ss) : ffiParse (dropWhile isDigit ss)
113113 | otherwise =
114− [FFIError "Invalid positional argument"]
114+ [FFIError $ "FFI - Invalid positional argument"]
115115 ffiParse (s:ss) = FFICode s : ffiParse ss
116116
117117
@@ -126,7 +126,7 @@ ffi code args = let parsed = ffiParse code in
126126 renderFFI ((FFICode c) : fs) args = c : renderFFI fs args
127127 renderFFI ((FFIArg i) : fs) args
128128 | i < length args && i >= 0 = args !! i ++ renderFFI fs args
129− | otherwise = "Argument index out of bounds"
129+ | otherwise = error "FFI - Argument index out of bounds"
130130
131131
132132compileJS :: JS -> String
@@ -1964,6 +1964,9 @@ translateExpression (SForeign _ _ "isNull" [(FPtr, var)]) =
19641964translateExpression (SForeign _ _ "idris_eqPtr" [(FPtr, lhs),(FPtr, rhs)]) =
19651965 JSBinOp "==" (JSVar lhs) (JSVar rhs)
19661966
1967+translateExpression (SForeign _ _ "idris_time" []) =
1968+ JSRaw "(new Date()).getTime()"
1969+
19671970translateExpression (SForeign _ _ fun args) =
19681971 JSFFI fun (map generateWrapper args)
19691972 where