Skip to content

Commit

Permalink
Merge pull request idris-lang#66 from abailly/no-prelude
Browse files Browse the repository at this point in the history
check noprelude option when starting up without loading a file
  • Loading branch information
edwinb authored Jul 30, 2019
2 parents 147d81f + ff7180e commit f39b736
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 16 deletions.
20 changes: 11 additions & 9 deletions src/Idris/Main.idr
Original file line number Diff line number Diff line change
Expand Up @@ -126,31 +126,33 @@ 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
coreLift $ putStrLn err
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}
Expand Down
13 changes: 6 additions & 7 deletions tests/Main.idr
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import System
%default covering

ttimpTests : List String
ttimpTests
ttimpTests
= ["basic001", "basic002", "basic003", "basic004", "basic005",
"basic006",
"coverage001", "coverage002",
Expand All @@ -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",
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -135,12 +135,11 @@ 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)
else exitWith ExitSuccess
where
testPaths : String -> List String -> List String
testPaths dir tests = map (\test => dir ++ "/" ++ test) tests

49 changes: 49 additions & 0 deletions tests/idris2/basic028/Do.idr
Original file line number Diff line number Diff line change
@@ -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 changes: 7 additions & 0 deletions tests/idris2/basic028/expected
Original file line number Diff line number Diff line change
@@ -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 changes: 6 additions & 0 deletions tests/idris2/basic028/input
Original file line number Diff line number Diff line change
@@ -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 changes: 5 additions & 0 deletions tests/idris2/basic028/run
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
unset IDRIS2_PATH

$1 --no-prelude < input

rm -rf build

0 comments on commit f39b736

Please sign in to comment.