mirror of
https://github.com/edwinb/Idris2-boot.git
synced 2024-12-26 22:32:44 +03:00
Merge pull request #66 from abailly/no-prelude
check noprelude option when starting up without loading a file
This commit is contained in:
commit
f39b736110
@ -126,22 +126,24 @@ stMain opts
|
|||||||
|
|
||||||
u <- newRef UST initUState
|
u <- newRef UST initUState
|
||||||
updateREPLOpts
|
updateREPLOpts
|
||||||
|
session <- getSession
|
||||||
case fname of
|
case fname of
|
||||||
Nothing => logTime "Loading prelude" $
|
Nothing => logTime "Loading prelude" $
|
||||||
readPrelude
|
when (not $ noprelude session) $
|
||||||
Just f => logTime "Loading main file" $
|
readPrelude
|
||||||
|
Just f => logTime "Loading main file" $
|
||||||
loadMainFile f
|
loadMainFile f
|
||||||
|
|
||||||
doRepl <- postOptions opts
|
doRepl <- postOptions opts
|
||||||
if doRepl
|
if doRepl
|
||||||
then
|
then
|
||||||
if ide || ideSocket
|
if ide || ideSocket
|
||||||
then
|
then
|
||||||
if not ideSocket
|
if not ideSocket
|
||||||
then do
|
then do
|
||||||
setOutput (IDEMode 0 stdin stdout)
|
setOutput (IDEMode 0 stdin stdout)
|
||||||
replIDE {c} {u} {m}
|
replIDE {c} {u} {m}
|
||||||
else do
|
else do
|
||||||
f <- coreLift $ initIDESocketFile 38398
|
f <- coreLift $ initIDESocketFile 38398
|
||||||
case f of
|
case f of
|
||||||
Left err => do
|
Left err => do
|
||||||
@ -149,8 +151,8 @@ stMain opts
|
|||||||
coreLift $ exit 1
|
coreLift $ exit 1
|
||||||
Right file => do
|
Right file => do
|
||||||
setOutput (IDEMode 0 file file)
|
setOutput (IDEMode 0 file file)
|
||||||
replIDE {c} {u} {m}
|
replIDE {c} {u} {m}
|
||||||
else do
|
else do
|
||||||
iputStrLn $ "Welcome to Idris 2 version " ++ version
|
iputStrLn $ "Welcome to Idris 2 version " ++ version
|
||||||
++ ". Enjoy yourself!"
|
++ ". Enjoy yourself!"
|
||||||
repl {c} {u} {m}
|
repl {c} {u} {m}
|
||||||
|
@ -5,7 +5,7 @@ import System
|
|||||||
%default covering
|
%default covering
|
||||||
|
|
||||||
ttimpTests : List String
|
ttimpTests : List String
|
||||||
ttimpTests
|
ttimpTests
|
||||||
= ["basic001", "basic002", "basic003", "basic004", "basic005",
|
= ["basic001", "basic002", "basic003", "basic004", "basic005",
|
||||||
"basic006",
|
"basic006",
|
||||||
"coverage001", "coverage002",
|
"coverage001", "coverage002",
|
||||||
@ -28,7 +28,7 @@ idrisTests
|
|||||||
"basic011", "basic012", "basic013", "basic014", "basic015",
|
"basic011", "basic012", "basic013", "basic014", "basic015",
|
||||||
"basic016", "basic017", "basic018", "basic019", "basic020",
|
"basic016", "basic017", "basic018", "basic019", "basic020",
|
||||||
"basic021", "basic022", "basic023", "basic024", "basic025",
|
"basic021", "basic022", "basic023", "basic024", "basic025",
|
||||||
"basic026", "basic027",
|
"basic026", "basic027", "basic028",
|
||||||
"coverage001", "coverage002", "coverage003", "coverage004",
|
"coverage001", "coverage002", "coverage003", "coverage004",
|
||||||
"error001", "error002", "error003", "error004", "error005",
|
"error001", "error002", "error003", "error004", "error005",
|
||||||
"error006", "error007", "error008", "error009", "error010",
|
"error006", "error007", "error008", "error009", "error010",
|
||||||
@ -59,16 +59,16 @@ typeddTests
|
|||||||
|
|
||||||
chezTests : List String
|
chezTests : List String
|
||||||
chezTests
|
chezTests
|
||||||
= ["chez001", "chez002", "chez003", "chez004",
|
= ["chez001", "chez002", "chez003", "chez004",
|
||||||
"chez005", "chez006", "chez007"]
|
"chez005", "chez006", "chez007"]
|
||||||
|
|
||||||
chdir : String -> IO Bool
|
chdir : String -> IO Bool
|
||||||
chdir dir
|
chdir dir
|
||||||
= do ok <- foreign FFI_C "chdir" (String -> IO Int) dir
|
= do ok <- foreign FFI_C "chdir" (String -> IO Int) dir
|
||||||
pure (ok == 0)
|
pure (ok == 0)
|
||||||
|
|
||||||
fail : String -> IO ()
|
fail : String -> IO ()
|
||||||
fail err
|
fail err
|
||||||
= do putStrLn err
|
= do putStrLn err
|
||||||
exitWith (ExitFailure 1)
|
exitWith (ExitFailure 1)
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ main
|
|||||||
then runChezTests idris2 filteredChezTests
|
then runChezTests idris2 filteredChezTests
|
||||||
else pure []
|
else pure []
|
||||||
let res = nonCGTestRes ++ chezTestRes
|
let res = nonCGTestRes ++ chezTestRes
|
||||||
putStrLn (show (length (filter id res)) ++ "/" ++ show (length res)
|
putStrLn (show (length (filter id res)) ++ "/" ++ show (length res)
|
||||||
++ " tests successful")
|
++ " tests successful")
|
||||||
if (any not res)
|
if (any not res)
|
||||||
then exitWith (ExitFailure 1)
|
then exitWith (ExitFailure 1)
|
||||||
@ -143,4 +143,3 @@ main
|
|||||||
where
|
where
|
||||||
testPaths : String -> List String -> List String
|
testPaths : String -> List String -> List String
|
||||||
testPaths dir tests = map (\test => dir ++ "/" ++ test) tests
|
testPaths dir tests = map (\test => dir ++ "/" ++ test) tests
|
||||||
|
|
||||||
|
49
tests/idris2/basic028/Do.idr
Normal file
49
tests/idris2/basic028/Do.idr
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
data Maybe a = Nothing
|
||||||
|
| Just a
|
||||||
|
|
||||||
|
infixl 1 >>=
|
||||||
|
|
||||||
|
(>>=) : Maybe a -> (a -> Maybe b) -> Maybe b
|
||||||
|
(>>=) Nothing k = Nothing
|
||||||
|
(>>=) (Just x) k = k x
|
||||||
|
|
||||||
|
data Nat : Type where
|
||||||
|
Z : Nat
|
||||||
|
S : Nat -> Nat
|
||||||
|
|
||||||
|
plus : Nat -> Nat -> Nat
|
||||||
|
plus Z y = y
|
||||||
|
plus (S k) y = S (plus k y)
|
||||||
|
|
||||||
|
maybeAdd' : Maybe Nat -> Maybe Nat -> Maybe Nat
|
||||||
|
maybeAdd' x y
|
||||||
|
= x >>= \x' =>
|
||||||
|
y >>= \y' =>
|
||||||
|
Just (plus x' y')
|
||||||
|
|
||||||
|
maybeAdd : Maybe Nat -> Maybe Nat -> Maybe Nat
|
||||||
|
maybeAdd x y
|
||||||
|
= do x' <- x
|
||||||
|
y' <- y
|
||||||
|
Just (plus x' y')
|
||||||
|
|
||||||
|
data Either : Type -> Type -> Type where
|
||||||
|
Left : a -> Either a b
|
||||||
|
Right : b -> Either a b
|
||||||
|
|
||||||
|
mEmbed : Maybe a -> Maybe (Either String a)
|
||||||
|
mEmbed Nothing = Just (Left "FAIL")
|
||||||
|
mEmbed (Just x) = Just (Right x)
|
||||||
|
|
||||||
|
mPatBind : Maybe Nat -> Maybe Nat -> Maybe Nat
|
||||||
|
mPatBind x y
|
||||||
|
= do Right res <- mEmbed (maybeAdd x y)
|
||||||
|
| Left err => Just Z
|
||||||
|
Just res
|
||||||
|
|
||||||
|
mLetBind : Maybe Nat -> Maybe Nat -> Maybe Nat
|
||||||
|
mLetBind x y
|
||||||
|
= do let Just res = maybeAdd x y
|
||||||
|
| Nothing => Just Z
|
||||||
|
Just res
|
||||||
|
|
7
tests/idris2/basic028/expected
Normal file
7
tests/idris2/basic028/expected
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Welcome to Idris 2 version 0.0. Enjoy yourself!
|
||||||
|
Main> 1/1: Building Do (Do.idr)
|
||||||
|
Main> Just (S (S (S Z)))
|
||||||
|
Main> Just Z
|
||||||
|
Main> Just (S (S (S Z)))
|
||||||
|
Main> Just Z
|
||||||
|
Main> Bye for now!
|
6
tests/idris2/basic028/input
Normal file
6
tests/idris2/basic028/input
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
:l Do.idr
|
||||||
|
mPatBind (Just (S Z)) (Just (S (S Z)))
|
||||||
|
mPatBind (Just (S Z)) Nothing
|
||||||
|
mLetBind (Just (S Z)) (Just (S (S Z)))
|
||||||
|
mLetBind (Just (S Z)) Nothing
|
||||||
|
:q
|
5
tests/idris2/basic028/run
Executable file
5
tests/idris2/basic028/run
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
unset IDRIS2_PATH
|
||||||
|
|
||||||
|
$1 --no-prelude < input
|
||||||
|
|
||||||
|
rm -rf build
|
Loading…
Reference in New Issue
Block a user