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
|
||||
updateREPLOpts
|
||||
session <- getSession
|
||||
case fname of
|
||||
Nothing => logTime "Loading prelude" $
|
||||
readPrelude
|
||||
Just f => logTime "Loading main file" $
|
||||
when (not $ noprelude session) $
|
||||
readPrelude
|
||||
Just f => logTime "Loading main file" $
|
||||
loadMainFile f
|
||||
|
||||
doRepl <- postOptions opts
|
||||
if doRepl
|
||||
then
|
||||
if doRepl
|
||||
then
|
||||
if ide || ideSocket
|
||||
then
|
||||
if not ideSocket
|
||||
then
|
||||
if not ideSocket
|
||||
then do
|
||||
setOutput (IDEMode 0 stdin stdout)
|
||||
replIDE {c} {u} {m}
|
||||
else do
|
||||
else do
|
||||
f <- coreLift $ initIDESocketFile 38398
|
||||
case f of
|
||||
Left err => do
|
||||
@ -149,8 +151,8 @@ stMain opts
|
||||
coreLift $ exit 1
|
||||
Right file => do
|
||||
setOutput (IDEMode 0 file file)
|
||||
replIDE {c} {u} {m}
|
||||
else do
|
||||
replIDE {c} {u} {m}
|
||||
else do
|
||||
iputStrLn $ "Welcome to Idris 2 version " ++ version
|
||||
++ ". Enjoy yourself!"
|
||||
repl {c} {u} {m}
|
||||
|
@ -5,7 +5,7 @@ import System
|
||||
%default covering
|
||||
|
||||
ttimpTests : List String
|
||||
ttimpTests
|
||||
ttimpTests
|
||||
= ["basic001", "basic002", "basic003", "basic004", "basic005",
|
||||
"basic006",
|
||||
"coverage001", "coverage002",
|
||||
@ -28,7 +28,7 @@ idrisTests
|
||||
"basic011", "basic012", "basic013", "basic014", "basic015",
|
||||
"basic016", "basic017", "basic018", "basic019", "basic020",
|
||||
"basic021", "basic022", "basic023", "basic024", "basic025",
|
||||
"basic026", "basic027",
|
||||
"basic026", "basic027", "basic028",
|
||||
"coverage001", "coverage002", "coverage003", "coverage004",
|
||||
"error001", "error002", "error003", "error004", "error005",
|
||||
"error006", "error007", "error008", "error009", "error010",
|
||||
@ -59,16 +59,16 @@ typeddTests
|
||||
|
||||
chezTests : List String
|
||||
chezTests
|
||||
= ["chez001", "chez002", "chez003", "chez004",
|
||||
= ["chez001", "chez002", "chez003", "chez004",
|
||||
"chez005", "chez006", "chez007"]
|
||||
|
||||
chdir : String -> IO Bool
|
||||
chdir dir
|
||||
chdir dir
|
||||
= do ok <- foreign FFI_C "chdir" (String -> IO Int) dir
|
||||
pure (ok == 0)
|
||||
|
||||
fail : String -> IO ()
|
||||
fail err
|
||||
fail err
|
||||
= do putStrLn err
|
||||
exitWith (ExitFailure 1)
|
||||
|
||||
@ -135,7 +135,7 @@ main
|
||||
then runChezTests idris2 filteredChezTests
|
||||
else pure []
|
||||
let res = nonCGTestRes ++ chezTestRes
|
||||
putStrLn (show (length (filter id res)) ++ "/" ++ show (length res)
|
||||
putStrLn (show (length (filter id res)) ++ "/" ++ show (length res)
|
||||
++ " tests successful")
|
||||
if (any not res)
|
||||
then exitWith (ExitFailure 1)
|
||||
@ -143,4 +143,3 @@ main
|
||||
where
|
||||
testPaths : String -> List String -> List String
|
||||
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