on master help sign in
Merge branch 'master' of github.com:edwinb/Idris-dev
commitd7d31d16ec857d586186ddc6c37e3b65b3e1cd9e authorEdwin Brady <ecb10@st-andrews.ac.uk> dateMon 28 Oct 2013, 23:38 (13 years ago) parent229975df98c7bf
6 files changed+15−23
.gitignore−1 .travis.yml+2 idris.cabal+1−1 java/executable_pom_template.xml → java/executable_pom.xml+1−1 src/Core/Execute.hs+10−19 src/Util/System.hs+1−1
.gitignore−1
@@ -10,7 +10,6 @@ cabal-dev/
1010*~
1111.DS_Store
1212custom.mk
13−java/executable_pom.xml
1413test/output
1514test/test???/output
1615test/reg???/output
.travis.yml+2
@@ -14,3 +14,5 @@ script:
1414 - cabal copy
1515 - make test
1616 - make test_llvm
17+ - make test_java
18+
idris.cabal+1−1
@@ -57,6 +57,7 @@ Data-files: jsrts/Runtime-browser.js
5757 rts/idris_rts.h
5858 rts/idris_stdfgn.h
5959 rts/libtest.c
60+ java/*.xml
6061
6162Extra-source-files:
6263 Makefile
@@ -86,7 +87,6 @@ Extra-source-files:
8687 effects/Effect/*.idr
8788 effects/*.idr
8889
89− java/*.xml
9090
9191 javascript/*.idr
9292 javascript/JavaScript/*.idr
java/executable_pom_template.xml → java/executable_pom.xmlrenamed+1−1
@@ -15,7 +15,7 @@
1515 <dependency>
1616 <groupId>org.idris-lang</groupId>
1717 <artifactId>idris</artifactId>
18− <version>0.9.10-alpha-1</version>
18+ <version>0.9.10-alpha-2</version>
1919 </dependency>
2020$DEPENDENCIES$
2121 </dependencies>
src/Core/Execute.hs+10−19
@@ -409,10 +409,7 @@ data Foreign = FFun String [FType] FType deriving Show
409409call :: Foreign -> [ExecVal] -> Exec (Maybe ExecVal)
410410call (FFun name argTypes retType) args =
411411 do fn <- findForeign name
412− case fn of
413− Nothing -> return Nothing
414− Just f -> do res <- call' f args retType
415− return . Just . ioWrap $ res
412+ maybe (return Nothing) (\f -> Just . ioWrap <$> call' f args retType) fn
416413 where call' :: ForeignFun -> [ExecVal] -> FType -> Exec ExecVal
417414 call' (Fun _ h) args (FArith (ATInt ITNative)) = do
418415 res <- execIO $ callFFI h retCInt (prepArgs args)
@@ -440,10 +437,9 @@ call (FFun name argTypes retType) args =
440437-- lift $ free res
441438 return (EConstant (Str hStr))
442439
443− call' (Fun _ h) args FPtr = do res <- execIO $ callFFI h (retPtr retVoid) (prepArgs args)
444− return (EPtr res)
445− call' (Fun _ h) args FUnit = do res <- execIO $ callFFI h retVoid (prepArgs args)
446− return (EP Ref unitCon EErased)
440+ call' (Fun _ h) args FPtr = EPtr <$> (execIO $ callFFI h (retPtr retVoid) (prepArgs args))
441+ call' (Fun _ h) args FUnit = do _ <- execIO $ callFFI h retVoid (prepArgs args)
442+ return $ EP Ref unitCon EErased
447443-- call' (Fun _ h) args other = fail ("Unsupported foreign return type " ++ show other)
448444
449445
@@ -511,21 +507,16 @@ toConst (Constant c) = Just c
511507toConst _ = Nothing
512508
513509stepForeign :: [ExecVal] -> Exec (Maybe ExecVal)
514−stepForeign (ty:fn:args) = do let ffun = foreignFromTT fn
515− f' <- case (call <$> ffun) of
516− Just f -> f args
517− Nothing -> return Nothing
518− return f'
510+stepForeign (ty:fn:args) = let ffun = foreignFromTT fn
511+ in case (call <$> ffun) of
512+ Just f -> f args
513+ Nothing -> return Nothing
519514stepForeign _ = fail "Tried to call foreign function that wasn't mkForeignPrim"
520515
521−mapMaybeM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
516+mapMaybeM :: (Functor m, Monad m) => (a -> m (Maybe b)) -> [a] -> m [b]
522517mapMaybeM f [] = return []
523518mapMaybeM f (x:xs) = do rest <- mapMaybeM f xs
524− x' <- f x
525− case x' of
526− Just x'' -> return (x'':rest)
527− Nothing -> return rest
528−
519+ maybe rest (:rest) <$> f x
529520findForeign :: String -> Exec (Maybe ForeignFun)
530521findForeign fn = do est <- getExecState
531522 let libs = exec_dynamic_libs est
src/Util/System.hs+1−1
@@ -84,4 +84,4 @@ getIncFlags = do dir <- getDataDir
8484 return $ "-I" ++ dir </> "rts"
8585
8686getExecutablePom = do dir <- getDataDir
87− return $ dir </> "executable_pom.xml"
87+ return $ dir </> "java" </> "executable_pom.xml"