Merge pull request #66 from abailly/no-prelude

check noprelude option when starting up without loading a file
This commit is contained in:
Edwin Brady 2019-07-30 16:47:08 +01:00 committed by GitHub
commit f39b736110
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 84 additions and 16 deletions

View File

@ -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}

View File

@ -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

View 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

View 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!

View 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
View File

@ -0,0 +1,5 @@
unset IDRIS2_PATH
$1 --no-prelude < input
rm -rf build