diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4842af529..eb64a3bfc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,4 +1,4 @@
-name: MiniJuvix CI
+name: The Juvix compiler CI
on:
pull_request:
diff --git a/.github_changelog_generator b/.github_changelog_generator
index b860fa64f..2e7f61d78 100644
--- a/.github_changelog_generator
+++ b/.github_changelog_generator
@@ -1,6 +1,6 @@
output=CHANGELOG.md
-project=minijuvix
+project=juvix
issues=false
pulls=true
-user=heliaxdev
+user=anoma
verbose=false
diff --git a/.gitignore b/.gitignore
index cd8092786..d08677416 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,10 +63,10 @@ agda/
agda2hs/
docs/*.html
*.cabal
-/src/MiniJuvix/Utils/OldParser.hs
+/src/Juvix/Utils/OldParser.hs
CHANGELOG.md
UPDATES-FOR-CHANGELOG.org
-.minijuvix-build
+.juvix-build
# C Code generation
*.wasm
diff --git a/.gitmodules b/.gitmodules
index d77a21f01..b3b87bbdf 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
-[submodule "minijuvix-stdlib"]
- path = minijuvix-stdlib
- url = https://github.com/heliaxdev/minijuvix-stdlib.git
+[submodule "juvix-stdlib"]
+ path = juvix-stdlib
+ url = https://github.com/anoma/juvix-stdlib.git
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index e38d7c8f9..7953bf912 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -17,7 +17,7 @@ repos:
- id: mixed-line-ending
exclude: tests/
-- repo: https://github.com/heliaxdev/minijuvix
+- repo: https://github.com/anoma/juvix
rev: 6f5c3fc2bc70cf65594d3b74fb62e75e8fcfac5b
hooks:
- id: ormolu
diff --git a/Makefile b/Makefile
index f0482d266..cc69c1056 100644
--- a/Makefile
+++ b/Makefile
@@ -64,6 +64,13 @@ docs :
cd docs ; \
sh conv.sh
+.PHONY: ci
+ci:
+ make ci-build
+ make install
+ make ci-test
+ make test-shell
+
.PHONY : build
build:
stack build --fast --jobs $(THREADS)
@@ -128,7 +135,7 @@ install-watch:
stack install --fast --jobs $(THREADS) --file-watch
repl:
- stack ghci MiniJuvix:lib
+ stack ghci Juvix:lib
.PHONY : install-pre-commit
install-pre-commit:
@@ -143,9 +150,9 @@ pre-commit :
update-submodules :
git submodule foreach git pull origin main
-.PHONY : minijuvix-stdlib
-minijuvix-stdlib:
- git submodule update --init minijuvix-stdlib
+.PHONY : juvix-stdlib
+juvix-stdlib:
+ git submodule update --init juvix-stdlib
.PHONY : get-changelog-updates
get-changelog-updates :
diff --git a/README.org b/README.org
index 3bdfc9c43..6d2b076b6 100644
--- a/README.org
+++ b/README.org
@@ -1,41 +1,41 @@
-* MiniJuvix
+* Juvix
#+begin_html
-
-
+
+
#+end_html
#+begin_html
-
-
+
+
#+end_html
#+begin_html
-
+
#+end_html
#+begin_html
-
#+end_html
#+begin_html
-
-
+
+
#+end_html
** Description
-MiniJuvix is a research programming language created by [[https://heliax.dev/][Heliax]] as a first step toward creating more robust and reliable alternatives for formally verified smart contracts than existing languages. The MiniJuvix language is constantly evolving, open-source, functional, and statically typed with special support for compiling [[https://anoma.network/blog/validity-predicates/][validity predicates]] to the =C= language, which can be deployed to various distributed ledgers including [[https://anoma.net/][Anoma]].
+Juvix is a research programming language created by [[https://heliax.dev/][Heliax]] as a first step toward creating more robust and reliable alternatives for formally verified smart contracts than existing languages. The Juvix language is constantly evolving, open-source, functional, and statically typed with special support for compiling [[https://anoma.network/blog/validity-predicates/][validity predicates]] to the =C= language, which can be deployed to various distributed ledgers including [[https://anoma.net/][Anoma]].
-The MiniJuvix programming language allows developers to write programs with a high degree of assurance that they will meet specific standards. This is due to the fact that several static analyses are performed during compilation, including, for example, scope, termination, arity, and type checking. As a result, functional programs, especially validity predicates, can be written with greater confidence that they will be free of runtime errors. [[https://github.com/heliaxdev/minijuvix/tree/main/examples/milestone][Here are some examples of MiniJuvix programs]].
+The Juvix programming language allows developers to write programs with a high degree of assurance that they will meet specific standards. This is due to the fact that several static analyses are performed during compilation, including, for example, scope, termination, arity, and type checking. As a result, functional programs, especially validity predicates, can be written with greater confidence that they will be free of runtime errors. [[https://github.com/anoma/juvix/tree/main/examples/milestone][Here are some examples of Juvix programs]].
The language features:
@@ -47,48 +47,48 @@ The language features:
- holes in programs
- axioms for non-computable terms
-Additionally, the foreign and compile blocks syntax enable developers to compile a program to different backends including the =C= language. The MiniJuvix module system further permits splitting programs into several modules to build libraries which can be later documented by generating HTML files based on the codebase, see for example, [[https://heliaxdev.github.io/minijuvix-stdlib/][the Minijuvix standard library's website]]. For futher details, please refer to [[https://heliaxdev.github.io/minijuvix/][the MiniJuvix book]] which icludes our [[https://heliaxdev.github.io/minijuvix/introduction/changelog.html][latest updates]].
+Additionally, the foreign and compile blocks syntax enable developers to compile a program to different backends including the =C= language. The Juvix module system further permits splitting programs into several modules to build libraries which can be later documented by generating HTML files based on the codebase, see for example, [[https://anoma.github.io/juvix-stdlib/][the Juvix standard library's website]]. For futher details, please refer to [[https://anoma.github.io/juvix/][the Juvix book]] which icludes our [[https://anoma.github.io/juvix/introduction/changelog.html][latest updates]].
** Quick Start
-To install MiniJuvix, you can download its sources using
+To install Juvix, you can download its sources using
[[http://git-scm.com/][Git]] from the
[[https://github.com/anoma/juvix.git][Github repository]]. Then, the
program can be downloaded and installed with the following commands. You
will need to have [[https://haskellstack.org][Stack]] installed.
#+begin_src shell
-git clone --recursive https://github.com/heliaxdev/minijuvix.git
-cd minijuvix
+git clone --recursive https://github.com/anoma/juvix.git
+cd juvix
stack install
#+end_src
-If the installation succeeds, you must be able to run the =minijuvix=
+If the installation succeeds, you must be able to run the =juvix=
command from any location. To get the complete list of commands, please
-run =minijuvix --help=.
+run =juvix --help=.
** Usage Example
-In the following example a MiniJuvix file is compiled using the C backend. The
+In the following example a Juvix file is compiled using the C backend. The
result is compiled to WASM using [[https://llvm.org][Clang]] and then executed using [[https://wasmer.io][wasmer]].
NB: Set the =WASI_SYSROOT_PATH= environment variable to the root of the WASI
-sysroot. See [[https://heliaxdev.github.io/minijuvix/getting-started/dependencies.html][Installing dependencies]] for instructions on how to install the
+sysroot. See [[https://anoma.github.io/juvix/getting-started/dependencies.html][Installing dependencies]] for instructions on how to install the
sysroot.
#+begin_src shell
cd tests/positive/MiniC/HelloWorld
-minijuvix compile Input.mjuvix
+juvix compile Input.juvix
wasmer Input.wasm
#+end_src
You should see the output: =hello world!=
-** The MiniJuvix Book
+** The Juvix Book
-The MiniJuvix language and related tools are documented in [[https://heliaxdev.github.io/minijuvix/][the MiniJuvix book]].
+The Juvix language and related tools are documented in [[https://anoma.github.io/juvix/][the Juvix book]].
** Community
-We would love to hear what you think of MiniJuvix! Join us on
+We would love to hear what you think of Juvix! Join us on
[[https://discord.gg/nsGaCZzJ][Discord]]
diff --git a/app/App.hs b/app/App.hs
index 8beea8b51..90ec98d00 100644
--- a/app/App.hs
+++ b/app/App.hs
@@ -1,18 +1,18 @@
module App where
import GlobalOptions
-import MiniJuvix.Pipeline
-import MiniJuvix.Prelude hiding (Doc)
-import MiniJuvix.Prelude.Error qualified as Error
-import MiniJuvix.Prelude.Pretty hiding (Doc)
+import Juvix.Pipeline
+import Juvix.Prelude hiding (Doc)
+import Juvix.Prelude.Error qualified as Error
+import Juvix.Prelude.Pretty hiding (Doc)
import System.Console.ANSI qualified as Ansi
data App m a where
ExitMsg :: ExitCode -> Text -> App m ()
- ExitMiniJuvixError :: MiniJuvixError -> App m a
+ ExitJuvixError :: JuvixError -> App m a
ReadGlobalOptions :: App m GlobalOptions
RenderStdOut :: (HasAnsiBackend a, HasTextBackend a) => a -> App m ()
- RunPipelineEither :: Sem PipelineEff a -> App m (Either MiniJuvixError a)
+ RunPipelineEither :: Sem PipelineEff a -> App m (Either JuvixError a)
Say :: Text -> App m ()
makeSem ''App
@@ -29,7 +29,7 @@ runAppIO g = interpret $ \case
Say t
| g ^. globalOnlyErrors -> return ()
| otherwise -> embed (putStrLn t)
- ExitMiniJuvixError e -> do
+ ExitJuvixError e -> do
(embed . hPutStrLn stderr . Error.render (not (g ^. globalNoColors)) (g ^. globalOnlyErrors)) e
embed exitFailure
ExitMsg exitCode t -> embed (putStrLn t >> exitWith exitCode)
@@ -38,7 +38,7 @@ runPipeline :: Member App r => Sem PipelineEff a -> Sem r a
runPipeline p = do
r <- runPipelineEither p
case r of
- Left err -> exitMiniJuvixError err
+ Left err -> exitJuvixError err
Right res -> return res
newline :: Member App r => Sem r ()
diff --git a/app/CLI.hs b/app/CLI.hs
index bbbdd2323..1c6d62735 100644
--- a/app/CLI.hs
+++ b/app/CLI.hs
@@ -7,7 +7,7 @@ where
import Command
import GlobalOptions
-import MiniJuvix.Prelude hiding (Doc)
+import Juvix.Prelude hiding (Doc)
import Options.Applicative
import Options.Applicative.Builder.Internal
import Options.Applicative.Help.Pretty
@@ -54,13 +54,9 @@ descr =
info
parseCLI
( fullDesc
- <> progDesc "The MiniJuvix compiler."
- <> headerDoc (Just headDoc)
+ <> progDesc "The Juvix compiler."
<> footerDoc (Just foot)
)
where
- headDoc :: Doc
- headDoc = dullblue $ bold $ underline "MiniJuvix help"
-
foot :: Doc
- foot = bold "maintainers: " <> "The MiniJuvix Team"
+ foot = bold "maintainers: " <> "The Juvix Team"
diff --git a/app/Command.hs b/app/Command.hs
index deee73219..3311c9c70 100644
--- a/app/Command.hs
+++ b/app/Command.hs
@@ -18,8 +18,8 @@ import Commands.Parse
import Commands.Scope
import Commands.Termination
import GlobalOptions
-import MiniJuvix.Prelude hiding (Doc)
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty qualified as Scoper
+import Juvix.Prelude hiding (Doc)
+import Juvix.Syntax.Concrete.Scoped.Pretty qualified as Scoper
import Options.Applicative
data Command
@@ -68,28 +68,28 @@ commandCompile =
command "compile" $
info
(addGlobalOptions (Compile <$> parseCompile))
- (progDesc "Compile a MiniJuvix file")
+ (progDesc "Compile a Juvix file")
commandHighlight :: Mod CommandFields CommandGlobalOptions
commandHighlight =
command "highlight" $
info
(addGlobalOptions (pure Highlight))
- (progDesc "Highlight a MiniJuvix file")
+ (progDesc "Highlight a Juvix file")
commandHtml :: Mod CommandFields CommandGlobalOptions
commandHtml =
command "html" $
info
(addGlobalOptions (Html <$> parseHtml))
- (progDesc "Generate HTML for a MiniJuvix file")
+ (progDesc "Generate HTML for a Juvix file")
commandMiniC :: Mod CommandFields CommandGlobalOptions
commandMiniC =
command "minic" $
info
(addGlobalOptions (pure MiniC))
- (progDesc "Translate a MiniJuvix file to MiniC")
+ (progDesc "Translate a Juvix file to MiniC")
commandMicroJuvix :: Mod CommandFields CommandGlobalOptions
commandMicroJuvix =
@@ -103,35 +103,35 @@ commandMiniHaskell =
command "minihaskell" $
info
(addGlobalOptions (pure MiniHaskell))
- (progDesc "Translate a MiniJuvix file to MiniHaskell")
+ (progDesc "Translate a Juvix file to MiniHaskell")
commandMonoJuvix :: Mod CommandFields CommandGlobalOptions
commandMonoJuvix =
command "monojuvix" $
info
(addGlobalOptions (pure MonoJuvix))
- (progDesc "Translate a MiniJuvix file to MonoJuvix")
+ (progDesc "Translate a Juvix file to MonoJuvix")
commandParse :: Mod CommandFields CommandGlobalOptions
commandParse =
command "parse" $
info
(addGlobalOptions (Parse <$> parseParse))
- (progDesc "Parse a MiniJuvix file")
+ (progDesc "Parse a Juvix file")
commandScope :: Mod CommandFields CommandGlobalOptions
commandScope =
command "scope" $
info
(addGlobalOptions (Scope <$> parseScope))
- (progDesc "Parse and scope a MiniJuvix file")
+ (progDesc "Parse and scope a Juvix file")
commandShowRoot :: Mod CommandFields CommandGlobalOptions
commandShowRoot =
command "root" $
info
(liftParserCmd (pure DisplayRoot))
- (progDesc "Show the root path for a Minijuvix project")
+ (progDesc "Show the root path for a Juvix project")
commandTermination :: Mod CommandFields CommandGlobalOptions
commandTermination =
diff --git a/app/Commands/Compile.hs b/app/Commands/Compile.hs
index 320af2520..4818098c0 100644
--- a/app/Commands/Compile.hs
+++ b/app/Commands/Compile.hs
@@ -3,13 +3,13 @@ module Commands.Compile where
import Data.ByteString qualified as BS
import Data.FileEmbed qualified as FE
import Data.Text.IO qualified as TIO
-import MiniJuvix.Prelude hiding (Doc)
+import Juvix.Prelude hiding (Doc)
import Options.Applicative
import System.Environment
import System.Process qualified as P
-minijuvixBuildDir :: FilePath
-minijuvixBuildDir = ".minijuvix-build"
+juvixBuildDir :: FilePath
+juvixBuildDir = ".juvix-build"
data CompileTarget = TargetC | TargetWasm
deriving stock (Show)
@@ -85,14 +85,14 @@ parseCompile = do
inputCFile :: FilePath -> FilePath -> FilePath
inputCFile projRoot compileInputFile =
- projRoot > minijuvixBuildDir > outputMiniCFile
+ projRoot > juvixBuildDir > outputMiniCFile
where
outputMiniCFile :: FilePath
outputMiniCFile = takeBaseName compileInputFile <> ".c"
runCompile :: FilePath -> FilePath -> CompileOptions -> Text -> IO (Either Text ())
runCompile projRoot compileInputFile o minic = do
- createDirectoryIfMissing True (projRoot > minijuvixBuildDir)
+ createDirectoryIfMissing True (projRoot > juvixBuildDir)
TIO.writeFile (inputCFile projRoot compileInputFile) minic
prepareRuntime projRoot o
case o ^. compileTarget of
@@ -119,7 +119,7 @@ prepareRuntime projRoot o = do
writeRuntime :: (FilePath, BS.ByteString) -> IO ()
writeRuntime (filePath, contents) =
- BS.writeFile (projRoot > minijuvixBuildDir > takeFileName filePath) contents
+ BS.writeFile (projRoot > juvixBuildDir > takeFileName filePath) contents
clangCompile :: FilePath -> FilePath -> CompileOptions -> IO (Either Text ())
clangCompile projRoot compileInputFile o = do
@@ -150,7 +150,7 @@ clangCompile projRoot compileInputFile o = do
standaloneArgs :: FilePath -> FilePath -> FilePath -> FilePath -> [String]
standaloneArgs projRoot sysrootPath wasmOutputFile inputFile =
commonArgs sysrootPath wasmOutputFile
- <> [projRoot > minijuvixBuildDir > "walloc.c", inputFile]
+ <> [projRoot > juvixBuildDir > "walloc.c", inputFile]
libcArgs :: FilePath -> FilePath -> FilePath -> [String]
libcArgs sysrootPath wasmOutputFile inputFile =
@@ -163,7 +163,7 @@ commonArgs sysrootPath wasmOutputFile =
"-std=c99",
"-Oz",
"-I",
- minijuvixBuildDir,
+ juvixBuildDir,
"--target=wasm32-wasi",
"--sysroot",
sysrootPath,
diff --git a/app/Commands/Extra.hs b/app/Commands/Extra.hs
index 1ac1e0425..22bb4c5d7 100644
--- a/app/Commands/Extra.hs
+++ b/app/Commands/Extra.hs
@@ -1,6 +1,6 @@
module Commands.Extra where
-import MiniJuvix.Prelude hiding (Doc)
+import Juvix.Prelude hiding (Doc)
import Options.Applicative
import Options.Applicative.Builder.Internal
import Options.Applicative.Types
@@ -9,8 +9,8 @@ parserInputFile :: Parser FilePath
parserInputFile =
argument
str
- ( metavar "MINIJUVIX_FILE"
- <> help "Path to a .mjuvix file"
+ ( metavar "JUVIX_FILE"
+ <> help "Path to a .juvix file"
<> action "file"
)
diff --git a/app/Commands/Html.hs b/app/Commands/Html.hs
index 1f7937194..b94a49d1b 100644
--- a/app/Commands/Html.hs
+++ b/app/Commands/Html.hs
@@ -1,7 +1,7 @@
module Commands.Html where
-import MiniJuvix.Prelude hiding (Doc)
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Html
+import Juvix.Prelude hiding (Doc)
+import Juvix.Syntax.Concrete.Scoped.Pretty.Html
import Options.Applicative
data HtmlOptions = HtmlOptions
diff --git a/app/Commands/MicroJuvix.hs b/app/Commands/MicroJuvix.hs
index 30305d97d..9058684b8 100644
--- a/app/Commands/MicroJuvix.hs
+++ b/app/Commands/MicroJuvix.hs
@@ -1,6 +1,6 @@
module Commands.MicroJuvix where
-import MiniJuvix.Prelude hiding (Doc)
+import Juvix.Prelude hiding (Doc)
import Options.Applicative
data MicroJuvixCommand
@@ -36,19 +36,19 @@ parseMicroJuvixCommand =
arityInfo =
info
(pure Arity)
- (progDesc "Translate a MiniJuvix file to MicroJuvix and insert holes")
+ (progDesc "Translate a Juvix file to MicroJuvix and insert holes")
prettyInfo :: ParserInfo MicroJuvixCommand
prettyInfo =
info
(pure Pretty)
- (progDesc "Translate a MiniJuvix file to MicroJuvix and pretty print the result")
+ (progDesc "Translate a Juvix file to MicroJuvix and pretty print the result")
typeCheckInfo :: ParserInfo MicroJuvixCommand
typeCheckInfo =
info
(TypeCheck <$> parseMicroJuvixType)
- (progDesc "Translate a MiniJuvix file to MicroJuvix and typecheck the result")
+ (progDesc "Translate a Juvix file to MicroJuvix and typecheck the result")
parseMicroJuvixType :: Parser MicroJuvixTypeOptions
parseMicroJuvixType = do
diff --git a/app/Commands/Parse.hs b/app/Commands/Parse.hs
index 965c078b8..6ee9fbbce 100644
--- a/app/Commands/Parse.hs
+++ b/app/Commands/Parse.hs
@@ -2,7 +2,7 @@
module Commands.Parse where
-import MiniJuvix.Prelude hiding (Doc)
+import Juvix.Prelude hiding (Doc)
import Options.Applicative
newtype ParseOptions = ParseOptions
diff --git a/app/Commands/Scope.hs b/app/Commands/Scope.hs
index 1d3b1a674..291bfd3cc 100644
--- a/app/Commands/Scope.hs
+++ b/app/Commands/Scope.hs
@@ -1,6 +1,6 @@
module Commands.Scope where
-import MiniJuvix.Prelude hiding (Doc)
+import Juvix.Prelude hiding (Doc)
import Options.Applicative
newtype ScopeOptions = ScopeOptions
diff --git a/app/Commands/Termination.hs b/app/Commands/Termination.hs
index c3cfaa7c1..368c6b1cd 100644
--- a/app/Commands/Termination.hs
+++ b/app/Commands/Termination.hs
@@ -3,8 +3,8 @@ module Commands.Termination where
import Control.Monad.Extra
import Data.Text qualified as Text
import GlobalOptions
-import MiniJuvix.Prelude hiding (Doc)
-import MiniJuvix.Syntax.Abstract.Pretty.Base qualified as A
+import Juvix.Prelude hiding (Doc)
+import Juvix.Syntax.Abstract.Pretty.Base qualified as A
import Options.Applicative
data TerminationCommand
@@ -81,7 +81,7 @@ parseTerminationCommand =
minfo =
info
(Calls <$> parseCalls)
- (progDesc "Compute the calls table of a .mjuvix file")
+ (progDesc "Compute the calls table of a .juvix file")
commandGraph :: Mod CommandFields TerminationCommand
commandGraph = command "graph" minfo
where
@@ -89,7 +89,7 @@ parseTerminationCommand =
minfo =
info
(CallGraph <$> parseCallGraph)
- (progDesc "Compute the complete call graph of a .mjuvix file")
+ (progDesc "Compute the complete call graph of a .juvix file")
callsPrettyOptions :: GlobalOptions -> CallsOptions -> A.Options
callsPrettyOptions GlobalOptions {..} CallsOptions {..} =
diff --git a/app/GlobalOptions.hs b/app/GlobalOptions.hs
index 58e195772..2cf4b6835 100644
--- a/app/GlobalOptions.hs
+++ b/app/GlobalOptions.hs
@@ -4,7 +4,7 @@ module GlobalOptions
where
import Commands.Extra
-import MiniJuvix.Prelude
+import Juvix.Prelude
import Options.Applicative hiding (hidden)
data GlobalOptions = GlobalOptions
@@ -64,7 +64,7 @@ parseGlobalFlags b = do
_globalOnlyErrors <-
switch
( long "only-errors"
- <> help "Only print errors in a uniform format (used by minijuvix-mode)"
+ <> help "Only print errors in a uniform format (used by juvix-mode)"
<> hidden b
)
_globalNoTermination <-
diff --git a/app/Main.hs b/app/Main.hs
index 3386e311e..faa50cc02 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -6,36 +6,36 @@ import Commands.Termination as Termination
import Control.Exception qualified as IO
import Control.Monad.Extra
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Pipeline
-import MiniJuvix.Prelude hiding (Doc)
-import MiniJuvix.Prelude.Pretty hiding (Doc)
-import MiniJuvix.Syntax.Abstract.InfoTable qualified as Abstract
-import MiniJuvix.Syntax.Abstract.Language qualified as Abstract
-import MiniJuvix.Syntax.Abstract.Pretty qualified as Abstract
-import MiniJuvix.Syntax.Concrete.Parser qualified as Parser
-import MiniJuvix.Syntax.Concrete.Scoped.Highlight qualified as Highlight
-import MiniJuvix.Syntax.Concrete.Scoped.InfoTable qualified as Scoper
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty qualified as Scoper
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Html
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult qualified as MicroArity
-import MiniJuvix.Syntax.MicroJuvix.Pretty qualified as Micro
-import MiniJuvix.Syntax.MicroJuvix.TypeChecker qualified as MicroTyped
-import MiniJuvix.Syntax.MiniHaskell.Pretty qualified as MiniHaskell
-import MiniJuvix.Syntax.MonoJuvix.Pretty qualified as Mono
-import MiniJuvix.Termination qualified as Termination
-import MiniJuvix.Translation.AbstractToMicroJuvix qualified as Micro
-import MiniJuvix.Translation.MicroJuvixToMonoJuvix qualified as Mono
-import MiniJuvix.Translation.MonoJuvixToMiniC qualified as MiniC
-import MiniJuvix.Translation.MonoJuvixToMiniHaskell qualified as MiniHaskell
-import MiniJuvix.Translation.ScopedToAbstract qualified as Abstract
-import MiniJuvix.Utils.Version (runDisplayVersion)
+import Juvix.Pipeline
+import Juvix.Prelude hiding (Doc)
+import Juvix.Prelude.Pretty hiding (Doc)
+import Juvix.Syntax.Abstract.InfoTable qualified as Abstract
+import Juvix.Syntax.Abstract.Language qualified as Abstract
+import Juvix.Syntax.Abstract.Pretty qualified as Abstract
+import Juvix.Syntax.Concrete.Parser qualified as Parser
+import Juvix.Syntax.Concrete.Scoped.Highlight qualified as Highlight
+import Juvix.Syntax.Concrete.Scoped.InfoTable qualified as Scoper
+import Juvix.Syntax.Concrete.Scoped.Pretty qualified as Scoper
+import Juvix.Syntax.Concrete.Scoped.Pretty.Html
+import Juvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
+import Juvix.Syntax.MicroJuvix.MicroJuvixArityResult qualified as MicroArity
+import Juvix.Syntax.MicroJuvix.Pretty qualified as Micro
+import Juvix.Syntax.MicroJuvix.TypeChecker qualified as MicroTyped
+import Juvix.Syntax.MiniHaskell.Pretty qualified as MiniHaskell
+import Juvix.Syntax.MonoJuvix.Pretty qualified as Mono
+import Juvix.Termination qualified as Termination
+import Juvix.Translation.AbstractToMicroJuvix qualified as Micro
+import Juvix.Translation.MicroJuvixToMonoJuvix qualified as Mono
+import Juvix.Translation.MonoJuvixToMiniC qualified as MiniC
+import Juvix.Translation.MonoJuvixToMiniHaskell qualified as MiniHaskell
+import Juvix.Translation.ScopedToAbstract qualified as Abstract
+import Juvix.Utils.Version (runDisplayVersion)
import Options.Applicative
import System.Environment (getProgName)
import Text.Show.Pretty hiding (Html)
-minijuvixYamlFile :: FilePath
-minijuvixYamlFile = "minijuvix.yaml"
+juvixYamlFile :: FilePath
+juvixYamlFile = "juvix.yaml"
findRoot :: CommandGlobalOptions -> IO FilePath
findRoot copts = do
@@ -60,7 +60,7 @@ findRoot copts = do
go :: IO FilePath
go = do
c <- getCurrentDirectory
- l <- findFile (possiblePaths c) minijuvixYamlFile
+ l <- findFile (possiblePaths c) juvixYamlFile
case l of
Nothing -> return c
Just yaml -> return (takeDirectory yaml)
@@ -89,7 +89,7 @@ runCommand cmdWithOpts = do
_ -> do
-- Other commands require an entry point:
case getEntryPoint root globalOpts of
- Nothing -> printFailureExit "Provide a MiniJuvix file to run this command\nUse --help to see all the options"
+ Nothing -> printFailureExit "Provide a Juvix file to run this command\nUse --help to see all the options"
Just entryPoint -> do
case cmd of
Highlight -> do
diff --git a/book.toml b/book.toml
index d040b93e6..3d88d6776 100644
--- a/book.toml
+++ b/book.toml
@@ -1,5 +1,5 @@
[book]
-title = "The MiniJuvix Book"
+title = "The Juvix Book"
authors = [ "Jonathan Prieto-Cubides" , "Jan Mas Rovira" , "Paul Cadman" ]
language = "en"
multilingual = false
diff --git a/docs/org/SUMMARY.org b/docs/org/SUMMARY.org
index feb4d4565..0c23f39f7 100644
--- a/docs/org/SUMMARY.org
+++ b/docs/org/SUMMARY.org
@@ -1,6 +1,6 @@
* Summary
-- [[./introduction/about/what-is.md][MiniJuvix]]
+- [[./introduction/about/what-is.md][Juvix]]
- [[./introduction/changelog.md][Changelog]]
- [[./getting-started/README.md][Getting started]]
- [[./getting-started/quick-start.md][Quick start]]
diff --git a/docs/org/compiler-architecture/languages.org b/docs/org/compiler-architecture/languages.org
index 0f99c449b..afb202283 100644
--- a/docs/org/compiler-architecture/languages.org
+++ b/docs/org/compiler-architecture/languages.org
@@ -1,4 +1,4 @@
-* Internal MiniJuvix languages
+* Internal Juvix languages
** Languages
diff --git a/docs/org/examples/backend-specific/minic-hello-world.org b/docs/org/examples/backend-specific/minic-hello-world.org
index 08e82dab3..c430c5d86 100644
--- a/docs/org/examples/backend-specific/minic-hello-world.org
+++ b/docs/org/examples/backend-specific/minic-hello-world.org
@@ -1,9 +1,9 @@
* Mini C Hello World
-In the following example a MiniJuvix file is compiled using the C backend.
+In the following example a Juvix file is compiled using the C backend.
#+begin_src
--- tests/positive/MiniC/HelloWorld/Input.mjuvix
+-- tests/positive/MiniC/HelloWorld/Input.juvix
module Input;
axiom String : Type;
@@ -37,7 +37,7 @@ NB: Set the =WASI_SYSROOT_PATH= environment variable to the root of the WASI sys
#+begin_src shell
cd tests/positive/MiniC/HelloWorld
-minijuvix compile Input.mjuvix
+juvix compile Input.juvix
wasmer Input.wasm
#+end_src
diff --git a/docs/org/examples/validity-predicates/PolyFungibleToken.org b/docs/org/examples/validity-predicates/PolyFungibleToken.org
index 6bed067da..05069c966 100644
--- a/docs/org/examples/validity-predicates/PolyFungibleToken.org
+++ b/docs/org/examples/validity-predicates/PolyFungibleToken.org
@@ -1,7 +1,7 @@
# Polymorphic simple fungible token
#+begin_src
--- tests/positive/FullExamples/SimpleFungibleTokenImplicit.mjuvix
+-- tests/positive/FullExamples/SimpleFungibleTokenImplicit.juvix
module SimpleFungibleTokenImplicit;
foreign ghc {
diff --git a/docs/org/getting-started/dependencies.org b/docs/org/getting-started/dependencies.org
index 256095017..ac5ae2c52 100644
--- a/docs/org/getting-started/dependencies.org
+++ b/docs/org/getting-started/dependencies.org
@@ -1,6 +1,6 @@
* Installing dependencies
-The following dependencies are required for the minijuvix WASM compiler.
+The following dependencies are required for the juvix WASM compiler.
- [[https://wasmer.io][wasmer]]
- [[https://releases.llvm.org/download.html][Clang / LLVM]] version 13 or later (NB: On macOS the preinstalled clang does not support the wasm
diff --git a/docs/org/getting-started/quick-start.org b/docs/org/getting-started/quick-start.org
index 25dcc59dd..c2568f309 100644
--- a/docs/org/getting-started/quick-start.org
+++ b/docs/org/getting-started/quick-start.org
@@ -1,26 +1,26 @@
* Quick Start
#+begin_html
-
-
+
+
#+end_html
-To install MiniJuvix, you can download its sources using
+To install Juvix, you can download its sources using
[[http://git-scm.com/][Git]] from the
-[[https://github.com/heliaxdev/minijuvix.git][Github repository]]. Then, the
+[[https://github.com/anoma/juvix.git][Github repository]]. Then, the
program can be downloaded and installed with the following commands. You
will need to have [[https://haskellstack.org][Stack]] installed.
#+begin_src shell
-git clone --recursive https://github.com/heliaxdev/minijuvix.git
-cd minijuvix
+git clone --recursive https://github.com/anoma/juvix.git
+cd juvix
stack install
#+end_src
-If the installation succeeds, you must be able to run the =minijuvix=
+If the installation succeeds, you must be able to run the =juvix=
command from any location.
-To get the complete list of commands, please run =minijuvix --help=.
+To get the complete list of commands, please run =juvix --help=.
diff --git a/docs/org/introduction/about/community.org b/docs/org/introduction/about/community.org
index 021d1b47f..b7c2fb81d 100644
--- a/docs/org/introduction/about/community.org
+++ b/docs/org/introduction/about/community.org
@@ -1,6 +1,6 @@
-* MiniJuvix community
+* Juvix community
-We would love to hear what you think of MiniJuvix! Join us on
+We would love to hear what you think of Juvix! Join us on
[[https://discord.gg/nsGaCZzJ][Discord]]
This project is part of a bigger effort called [[https://anoma.net/][Anoma]].
diff --git a/docs/org/introduction/about/team.org b/docs/org/introduction/about/team.org
index 6f19c1194..2ddecf583 100644
--- a/docs/org/introduction/about/team.org
+++ b/docs/org/introduction/about/team.org
@@ -1 +1 @@
-* The MiniJuvix Dev Team
+* The Juvix Dev Team
diff --git a/docs/org/introduction/about/what-is.org b/docs/org/introduction/about/what-is.org
index e0d1b0ffe..3e069aad5 100644
--- a/docs/org/introduction/about/what-is.org
+++ b/docs/org/introduction/about/what-is.org
@@ -1,39 +1,39 @@
-* MiniJuvix
+* Juvix
#+begin_html
-
-
+
+
#+end_html
#+begin_html
-
-
+
+
#+end_html
#+begin_html
-
+
#+end_html
#+begin_html
-
#+end_html
#+begin_html
-
-
+
+
#+end_html
-MiniJuvix is a research programming language created by [[https://heliax.dev/][Heliax]] as a first step toward creating more robust and reliable alternatives for formally verified smart contracts than existing languages. The MiniJuvix language is constantly evolving, open-source, functional, and statically typed with special support for compiling [[https://anoma.network/blog/validity-predicates/][validity predicates]] to the =C= language, which can be deployed to various distributed ledgers including [[https://anoma.net/][Anoma]].
+Juvix is a research programming language created by [[https://heliax.dev/][Heliax]] as a first step toward creating more robust and reliable alternatives for formally verified smart contracts than existing languages. The Juvix language is constantly evolving, open-source, functional, and statically typed with special support for compiling [[https://anoma.network/blog/validity-predicates/][validity predicates]] to the =C= language, which can be deployed to various distributed ledgers including [[https://anoma.net/][Anoma]].
-The MiniJuvix programming language allows developers to write programs with a high degree of assurance that they will meet specific standards. This is due to the fact that several static analyses are performed during compilation, including, for example, scope, termination, arity, and type checking. As a result, functional programs, especially validity predicates, can be written with greater confidence that they will be free of runtime errors. [[https://github.com/heliaxdev/minijuvix/tree/main/examples/milestone][Here are some examples of MiniJuvix programs]].
+The Juvix programming language allows developers to write programs with a high degree of assurance that they will meet specific standards. This is due to the fact that several static analyses are performed during compilation, including, for example, scope, termination, arity, and type checking. As a result, functional programs, especially validity predicates, can be written with greater confidence that they will be free of runtime errors. [[https://github.com/anoma/juvix/tree/main/examples/milestone][Here are some examples of Juvix programs]].
The language features:
@@ -45,4 +45,4 @@ The language features:
- [X] holes in programs
- [X] axioms for non-computable terms
-Additionally, the foreign and compile blocks syntax enable developers to compile a program to different backends including the =C= language. The MiniJuvix module system further permits splitting programs into several modules to build libraries which can be later documented by generating HTML files based on the codebase, see for example, [[https://heliaxdev.github.io/minijuvix-stdlib/][the Minijuvix standard library's website]]. For futher details, please refer to [[https://heliaxdev.github.io/minijuvix/][the MiniJuvix book]] which icludes our [[https://heliaxdev.github.io/minijuvix/introduction/changelog.html][latest updates]].
+Additionally, the foreign and compile blocks syntax enable developers to compile a program to different backends including the =C= language. The Juvix module system further permits splitting programs into several modules to build libraries which can be later documented by generating HTML files based on the codebase, see for example, [[https://anoma.github.io/juvix-stdlib/][the Juvix standard library's website]]. For futher details, please refer to [[https://anoma.github.io/juvix/][the Juvix book]] which icludes our [[https://anoma.github.io/juvix/introduction/changelog.html][latest updates]].
diff --git a/docs/org/introduction/changelog.org b/docs/org/introduction/changelog.org
index 2703f30dd..d7deac892 100644
--- a/docs/org/introduction/changelog.org
+++ b/docs/org/introduction/changelog.org
@@ -1,373 +1,373 @@
* Changelog
#+begin_html
-
-
+
+
#+end_html
-** [[https://github.com/heliaxdev/minijuvix/tree/v0.2.0][v0.2.0]]
+** [[https://github.com/anoma/juvix/tree/v0.2.0][v0.2.0]]
(2022-06-28)
-[[https://github.com/heliaxdev/minijuvix/compare/v0.1.4...v0.2.0][Full
+[[https://github.com/anoma/juvix/compare/v0.1.4...v0.2.0][Full
Changelog]]
*Implemented enhancements:*
- Support built in types
- [[https://github.com/heliaxdev/minijuvix/pull/192][#192]]
+ [[https://github.com/anoma/juvix/pull/192][#192]]
([[https://github.com/janmasrovira][janmasrovira]])
- Support partial application and closure passing in C backend
- [[https://github.com/heliaxdev/minijuvix/pull/190][#190]]
+ [[https://github.com/anoma/juvix/pull/190][#190]]
([[https://github.com/paulcadman][paulcadman]])
- Allow =open import= statements
- [[https://github.com/heliaxdev/minijuvix/pull/175][#175]]
+ [[https://github.com/anoma/juvix/pull/175][#175]]
([[https://github.com/janmasrovira][janmasrovira]])
- Remove TypeAny and adapt typechecking for literals
- [[https://github.com/heliaxdev/minijuvix/pull/173][#173]]
+ [[https://github.com/anoma/juvix/pull/173][#173]]
([[https://github.com/janmasrovira][janmasrovira]])
- Allow holes to be refined into function types
- [[https://github.com/heliaxdev/minijuvix/pull/165][#165]]
+ [[https://github.com/anoma/juvix/pull/165][#165]]
([[https://github.com/janmasrovira][janmasrovira]])
- Support implicit arguments
- [[https://github.com/heliaxdev/minijuvix/pull/144][#144]]
+ [[https://github.com/anoma/juvix/pull/144][#144]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add support for holes in type signatures
- [[https://github.com/heliaxdev/minijuvix/pull/141][#141]]
+ [[https://github.com/anoma/juvix/pull/141][#141]]
([[https://github.com/janmasrovira][janmasrovira]])
- Support function closures with no environment in minic
- [[https://github.com/heliaxdev/minijuvix/pull/137][#137]]
+ [[https://github.com/anoma/juvix/pull/137][#137]]
([[https://github.com/paulcadman][paulcadman]])
- Add holes for expressions in function clauses and inference support
- [[https://github.com/heliaxdev/minijuvix/pull/136][#136]]
+ [[https://github.com/anoma/juvix/pull/136][#136]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add "-Oz" optimization flag to clang args
- [[https://github.com/heliaxdev/minijuvix/pull/133][#133]]
+ [[https://github.com/anoma/juvix/pull/133][#133]]
([[https://github.com/paulcadman][paulcadman]])
- Add version and help option and root command to the CLI
- [[https://github.com/heliaxdev/minijuvix/pull/131][#131]]
+ [[https://github.com/anoma/juvix/pull/131][#131]]
([[https://github.com/jonaprieto][jonaprieto]])
*Fixed bugs:*
- Fix: Ignore implicit patterns and arguments in termination checking
- [[https://github.com/heliaxdev/minijuvix/pull/172][#172]]
+ [[https://github.com/anoma/juvix/pull/172][#172]]
([[https://github.com/janmasrovira][janmasrovira]])
- Fix: pretty printing for terminating keyword
- [[https://github.com/heliaxdev/minijuvix/pull/145][#145]]
+ [[https://github.com/anoma/juvix/pull/145][#145]]
([[https://github.com/jonaprieto][jonaprieto]])
*Merged pull requests:*
- Fix: proper error handling for typechecker errors
- [[https://github.com/heliaxdev/minijuvix/pull/189][#189]]
+ [[https://github.com/anoma/juvix/pull/189][#189]]
([[https://github.com/jonaprieto][jonaprieto]])
-- Add minijuvix version info and date to HTML output
- [[https://github.com/heliaxdev/minijuvix/pull/186][#186]]
+- Add juvix version info and date to HTML output
+ [[https://github.com/anoma/juvix/pull/186][#186]]
([[https://github.com/jonaprieto][jonaprieto]])
- Fix: Add check for constructor return types
- [[https://github.com/heliaxdev/minijuvix/pull/182][#182]]
+ [[https://github.com/anoma/juvix/pull/182][#182]]
([[https://github.com/jonaprieto][jonaprieto]])
- Use Abstract name in Abstract syntax and Micro/MonoJuvix
- [[https://github.com/heliaxdev/minijuvix/pull/181][#181]]
+ [[https://github.com/anoma/juvix/pull/181][#181]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add an option to specify the path where to put the HTML output
- [[https://github.com/heliaxdev/minijuvix/pull/179][#179]]
+ [[https://github.com/anoma/juvix/pull/179][#179]]
([[https://github.com/jonaprieto][jonaprieto]])
- Upgrade to ghc-9.2.3
- [[https://github.com/heliaxdev/minijuvix/pull/178][#178]]
+ [[https://github.com/anoma/juvix/pull/178][#178]]
([[https://github.com/janmasrovira][janmasrovira]])
-- Replace dead link in README with a link to the MiniJuvix book
- [[https://github.com/heliaxdev/minijuvix/pull/177][#177]]
+- Replace dead link in README with a link to the Juvix book
+ [[https://github.com/anoma/juvix/pull/177][#177]]
([[https://github.com/paulcadman][paulcadman]])
-- Embed HTML assets in the minijuvix binary
- [[https://github.com/heliaxdev/minijuvix/pull/176][#176]]
+- Embed HTML assets in the juvix binary
+ [[https://github.com/anoma/juvix/pull/176][#176]]
([[https://github.com/paulcadman][paulcadman]])
- Fix: identifiers with a keyword prefix cannot be parsed
- [[https://github.com/heliaxdev/minijuvix/pull/171][#171]]
+ [[https://github.com/anoma/juvix/pull/171][#171]]
([[https://github.com/janmasrovira][janmasrovira]])
- Improve filepath equality
- [[https://github.com/heliaxdev/minijuvix/pull/170][#170]]
+ [[https://github.com/anoma/juvix/pull/170][#170]]
([[https://github.com/janmasrovira][janmasrovira]])
- Update validity predicate milestone example to 0.2 syntax
- [[https://github.com/heliaxdev/minijuvix/pull/167][#167]]
+ [[https://github.com/anoma/juvix/pull/167][#167]]
([[https://github.com/paulcadman][paulcadman]])
- Fix links in documentation and update to new syntax
- [[https://github.com/heliaxdev/minijuvix/pull/163][#163]]
+ [[https://github.com/anoma/juvix/pull/163][#163]]
([[https://github.com/paulcadman][paulcadman]])
- Update stdlib to work with version 0.2
- [[https://github.com/heliaxdev/minijuvix/pull/160][#160]]
+ [[https://github.com/anoma/juvix/pull/160][#160]]
([[https://github.com/janmasrovira][janmasrovira]])
- Update README usage example to use the compile command
- [[https://github.com/heliaxdev/minijuvix/pull/158][#158]]
+ [[https://github.com/anoma/juvix/pull/158][#158]]
([[https://github.com/paulcadman][paulcadman]])
- Remove dead code related to the pipeline
- [[https://github.com/heliaxdev/minijuvix/pull/156][#156]]
+ [[https://github.com/anoma/juvix/pull/156][#156]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add negative test for AppLeftImplicit
- [[https://github.com/heliaxdev/minijuvix/pull/154][#154]]
+ [[https://github.com/anoma/juvix/pull/154][#154]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add positive test designed for implicit arguments
- [[https://github.com/heliaxdev/minijuvix/pull/153][#153]]
+ [[https://github.com/anoma/juvix/pull/153][#153]]
([[https://github.com/janmasrovira][janmasrovira]])
- Remove ExpressionTyped from MicroJuvix
- [[https://github.com/heliaxdev/minijuvix/pull/143][#143]]
+ [[https://github.com/anoma/juvix/pull/143][#143]]
([[https://github.com/janmasrovira][janmasrovira]])
- Revision for package.yaml and minor deletions
- [[https://github.com/heliaxdev/minijuvix/pull/135][#135]]
+ [[https://github.com/anoma/juvix/pull/135][#135]]
([[https://github.com/jonaprieto][jonaprieto]])
-** [[https://github.com/heliaxdev/minijuvix/tree/v0.1.4][v0.1.4]]
+** [[https://github.com/anoma/juvix/tree/v0.1.4][v0.1.4]]
(2022-05-30)
-[[https://github.com/heliaxdev/minijuvix/compare/v0.1.3...v0.1.4][Full
+[[https://github.com/anoma/juvix/compare/v0.1.3...v0.1.4][Full
Changelog]]
*Merged pull requests:*
- Generic Errors and refactoring
- [[https://github.com/heliaxdev/minijuvix/pull/123][#123]]
+ [[https://github.com/anoma/juvix/pull/123][#123]]
([[https://github.com/jonaprieto][jonaprieto]])
- Only generates docs if the pull request merges
- [[https://github.com/heliaxdev/minijuvix/pull/121][#121]]
+ [[https://github.com/anoma/juvix/pull/121][#121]]
([[https://github.com/jonaprieto][jonaprieto]])
- Add initial docs generation website
- [[https://github.com/heliaxdev/minijuvix/pull/119][#119]]
+ [[https://github.com/anoma/juvix/pull/119][#119]]
([[https://github.com/jonaprieto][jonaprieto]])
- Fix internal link in README
- [[https://github.com/heliaxdev/minijuvix/pull/116][#116]]
+ [[https://github.com/anoma/juvix/pull/116][#116]]
([[https://github.com/paulcadman][paulcadman]])
- Add minic-runtime for linking without libc
- [[https://github.com/heliaxdev/minijuvix/pull/113][#113]]
+ [[https://github.com/anoma/juvix/pull/113][#113]]
([[https://github.com/paulcadman][paulcadman]])
- Add termination checking to the pipeline
- [[https://github.com/heliaxdev/minijuvix/pull/111][#111]]
+ [[https://github.com/anoma/juvix/pull/111][#111]]
([[https://github.com/jonaprieto][jonaprieto]])
- Support uncurried higher order functions
- [[https://github.com/heliaxdev/minijuvix/pull/110][#110]]
+ [[https://github.com/anoma/juvix/pull/110][#110]]
([[https://github.com/paulcadman][paulcadman]])
- Improve error generation and handling
- [[https://github.com/heliaxdev/minijuvix/pull/108][#108]]
+ [[https://github.com/anoma/juvix/pull/108][#108]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add MiniC tests with clang+wasi-sdk
- [[https://github.com/heliaxdev/minijuvix/pull/105][#105]]
+ [[https://github.com/anoma/juvix/pull/105][#105]]
([[https://github.com/paulcadman][paulcadman]])
- Add usage example and move developer docs
- [[https://github.com/heliaxdev/minijuvix/pull/96][#96]]
+ [[https://github.com/anoma/juvix/pull/96][#96]]
([[https://github.com/paulcadman][paulcadman]])
- Refactor warning related stuff
- [[https://github.com/heliaxdev/minijuvix/pull/91][#91]]
+ [[https://github.com/anoma/juvix/pull/91][#91]]
([[https://github.com/janmasrovira][janmasrovira]])
- Remove Agda backend
- [[https://github.com/heliaxdev/minijuvix/pull/86][#86]]
+ [[https://github.com/anoma/juvix/pull/86][#86]]
([[https://github.com/paulcadman][paulcadman]])
*Implemented enhancements:*
- Add =compile= subcommand to generate binaries
- [[https://github.com/heliaxdev/minijuvix/issues/128][#128]]
+ [[https://github.com/anoma/juvix/issues/128][#128]]
- Add intervals to flycheck errors
- [[https://github.com/heliaxdev/minijuvix/issues/124][#124]]
-- Improve error handling in minijuvix-mode
- [[https://github.com/heliaxdev/minijuvix/issues/107][#107]]
+ [[https://github.com/anoma/juvix/issues/124][#124]]
+- Improve error handling in juvix-mode
+ [[https://github.com/anoma/juvix/issues/107][#107]]
- Support multiple modules in compilation
- [[https://github.com/heliaxdev/minijuvix/issues/93][#93]]
+ [[https://github.com/anoma/juvix/issues/93][#93]]
- Add compile command to CLI
- [[https://github.com/heliaxdev/minijuvix/pull/130][#130]]
+ [[https://github.com/anoma/juvix/pull/130][#130]]
([[https://github.com/paulcadman][paulcadman]])
- Use Interval in GenericErrors
- [[https://github.com/heliaxdev/minijuvix/pull/125][#125]]
+ [[https://github.com/anoma/juvix/pull/125][#125]]
([[https://github.com/janmasrovira][janmasrovira]])
- Remove dev in the CI and other tweaks
- [[https://github.com/heliaxdev/minijuvix/pull/118][#118]]
+ [[https://github.com/anoma/juvix/pull/118][#118]]
([[https://github.com/jonaprieto][jonaprieto]])
- Highlight comments correctly
- [[https://github.com/heliaxdev/minijuvix/pull/106][#106]]
+ [[https://github.com/anoma/juvix/pull/106][#106]]
([[https://github.com/janmasrovira][janmasrovira]])
- Support multiple modules in compilation
- [[https://github.com/heliaxdev/minijuvix/pull/100][#100]]
+ [[https://github.com/anoma/juvix/pull/100][#100]]
([[https://github.com/janmasrovira][janmasrovira]])
- New target syntax and modular VP examples
- [[https://github.com/heliaxdev/minijuvix/pull/92][#92]]
+ [[https://github.com/anoma/juvix/pull/92][#92]]
([[https://github.com/jonaprieto][jonaprieto]])
*Fixed bugs:*
- Missing error messages when using throw/error
- [[https://github.com/heliaxdev/minijuvix/issues/117][#117]]
+ [[https://github.com/anoma/juvix/issues/117][#117]]
- Fix highlight of comments
- [[https://github.com/heliaxdev/minijuvix/issues/104][#104]]
-- Fix minijuvix-mode coloring for projects with multiple modules
- [[https://github.com/heliaxdev/minijuvix/issues/101][#101]]
+ [[https://github.com/anoma/juvix/issues/104][#104]]
+- Fix juvix-mode coloring for projects with multiple modules
+ [[https://github.com/anoma/juvix/issues/101][#101]]
- Fix =highlight= command for modules with import statements
- [[https://github.com/heliaxdev/minijuvix/pull/102][#102]]
+ [[https://github.com/anoma/juvix/pull/102][#102]]
([[https://github.com/janmasrovira][janmasrovira]])
*Closed issues:*
- Deprecate the class JuvixError
- [[https://github.com/heliaxdev/minijuvix/issues/115][#115]]
+ [[https://github.com/anoma/juvix/issues/115][#115]]
- Add ToGenericError instance for the infix parsing errors
- [[https://github.com/heliaxdev/minijuvix/issues/114][#114]]
+ [[https://github.com/anoma/juvix/issues/114][#114]]
- Compile to WASM without linking libc
- [[https://github.com/heliaxdev/minijuvix/issues/112][#112]]
+ [[https://github.com/anoma/juvix/issues/112][#112]]
- Add the termination checker to the pipeline
- [[https://github.com/heliaxdev/minijuvix/issues/109][#109]]
+ [[https://github.com/anoma/juvix/issues/109][#109]]
- Use clang + wasi-sdk instead of emcc to compile to WASM
- [[https://github.com/heliaxdev/minijuvix/issues/103][#103]]
+ [[https://github.com/anoma/juvix/issues/103][#103]]
- Move developer tooling docs out of README
- [[https://github.com/heliaxdev/minijuvix/issues/95][#95]]
+ [[https://github.com/anoma/juvix/issues/95][#95]]
- Add pre-commit checks to CI checks
- [[https://github.com/heliaxdev/minijuvix/issues/94][#94]]
+ [[https://github.com/anoma/juvix/issues/94][#94]]
- Support higher order functions in C backend
- [[https://github.com/heliaxdev/minijuvix/issues/90][#90]]
+ [[https://github.com/anoma/juvix/issues/90][#90]]
- Remove dev from the list of branches in the CI
- [[https://github.com/heliaxdev/minijuvix/issues/89][#89]]
+ [[https://github.com/anoma/juvix/issues/89][#89]]
- Refactor warning related stuff
- [[https://github.com/heliaxdev/minijuvix/issues/87][#87]]
-- The MiniJuvix website
- [[https://github.com/heliaxdev/minijuvix/issues/51][#51]]
+ [[https://github.com/anoma/juvix/issues/87][#87]]
+- The Juvix website
+ [[https://github.com/anoma/juvix/issues/51][#51]]
-** [[https://github.com/heliaxdev/minijuvix/tree/v0.1.3][v0.1.3]]
+** [[https://github.com/anoma/juvix/tree/v0.1.3][v0.1.3]]
(2022-05-05)
-[[https://github.com/heliaxdev/minijuvix/compare/v0.1.2...v0.1.3][Full
+[[https://github.com/anoma/juvix/compare/v0.1.2...v0.1.3][Full
Changelog]]
*Closed issues:*
- Monomorphisation naming inconsistency
- [[https://github.com/heliaxdev/minijuvix/issues/84][#84]]
+ [[https://github.com/anoma/juvix/issues/84][#84]]
- Remove BackendAgda
- [[https://github.com/heliaxdev/minijuvix/issues/83][#83]]
+ [[https://github.com/anoma/juvix/issues/83][#83]]
- Change terminating keyword behavior
- [[https://github.com/heliaxdev/minijuvix/issues/81][#81]]
+ [[https://github.com/anoma/juvix/issues/81][#81]]
- MonoJuvix =ExpressionTyped= is never used
- [[https://github.com/heliaxdev/minijuvix/issues/79][#79]]
+ [[https://github.com/anoma/juvix/issues/79][#79]]
- Bump stackage nightly and delete =allow-newer: true= from =stack.yaml=
- [[https://github.com/heliaxdev/minijuvix/issues/75][#75]]
+ [[https://github.com/anoma/juvix/issues/75][#75]]
- Generate automatically CHANGELOG and Github Release Notes
- [[https://github.com/heliaxdev/minijuvix/issues/73][#73]]
+ [[https://github.com/anoma/juvix/issues/73][#73]]
- Make flag --show-name-ids global
- [[https://github.com/heliaxdev/minijuvix/issues/61][#61]]
+ [[https://github.com/anoma/juvix/issues/61][#61]]
- Add C code generation backend
- [[https://github.com/heliaxdev/minijuvix/issues/60][#60]]
+ [[https://github.com/anoma/juvix/issues/60][#60]]
- Add polymorphism
- [[https://github.com/heliaxdev/minijuvix/issues/59][#59]]
+ [[https://github.com/anoma/juvix/issues/59][#59]]
- Add the compile keyword to the frontend syntax (support up to Scoping)
- [[https://github.com/heliaxdev/minijuvix/issues/58][#58]]
+ [[https://github.com/anoma/juvix/issues/58][#58]]
- Error with undefined or underscores
- [[https://github.com/heliaxdev/minijuvix/issues/54][#54]]
+ [[https://github.com/anoma/juvix/issues/54][#54]]
- Add support for other GHC and Stack stable version
- [[https://github.com/heliaxdev/minijuvix/issues/52][#52]]
+ [[https://github.com/anoma/juvix/issues/52][#52]]
- Autodetect output ANSI support when prettyprinting
- [[https://github.com/heliaxdev/minijuvix/issues/38][#38]]
+ [[https://github.com/anoma/juvix/issues/38][#38]]
- Terminating for type signatures
- [[https://github.com/heliaxdev/minijuvix/issues/11][#11]]
+ [[https://github.com/anoma/juvix/issues/11][#11]]
*Merged pull requests:*
- Remove agda backend
- [[https://github.com/heliaxdev/minijuvix/pull/86][#86]]
+ [[https://github.com/anoma/juvix/pull/86][#86]]
([[https://github.com/paulcadman][paulcadman]])
- 84 monomorphisation naming inconsistency
- [[https://github.com/heliaxdev/minijuvix/pull/85][#85]]
+ [[https://github.com/anoma/juvix/pull/85][#85]]
([[https://github.com/janmasrovira][janmasrovira]])
- Change terminating keyword behavior
- [[https://github.com/heliaxdev/minijuvix/pull/82][#82]]
+ [[https://github.com/anoma/juvix/pull/82][#82]]
([[https://github.com/jonaprieto][jonaprieto]])
- Remove unused constructor ExpressionTyped in Monojuvix
- [[https://github.com/heliaxdev/minijuvix/pull/80][#80]]
+ [[https://github.com/anoma/juvix/pull/80][#80]]
([[https://github.com/janmasrovira][janmasrovira]])
- Stricter stack builds and pedantic mode for CI
- [[https://github.com/heliaxdev/minijuvix/pull/78][#78]]
+ [[https://github.com/anoma/juvix/pull/78][#78]]
([[https://github.com/jonaprieto][jonaprieto]])
- Bump stackage version and remove allow-newer
- [[https://github.com/heliaxdev/minijuvix/pull/76][#76]]
+ [[https://github.com/anoma/juvix/pull/76][#76]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add automatically updates/issues/merged PRs to the changelog
- [[https://github.com/heliaxdev/minijuvix/pull/74][#74]]
+ [[https://github.com/anoma/juvix/pull/74][#74]]
([[https://github.com/jonaprieto][jonaprieto]])
- Add terminating keyword
- [[https://github.com/heliaxdev/minijuvix/pull/71][#71]]
+ [[https://github.com/anoma/juvix/pull/71][#71]]
([[https://github.com/jonaprieto][jonaprieto]])
- Monomorphization
- [[https://github.com/heliaxdev/minijuvix/pull/70][#70]]
+ [[https://github.com/anoma/juvix/pull/70][#70]]
([[https://github.com/janmasrovira][janmasrovira]])
- Remove StatementCompile in AST after scoping
- [[https://github.com/heliaxdev/minijuvix/pull/69][#69]]
+ [[https://github.com/anoma/juvix/pull/69][#69]]
([[https://github.com/paulcadman][paulcadman]])
- Add C code generation backend
- [[https://github.com/heliaxdev/minijuvix/pull/68][#68]]
+ [[https://github.com/anoma/juvix/pull/68][#68]]
([[https://github.com/paulcadman][paulcadman]])
- Check if stderr supports ANSI and print accordingly
- [[https://github.com/heliaxdev/minijuvix/pull/67][#67]]
+ [[https://github.com/anoma/juvix/pull/67][#67]]
([[https://github.com/janmasrovira][janmasrovira]])
- Add support for compile (by Jonathan)
- [[https://github.com/heliaxdev/minijuvix/pull/66][#66]]
+ [[https://github.com/anoma/juvix/pull/66][#66]]
([[https://github.com/paulcadman][paulcadman]])
- Add NameIdGen effect to the pipeline
- [[https://github.com/heliaxdev/minijuvix/pull/64][#64]]
+ [[https://github.com/anoma/juvix/pull/64][#64]]
([[https://github.com/janmasrovira][janmasrovira]])
- Make the =--show-name-ids= flag global
- [[https://github.com/heliaxdev/minijuvix/pull/63][#63]]
+ [[https://github.com/anoma/juvix/pull/63][#63]]
([[https://github.com/janmasrovira][janmasrovira]])
- Implement type checker with polymorphism
- [[https://github.com/heliaxdev/minijuvix/pull/62][#62]]
+ [[https://github.com/anoma/juvix/pull/62][#62]]
([[https://github.com/janmasrovira][janmasrovira]])
-** [[https://github.com/heliaxdev/minijuvix/tree/v0.1.2][v0.1.2]]
+** [[https://github.com/anoma/juvix/tree/v0.1.2][v0.1.2]]
(2022-04-11)
-[[https://github.com/heliaxdev/minijuvix/compare/v0.1.1...v0.1.2][Full
+[[https://github.com/anoma/juvix/compare/v0.1.1...v0.1.2][Full
Changelog]]
*Closed issues:*
- Add en emacs mode with support for scoped highlighting
- [[https://github.com/heliaxdev/minijuvix/issues/25][#25]]
-- Add support for project root detection through a minijuvix.yaml file
- [[https://github.com/heliaxdev/minijuvix/issues/24][#24]]
-- Add CLI cmd to generate minijuvix autocompletion files for fish and
- zsh [[https://github.com/heliaxdev/minijuvix/issues/23][#23]]
+ [[https://github.com/anoma/juvix/issues/25][#25]]
+- Add support for project root detection through a juvix.yaml file
+ [[https://github.com/anoma/juvix/issues/24][#24]]
+- Add CLI cmd to generate juvix autocompletion files for fish and
+ zsh [[https://github.com/anoma/juvix/issues/23][#23]]
- Add pretty and typecheck subcommands to the microjuvix CLI
- [[https://github.com/heliaxdev/minijuvix/issues/21][#21]]
+ [[https://github.com/anoma/juvix/issues/21][#21]]
- Translate identifiers from MicroJuvix to MiniHaskell (valid Haskell)
- [[https://github.com/heliaxdev/minijuvix/issues/19][#19]]
+ [[https://github.com/anoma/juvix/issues/19][#19]]
- Implement the MiniHaskell to Haskell translation (prettyprinter)
- [[https://github.com/heliaxdev/minijuvix/issues/18][#18]]
+ [[https://github.com/anoma/juvix/issues/18][#18]]
- Implementation of a typechecker for MicroJuvix
- [[https://github.com/heliaxdev/minijuvix/issues/16][#16]]
+ [[https://github.com/anoma/juvix/issues/16][#16]]
- Add references to the Abstract AST to update compilation to
- MiniHaskell [[https://github.com/heliaxdev/minijuvix/issues/12][#12]]
+ MiniHaskell [[https://github.com/anoma/juvix/issues/12][#12]]
- Order in the house
- [[https://github.com/heliaxdev/minijuvix/issues/10][#10]]
+ [[https://github.com/anoma/juvix/issues/10][#10]]
*Merged pull requests:*
-- The MiniJuvix project now follows the same goals as the original Juvix
- project. [[https://github.com/heliaxdev/minijuvix/pull/7][#7]]
+- The Juvix project now follows the same goals as the original Juvix
+ project. [[https://github.com/anoma/juvix/pull/7][#7]]
([[https://github.com/jonaprieto][jonaprieto]])
-- Dev→main [[https://github.com/heliaxdev/minijuvix/pull/6][#6]]
+- Dev→main [[https://github.com/anoma/juvix/pull/6][#6]]
([[https://github.com/jonaprieto][jonaprieto]])
- Big update including termination checking
- [[https://github.com/heliaxdev/minijuvix/pull/5][#5]]
+ [[https://github.com/anoma/juvix/pull/5][#5]]
([[https://github.com/janmasrovira][janmasrovira]])
- Parser and scoper
- [[https://github.com/heliaxdev/minijuvix/pull/3][#3]]
+ [[https://github.com/anoma/juvix/pull/3][#3]]
([[https://github.com/jonaprieto][jonaprieto]])
- Upgrade to ghc9 and use hpack
- [[https://github.com/heliaxdev/minijuvix/pull/2][#2]]
+ [[https://github.com/anoma/juvix/pull/2][#2]]
([[https://github.com/janmasrovira][janmasrovira]])
-- Merge [[https://github.com/heliaxdev/minijuvix/pull/1][#1]]
+- Merge [[https://github.com/anoma/juvix/pull/1][#1]]
([[https://github.com/jonaprieto][jonaprieto]])
-** [[https://github.com/heliaxdev/minijuvix/tree/v0.1.1][v0.1.1]]
+** [[https://github.com/anoma/juvix/tree/v0.1.1][v0.1.1]]
(2022-03-25)
-[[https://github.com/heliaxdev/minijuvix/compare/48abde93b4e5380acabac810e584f4b7a6618592...v0.1.1][Full
+[[https://github.com/anoma/juvix/compare/48abde93b4e5380acabac810e584f4b7a6618592...v0.1.1][Full
Changelog]]
- Add support in the parser/scoper for Axiom backends
@@ -382,6 +382,6 @@ Changelog]]
*Closed issues:*
- Add diff output to the test suite
- [[https://github.com/heliaxdev/minijuvix/issues/9][#9]]
+ [[https://github.com/anoma/juvix/issues/9][#9]]
- Improve scoper ambiguity error messages
- [[https://github.com/heliaxdev/minijuvix/issues/8][#8]]
+ [[https://github.com/anoma/juvix/issues/8][#8]]
diff --git a/docs/org/language-reference/axiom.org b/docs/org/language-reference/axiom.org
index 2b8a23554..491530a4c 100644
--- a/docs/org/language-reference/axiom.org
+++ b/docs/org/language-reference/axiom.org
@@ -6,7 +6,7 @@ $A$ is a type and there exist a term $x$ that inhabits $A$. Then the program wou
like like the following.
#+begin_src
--- Example.mjuvix
+-- Example.juvix
module Example;
axiom A : Type;
axom x : A;
diff --git a/docs/org/language-reference/functions.org b/docs/org/language-reference/functions.org
index c94f534c8..c4a9ca429 100644
--- a/docs/org/language-reference/functions.org
+++ b/docs/org/language-reference/functions.org
@@ -1,6 +1,6 @@
* Function declaration
-In MiniJuvix, a function declaration is a type signature /and/ a group
+In Juvix, a function declaration is a type signature /and/ a group
of definitions called /function clauses/.
#+begin_example
diff --git a/docs/org/language-reference/termination-checking.org b/docs/org/language-reference/termination-checking.org
index 4c657ec7e..b7bc925c1 100644
--- a/docs/org/language-reference/termination-checking.org
+++ b/docs/org/language-reference/termination-checking.org
@@ -1,12 +1,12 @@
* Termination checking
-To not bring inconsistencies by function declarations, MiniJuvix
+To not bring inconsistencies by function declarations, Juvix
requires that all function pass the termination checker.
This check is called before the typechecking in the compilation pipeline.
Since the former requirement is vital but often tricky to fulfill for programs
-in a total language like MiniJuvix. It is convenient to have
+in a total language like Juvix. It is convenient to have
a way to bypass the termination checking. The user may be certain their
programs are terminating even when our termination checker algorithm can not
see it. The termination checker is limited as it only accepts a subset
diff --git a/docs/org/notes/builtins.org b/docs/org/notes/builtins.org
index 265c4ab79..bba13582b 100644
--- a/docs/org/notes/builtins.org
+++ b/docs/org/notes/builtins.org
@@ -38,7 +38,7 @@ The idea is that builtin definitions are treated normally throughout the
pipeline except in the backend part. There is one exception to that. We need to
collect information about the builtins that have been included in the code and
what are the terms that refer to them. For instance, imagine that we find this
-definitions in a minijuvix module:
+definitions in a juvix module:
#+begin_src text
builtin natural
inductive MyNat {
diff --git a/docs/org/notes/monomorphization.org b/docs/org/notes/monomorphization.org
index 947699200..2b1f34abe 100644
--- a/docs/org/notes/monomorphization.org
+++ b/docs/org/notes/monomorphization.org
@@ -6,7 +6,7 @@
monomorphic code (no type variables) through static analysis.
Example:
- #+begin_src minijuvix
+ #+begin_src juvix
id : (A : Type) → A → A;
id _ a ≔ a;
@@ -18,7 +18,7 @@
#+end_src
Is translated into:
- #+begin_src minijuvix
+ #+begin_src juvix
id_Bool : Bool → Bool;
id_Bool a ≔ a;
@@ -28,7 +28,7 @@
* More examples
** Mutual recursion
-#+begin_src minijuvix
+#+begin_src juvix
inductive List (A : Type) {
nil : List A;
cons : A → List A → List A;
@@ -63,7 +63,7 @@ odd A (cons _ xs) ≔ not (even A xs) ;
2. *Sub application*. If =t₁ t₂ … tₙ= is an application then for every =0 ~/.config/fish/completions/minijuvix.fish
+juvix --fish-completion-script juvix
+ > ~/.config/fish/completions/juvix.fish
#+end_src
*** ZSH
@@ -77,7 +77,7 @@ minijuvix --fish-completion-script minijuvix
Run the following command in your shell:
#+begin_src shell
-minijuvix --zsh-completion-script minijuvix > $DIR_IN_FPATH/_minijuvix
+juvix --zsh-completion-script juvix > $DIR_IN_FPATH/_juvix
#+end_src
where =$DIR_IN_FPATH= is a directory that is present on the [[https://zsh.sourceforge.io/Doc/Release/Functions.html][ZSH FPATH variable]] (which you can inspect by running =echo $FPATH= in the shell).
diff --git a/docs/org/tooling/README.org b/docs/org/tooling/README.org
index 0b30f9d7e..fb67bf986 100644
--- a/docs/org/tooling/README.org
+++ b/docs/org/tooling/README.org
@@ -1,3 +1,3 @@
- [[./tools/CLI.md][Command line Interface]]
-- [[./tools/emacs-mode.md][Writting MiniJuvix programs with Emacs Mode]]
+- [[./tools/emacs-mode.md][Writting Juvix programs with Emacs Mode]]
- [[./tools/testing.md][Test Suite]]
diff --git a/docs/org/tooling/emacs-mode.org b/docs/org/tooling/emacs-mode.org
index 59ef08463..97a64126d 100644
--- a/docs/org/tooling/emacs-mode.org
+++ b/docs/org/tooling/emacs-mode.org
@@ -1,22 +1,22 @@
** Emacs Mode
-There is an Emacs mode available for MiniJuvix. Currently, it
+There is an Emacs mode available for Juvix. Currently, it
supports syntax highlighting for well-scoped modules.
To install it add the following lines to your Emacs configuration file:
#+begin_src elisp
-(push "/path/to/minijuvix/minijuvix-mode/" load-path)
-(require 'minijuvix-mode)
+(push "/path/to/juvix/juvix-mode/" load-path)
+(require 'juvix-mode)
#+end_src
-Make sure that =minijuvix= is installed in your =PATH=.
+Make sure that =juvix= is installed in your =PATH=.
-The MiniJuvix major mode will be activated automatically for =.mjuvix= files.
+The Juvix major mode will be activated automatically for =.juvix= files.
*** Keybindings
| Key | Function Name | Description |
|-----------+------------------+-------------------------------------------------------|
- | =C-c C-l= | =minijuvix-load= | Runs the scoper and adds semantic syntax highlighting |
+ | =C-c C-l= | =juvix-load= | Runs the scoper and adds semantic syntax highlighting |
diff --git a/examples/milestone/MiniTicTacToe/MiniTicTacToe.mjuvix b/examples/milestone/MiniTicTacToe/MiniTicTacToe.juvix
similarity index 100%
rename from examples/milestone/MiniTicTacToe/MiniTicTacToe.mjuvix
rename to examples/milestone/MiniTicTacToe/MiniTicTacToe.juvix
diff --git a/examples/milestone/Lib/minijuvix.yaml b/examples/milestone/MiniTicTacToe/juvix.yaml
similarity index 100%
rename from examples/milestone/Lib/minijuvix.yaml
rename to examples/milestone/MiniTicTacToe/juvix.yaml
diff --git a/examples/milestone/ValidityPredicates/Anoma/Base.mjuvix b/examples/milestone/ValidityPredicates/Anoma/Base.juvix
similarity index 100%
rename from examples/milestone/ValidityPredicates/Anoma/Base.mjuvix
rename to examples/milestone/ValidityPredicates/Anoma/Base.juvix
diff --git a/examples/milestone/ValidityPredicates/Data b/examples/milestone/ValidityPredicates/Data
deleted file mode 120000
index 6e2a68d95..000000000
--- a/examples/milestone/ValidityPredicates/Data
+++ /dev/null
@@ -1 +0,0 @@
-../Lib/Data
\ No newline at end of file
diff --git a/examples/milestone/Lib/Data/Bool.mjuvix b/examples/milestone/ValidityPredicates/Data/Bool.juvix
similarity index 100%
rename from examples/milestone/Lib/Data/Bool.mjuvix
rename to examples/milestone/ValidityPredicates/Data/Bool.juvix
diff --git a/examples/milestone/Lib/Data/Int.mjuvix b/examples/milestone/ValidityPredicates/Data/Int.juvix
similarity index 100%
rename from examples/milestone/Lib/Data/Int.mjuvix
rename to examples/milestone/ValidityPredicates/Data/Int.juvix
diff --git a/examples/milestone/Lib/Data/List.mjuvix b/examples/milestone/ValidityPredicates/Data/List.juvix
similarity index 100%
rename from examples/milestone/Lib/Data/List.mjuvix
rename to examples/milestone/ValidityPredicates/Data/List.juvix
diff --git a/examples/milestone/Lib/Data/Maybe.mjuvix b/examples/milestone/ValidityPredicates/Data/Maybe.juvix
similarity index 100%
rename from examples/milestone/Lib/Data/Maybe.mjuvix
rename to examples/milestone/ValidityPredicates/Data/Maybe.juvix
diff --git a/examples/milestone/Lib/Data/Nat.mjuvix b/examples/milestone/ValidityPredicates/Data/Nat.juvix
similarity index 90%
rename from examples/milestone/Lib/Data/Nat.mjuvix
rename to examples/milestone/ValidityPredicates/Data/Nat.juvix
index ae25fb874..b3ca58c0e 100644
--- a/examples/milestone/Lib/Data/Nat.mjuvix
+++ b/examples/milestone/ValidityPredicates/Data/Nat.juvix
@@ -81,9 +81,9 @@ infix 4 >=Nat;
>=Nat l r ≔ (l >Nat r) || (==Nat l r);
foreign c {
- void* natInd(int n, void* a1, minijuvix_function_t* a2) {
+ void* natInd(int n, void* a1, juvix_function_t* a2) {
if (n <= 0) return a1;
- return ((void* (*) (minijuvix_function_t*, void*))a2->fun)(a2, natInd(n - 1, a1, a2));
+ return ((void* (*) (juvix_function_t*, void*))a2->fun)(a2, natInd(n - 1, a1, a2));
\}
};
diff --git a/examples/milestone/Lib/Data/Pair.mjuvix b/examples/milestone/ValidityPredicates/Data/Pair.juvix
similarity index 100%
rename from examples/milestone/Lib/Data/Pair.mjuvix
rename to examples/milestone/ValidityPredicates/Data/Pair.juvix
diff --git a/examples/milestone/Lib/Data/String.mjuvix b/examples/milestone/ValidityPredicates/Data/String.juvix
similarity index 100%
rename from examples/milestone/Lib/Data/String.mjuvix
rename to examples/milestone/ValidityPredicates/Data/String.juvix
diff --git a/examples/milestone/Lib/Prelude.mjuvix b/examples/milestone/ValidityPredicates/Prelude.juvix
similarity index 100%
rename from examples/milestone/Lib/Prelude.mjuvix
rename to examples/milestone/ValidityPredicates/Prelude.juvix
diff --git a/examples/milestone/ValidityPredicates/Prelude.mjuvix b/examples/milestone/ValidityPredicates/Prelude.mjuvix
deleted file mode 120000
index 8fde4860a..000000000
--- a/examples/milestone/ValidityPredicates/Prelude.mjuvix
+++ /dev/null
@@ -1 +0,0 @@
-../Lib/Prelude.mjuvix
\ No newline at end of file
diff --git a/examples/milestone/ValidityPredicates/SimpleFungibleToken.mjuvix b/examples/milestone/ValidityPredicates/SimpleFungibleToken.juvix
similarity index 100%
rename from examples/milestone/ValidityPredicates/SimpleFungibleToken.mjuvix
rename to examples/milestone/ValidityPredicates/SimpleFungibleToken.juvix
diff --git a/examples/milestone/ValidityPredicates/System b/examples/milestone/ValidityPredicates/System
deleted file mode 120000
index b0eacaa00..000000000
--- a/examples/milestone/ValidityPredicates/System
+++ /dev/null
@@ -1 +0,0 @@
-../Lib/System
\ No newline at end of file
diff --git a/examples/milestone/Lib/System/IO.mjuvix b/examples/milestone/ValidityPredicates/System/IO.juvix
similarity index 100%
rename from examples/milestone/Lib/System/IO.mjuvix
rename to examples/milestone/ValidityPredicates/System/IO.juvix
diff --git a/examples/milestone/ValidityPredicates/Tests.mjuvix b/examples/milestone/ValidityPredicates/Tests.juvix
similarity index 100%
rename from examples/milestone/ValidityPredicates/Tests.mjuvix
rename to examples/milestone/ValidityPredicates/Tests.juvix
diff --git a/examples/milestone/MiniTicTacToe/minijuvix.yaml b/examples/milestone/ValidityPredicates/juvix.yaml
similarity index 100%
rename from examples/milestone/MiniTicTacToe/minijuvix.yaml
rename to examples/milestone/ValidityPredicates/juvix.yaml
diff --git a/hie.yaml b/hie.yaml
index bda2c8820..153be09b8 100644
--- a/hie.yaml
+++ b/hie.yaml
@@ -1,10 +1,10 @@
cradle:
stack:
- path: "./src"
- component: "minijuvix:lib"
+ component: "juvix:lib"
- path: "./app"
- component: "minijuvix:exe:minijuvix"
+ component: "juvix:exe:juvix"
- path: "./test"
- component: "minijuvix:test:minijuvix-test"
+ component: "juvix:test:juvix-test"
diff --git a/minijuvix-mode/flycheck-minijuvix.el b/juvix-mode/flycheck-juvix.el
similarity index 52%
rename from minijuvix-mode/flycheck-minijuvix.el
rename to juvix-mode/flycheck-juvix.el
index 3158ea0a5..a04dea321 100644
--- a/minijuvix-mode/flycheck-minijuvix.el
+++ b/juvix-mode/flycheck-juvix.el
@@ -1,16 +1,16 @@
(require 'flycheck)
-(require 'minijuvix-customize)
+(require 'juvix-customize)
-(defgroup flycheck-minijuvix nil
- "MiniJuvix support for Flycheck."
- :prefix "flycheck-minijuvix-"
+(defgroup flycheck-juvix nil
+ "Juvix support for Flycheck."
+ :prefix "flycheck-juvix-"
:group 'flycheck
- :link '(url-link :tag "Github" "https://github.com/heliaxdev/MiniJuvix"))
+ :link '(url-link :tag "Github" "https://github.com/anoma/juvix"))
-(flycheck-define-checker minijuvix
- "A MiniJuvix syntax checker."
- :command ("minijuvix" "microjuvix" "typecheck" "--only-errors" "--no-colors"
- (option-flag "--no-stdlib" minijuvix-disable-embedded-stdlib)
+(flycheck-define-checker juvix
+ "A Juvix syntax checker."
+ :command ("juvix" "microjuvix" "typecheck" "--only-errors" "--no-colors"
+ (option-flag "--no-stdlib" juvix-disable-embedded-stdlib)
source-original)
:error-patterns
(
@@ -19,8 +19,8 @@
(error line-start (file-name) ":" line "-" end-line ":" column ": error:" (message (one-or-more (not "ת"))))
(error line-start (file-name) ":" line "-" end-line ":" column "-" end-column ": error:" (message (one-or-more (not "ת"))))
)
- :modes minijuvix-mode
+ :modes juvix-mode
)
-(add-to-list 'flycheck-checkers 'minijuvix)
+(add-to-list 'flycheck-checkers 'juvix)
-(provide 'flycheck-minijuvix)
+(provide 'flycheck-juvix)
diff --git a/juvix-mode/juvix-customize.el b/juvix-mode/juvix-customize.el
new file mode 100644
index 000000000..1c0ac1f8e
--- /dev/null
+++ b/juvix-mode/juvix-customize.el
@@ -0,0 +1,12 @@
+
+(defcustom juvix-auto-input-method t
+ "Automatically set the input method in juvix files."
+ :type 'boolean
+ :group 'juvix)
+
+(defcustom juvix-disable-embedded-stdlib nil
+ "Disable the embedded standard library."
+ :type 'boolean
+ :group 'juvix)
+
+(provide 'juvix-customize)
diff --git a/minijuvix-mode/minijuvix-highlight.el b/juvix-mode/juvix-highlight.el
similarity index 59%
rename from minijuvix-mode/minijuvix-highlight.el
rename to juvix-mode/juvix-highlight.el
index 22a31490a..ec859eb3d 100644
--- a/minijuvix-mode/minijuvix-highlight.el
+++ b/juvix-mode/juvix-highlight.el
@@ -1,78 +1,78 @@
(require 'font-lock)
-(defgroup minijuvix-highlight nil
- "Syntax highlighting for MiniJuvix."
- :group 'minijuvix)
+(defgroup juvix-highlight nil
+ "Syntax highlighting for Juvix."
+ :group 'juvix)
-(defgroup minijuvix-highlight-faces nil
- "Faces used to highlight MiniJuvix code."
- :group 'minijuvix-highlight)
+(defgroup juvix-highlight-faces nil
+ "Faces used to highlight Juvix code."
+ :group 'juvix-highlight)
-(defface minijuvix-highlight-keyword-face
+(defface juvix-highlight-keyword-face
'((((background light))
(:foreground "#399ee6"))
(((background dark))
(:foreground "#81a1c1")))
"The face used for keywords."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-function-face
+(defface juvix-highlight-function-face
'((((background light))
(:foreground "#f2ae49"))
(((background dark))
(:foreground "#ebcb8b")))
"The face used for functions."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-inductive-face
+(defface juvix-highlight-inductive-face
'((((background light))
(:foreground "#86b300"))
(((background dark))
(:foreground "#a3be8c")))
"The face used for inductive types."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-constructor-face
+(defface juvix-highlight-constructor-face
'((((background light))
(:foreground "#a37acc"))
(((background dark))
(:foreground "#b48ead")))
"The face used for constructors."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-axiom-face
+(defface juvix-highlight-axiom-face
'((((background light))
(:foreground "#f07171"))
(((background dark))
(:foreground "#bf616a")))
"The face used for axioms."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-string-face
+(defface juvix-highlight-string-face
'((((background light))
(:foreground "#f07171"))
(((background dark))
(:foreground "#d08770")))
"The face used for string literals."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-number-face
+(defface juvix-highlight-number-face
'((((background light))
(:foreground "#000000"))
(((background dark))
(:foreground "#d8dee9")))
"The face used for numbers."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-error-face
+(defface juvix-highlight-error-face
'((((background light))
(:foreground "#bd3744"))
(((background dark))
(:foreground "#bd3744")))
"The face used for errors."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(defface minijuvix-highlight-comment-face
+(defface juvix-highlight-comment-face
'((((background light))
(:foreground "#8b2252"
:slant italic
@@ -83,6 +83,6 @@
)
))
"The face used for comments."
- :group 'minijuvix-highlight-faces)
+ :group 'juvix-highlight-faces)
-(provide 'minijuvix-highlight)
+(provide 'juvix-highlight)
diff --git a/minijuvix-mode/minijuvix-input.el b/juvix-mode/juvix-input.el
similarity index 65%
rename from minijuvix-mode/minijuvix-input.el
rename to juvix-mode/juvix-input.el
index eae15f81e..cbc00c655 100644
--- a/minijuvix-mode/minijuvix-input.el
+++ b/juvix-mode/juvix-input.el
@@ -1,5 +1,5 @@
;;; -*- lexical-binding: t; -*-
-;;; minijuvix-input.el --- The minijuvix input method
+;;; juvix-input.el --- The juvix input method
;; Copyright (c) 2005-2021 remains with the authors.
;; Agda 2 was originally written by Ulf Norell,
@@ -47,15 +47,15 @@
;; A highly customisable input method which can inherit from other
;; Quail input methods. By default the input method is geared towards
-;; the input of mathematical and other symbols in MiniJuvix programs.
+;; the input of mathematical and other symbols in Juvix programs.
;;
-;; Use M-x customize-group minijuvix-input to customise this input method.
+;; Use M-x customize-group juvix-input to customise this input method.
;; Note that the functions defined under "Functions used to tweak
;; translation pairs" below can be used to tweak both the key
;; translations inherited from other input methods as well as the
;; ones added specifically for this one.
;;
-;; Use minijuvix-input-show-translations to see all the characters which
+;; Use juvix-input-show-translations to see all the characters which
;; can be typed using this input method (except for those
;; corresponding to ASCII characters).
@@ -74,20 +74,20 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Utility functions
-(defun minijuvix-input-concat-map (f xs)
+(defun juvix-input-concat-map (f xs)
"Concat (map F XS)."
(apply 'append (mapcar f xs)))
-(defun minijuvix-input-to-string-list (s)
+(defun juvix-input-to-string-list (s)
"Convert a string S to a list of one-character strings, after
removing all space and newline characters."
- (minijuvix-input-concat-map
+ (juvix-input-concat-map
(lambda (c) (if (member c (string-to-list " \n"))
nil
(list (string c))))
(string-to-list s)))
-(defun minijuvix-input-character-range (from to)
+(defun juvix-input-character-range (from to)
"A string consisting of the characters from FROM to TO."
(let (seq)
(dotimes (i (1+ (- to from)))
@@ -97,29 +97,29 @@ removing all space and newline characters."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Functions used to tweak translation pairs
-(defun minijuvix-input-compose (f g)
+(defun juvix-input-compose (f g)
"\x -> concatMap F (G x)"
- (lambda (x) (minijuvix-input-concat-map f (funcall g x))))
+ (lambda (x) (juvix-input-concat-map f (funcall g x))))
-(defun minijuvix-input-or (f g)
+(defun juvix-input-or (f g)
"\x -> F x ++ G x"
(lambda (x) (append (funcall f x) (funcall g x))))
-(defun minijuvix-input-nonempty ()
+(defun juvix-input-nonempty ()
"Only keep pairs with a non-empty first component."
(lambda (x) (if (> (length (car x)) 0) (list x))))
-(defun minijuvix-input-prepend (prefix)
+(defun juvix-input-prepend (prefix)
"Prepend PREFIX to all key sequences."
(lambda (x) `((,(concat prefix (car x)) . ,(cdr x)))))
-(defun minijuvix-input-prefix (prefix)
+(defun juvix-input-prefix (prefix)
"Only keep pairs whose key sequence starts with PREFIX."
(lambda (x)
(if (equal (substring (car x) 0 (length prefix)) prefix)
(list x))))
-(defun minijuvix-input-suffix (suffix)
+(defun juvix-input-suffix (suffix)
"Only keep pairs whose key sequence ends with SUFFIX."
(lambda (x)
(if (equal (substring (car x)
@@ -127,56 +127,56 @@ removing all space and newline characters."
suffix)
(list x))))
-(defun minijuvix-input-drop (ss)
+(defun juvix-input-drop (ss)
"Drop pairs matching one of the given key sequences.
SS should be a list of strings."
(lambda (x) (unless (member (car x) ss) (list x))))
-(defun minijuvix-input-drop-beginning (n)
+(defun juvix-input-drop-beginning (n)
"Drop N characters from the beginning of each key sequence."
(lambda (x) `((,(substring (car x) n) . ,(cdr x)))))
-(defun minijuvix-input-drop-end (n)
+(defun juvix-input-drop-end (n)
"Drop N characters from the end of each key sequence."
(lambda (x)
`((,(substring (car x) 0 (- (length (car x)) n)) .
,(cdr x)))))
-(defun minijuvix-input-drop-prefix (prefix)
+(defun juvix-input-drop-prefix (prefix)
"Only keep pairs whose key sequence starts with PREFIX.
This prefix is dropped."
- (minijuvix-input-compose
- (minijuvix-input-drop-beginning (length prefix))
- (minijuvix-input-prefix prefix)))
+ (juvix-input-compose
+ (juvix-input-drop-beginning (length prefix))
+ (juvix-input-prefix prefix)))
-(defun minijuvix-input-drop-suffix (suffix)
+(defun juvix-input-drop-suffix (suffix)
"Only keep pairs whose key sequence ends with SUFFIX.
This suffix is dropped."
- (minijuvix-input-compose
- (minijuvix-input-drop-end (length suffix))
- (minijuvix-input-suffix suffix)))
+ (juvix-input-compose
+ (juvix-input-drop-end (length suffix))
+ (juvix-input-suffix suffix)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Customization
-;; The :set keyword is set to 'minijuvix-input-incorporate-changed-setting
+;; The :set keyword is set to 'juvix-input-incorporate-changed-setting
;; so that the input method gets updated immediately when users
;; customize it. However, the setup functions cannot be run before all
;; variables have been defined. Hence the :initialize keyword is set to
;; 'custom-initialize-default to ensure that the setup is not performed
-;; until minijuvix-input-setup is called at the end of this file.
+;; until juvix-input-setup is called at the end of this file.
-(defgroup minijuvix-input nil
- "The minijuvix input method.
+(defgroup juvix-input nil
+ "The juvix input method.
After tweaking these settings you may want to inspect the resulting
-translations using `minijuvix-input-show-translations'."
- :group 'minijuvix
+translations using `juvix-input-show-translations'."
+ :group 'juvix
)
-(defcustom minijuvix-input-tweak-all
- '(minijuvix-input-compose
- (minijuvix-input-prepend "\\")
- (minijuvix-input-nonempty))
+(defcustom juvix-input-tweak-all
+ '(juvix-input-compose
+ (juvix-input-prepend "\\")
+ (juvix-input-nonempty))
"An expression yielding a function which can be used to tweak
all translations before they are included in the input method.
The resulting function (if non-nil) is applied to every
@@ -185,52 +185,52 @@ pairs. (Note that the translations can be anything accepted by
`quail-defrule'.)
If you change this setting manually (without using the
-customization buffer) you need to call `minijuvix-input-setup' in
+customization buffer) you need to call `juvix-input-setup' in
order for the change to take effect."
- :group 'minijuvix-input
- :set 'minijuvix-input-incorporate-changed-setting
+ :group 'juvix-input
+ :set 'juvix-input-incorporate-changed-setting
:initialize 'custom-initialize-default
:type 'sexp)
-(defcustom minijuvix-input-inherit
- `(("TeX" . (minijuvix-input-compose
- (minijuvix-input-drop '("geq" "leq" "bullet" "qed" "par"))
- (minijuvix-input-or
- (minijuvix-input-drop-prefix "\\")
- (minijuvix-input-or
- (minijuvix-input-compose
- (minijuvix-input-drop '("^l" "^o" "^r" "^v"))
- (minijuvix-input-prefix "^"))
- (minijuvix-input-prefix "_")))))
+(defcustom juvix-input-inherit
+ `(("TeX" . (juvix-input-compose
+ (juvix-input-drop '("geq" "leq" "bullet" "qed" "par"))
+ (juvix-input-or
+ (juvix-input-drop-prefix "\\")
+ (juvix-input-or
+ (juvix-input-compose
+ (juvix-input-drop '("^l" "^o" "^r" "^v"))
+ (juvix-input-prefix "^"))
+ (juvix-input-prefix "_")))))
)
"A list of Quail input methods whose translations should be
-inherited by the minijuvix input method (with the exception of
+inherited by the juvix input method (with the exception of
translations corresponding to ASCII characters).
The list consists of pairs (qp . tweak), where qp is the name of
a Quail package, and tweak is an expression of the same kind as
-`minijuvix-input-tweak-all' which is used to tweak the translation
+`juvix-input-tweak-all' which is used to tweak the translation
pairs of the input method.
The inherited translation pairs are added last, after
-`minijuvix-input-user-translations' and `minijuvix-input-translations'.
+`juvix-input-user-translations' and `juvix-input-translations'.
If you change this setting manually (without using the
-customization buffer) you need to call `minijuvix-input-setup' in
+customization buffer) you need to call `juvix-input-setup' in
order for the change to take effect."
- :group 'minijuvix-input
- :set 'minijuvix-input-incorporate-changed-setting
+ :group 'juvix-input
+ :set 'juvix-input-incorporate-changed-setting
:initialize 'custom-initialize-default
:type '(repeat (cons (string :tag "Quail package")
(sexp :tag "Tweaking function"))))
-(defcustom minijuvix-input-translations
+(defcustom juvix-input-translations
(let ((max-lisp-eval-depth 2800)) `(
;; Equality and similar symbols.
- ("eq" . ,(minijuvix-input-to-string-list "=∼∽≈≋∻∾∿≀≃⋍≂≅ ≌≊≡≣≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≍≎≏≬⋕"))
- ("eqn" . ,(minijuvix-input-to-string-list "≠≁ ≉ ≄ ≇≆ ≢ ≭ "))
+ ("eq" . ,(juvix-input-to-string-list "=∼∽≈≋∻∾∿≀≃⋍≂≅ ≌≊≡≣≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≍≎≏≬⋕"))
+ ("eqn" . ,(juvix-input-to-string-list "≠≁ ≉ ≄ ≇≆ ≢ ≭ "))
("=n" . ("≠"))
("~" . ("∼")) ("~n" . ("≁"))
@@ -256,10 +256,10 @@ order for the change to take effect."
;; Inequality and similar symbols.
- ("leq" . ,(minijuvix-input-to-string-list "<≪⋘≤≦≲ ≶≺≼≾⊂⊆ ⋐⊏⊑ ⊰⊲⊴⋖⋚⋜⋞"))
- ("leqn" . ,(minijuvix-input-to-string-list "≮ ≰≨≴⋦≸⊀ ⋨⊄⊈⊊ ⋢⋤ ⋪⋬ ⋠"))
- ("geq" . ,(minijuvix-input-to-string-list ">≫⋙≥≧≳ ≷≻≽≿⊃⊇ ⋑⊐⊒ ⊱⊳⊵⋗⋛⋝⋟"))
- ("geqn" . ,(minijuvix-input-to-string-list "≯ ≱≩≵⋧≹⊁ ⋩⊅⊉⊋ ⋣⋥ ⋫⋭ ⋡"))
+ ("leq" . ,(juvix-input-to-string-list "<≪⋘≤≦≲ ≶≺≼≾⊂⊆ ⋐⊏⊑ ⊰⊲⊴⋖⋚⋜⋞"))
+ ("leqn" . ,(juvix-input-to-string-list "≮ ≰≨≴⋦≸⊀ ⋨⊄⊈⊊ ⋢⋤ ⋪⋬ ⋠"))
+ ("geq" . ,(juvix-input-to-string-list ">≫⋙≥≧≳ ≷≻≽≿⊃⊇ ⋑⊐⊒ ⊱⊳⊵⋗⋛⋝⋟"))
+ ("geqn" . ,(juvix-input-to-string-list "≯ ≱≩≵⋧≹⊁ ⋩⊅⊉⊋ ⋣⋥ ⋫⋭ ⋡"))
("<=" . ("≤")) (">=" . ("≥"))
("<=n" . ("≰")) (">=n" . ("≱"))
@@ -280,15 +280,15 @@ order for the change to take effect."
;; Set membership etc.
- ("member" . ,(minijuvix-input-to-string-list "∈∉∊∋∌∍⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿"))
+ ("member" . ,(juvix-input-to-string-list "∈∉∊∋∌∍⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿"))
("inn" . ("∉"))
("nin" . ("∌"))
;; Intersections, unions etc.
- ("intersection" . ,(minijuvix-input-to-string-list "∩⋂∧⋀⋏⨇⊓⨅⋒∏ ⊼ ⨉"))
- ("union" . ,(minijuvix-input-to-string-list "∪⋃∨⋁⋎⨈⊔⨆⋓∐⨿⊽⊻⊍⨃⊎⨄⊌∑⅀"))
+ ("intersection" . ,(juvix-input-to-string-list "∩⋂∧⋀⋏⨇⊓⨅⋒∏ ⊼ ⨉"))
+ ("union" . ,(juvix-input-to-string-list "∪⋃∨⋁⋎⨈⊔⨆⋓∐⨿⊽⊻⊍⨃⊎⨄⊌∑⅀"))
("and" . ("∧")) ("or" . ("∨"))
("And" . ("⋀")) ("Or" . ("⋁"))
@@ -299,7 +299,7 @@ order for the change to take effect."
;; Entailment etc.
- ("entails" . ,(minijuvix-input-to-string-list "⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯"))
+ ("entails" . ,(juvix-input-to-string-list "⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯"))
("|-" . ("⊢")) ("|-n" . ("⊬"))
("-|" . ("⊣"))
@@ -323,9 +323,9 @@ order for the change to take effect."
;; Corners, ceilings and floors.
- ("c" . ,(minijuvix-input-to-string-list "⌜⌝⌞⌟⌈⌉⌊⌋"))
- ("cu" . ,(minijuvix-input-to-string-list "⌜⌝ ⌈⌉ "))
- ("cl" . ,(minijuvix-input-to-string-list " ⌞⌟ ⌊⌋"))
+ ("c" . ,(juvix-input-to-string-list "⌜⌝⌞⌟⌈⌉⌊⌋"))
+ ("cu" . ,(juvix-input-to-string-list "⌜⌝ ⌈⌉ "))
+ ("cl" . ,(juvix-input-to-string-list " ⌞⌟ ⌊⌋"))
("cul" . ("⌜")) ("cuL" . ("⌈"))
("cur" . ("⌝")) ("cuR" . ("⌉"))
@@ -342,9 +342,9 @@ order for the change to take effect."
("*" . ("⋆"))
(".+" . ("∔"))
(".-" . ("∸"))
- (":" . ,(minijuvix-input-to-string-list "∶⦂ː꞉˸፥፦:﹕︓"))
- ("," . ,(minijuvix-input-to-string-list "ʻ،⸲⸴⹁⹉、︐︑﹐﹑,、"))
- (";" . ,(minijuvix-input-to-string-list "؛⁏፤꛶;︔﹔⍮⸵;"))
+ (":" . ,(juvix-input-to-string-list "∶⦂ː꞉˸፥፦:﹕︓"))
+ ("," . ,(juvix-input-to-string-list "ʻ،⸲⸴⹁⹉、︐︑﹐﹑,、"))
+ (";" . ,(juvix-input-to-string-list "؛⁏፤꛶;︔﹔⍮⸵;"))
("::" . ("∷"))
("::-" . ("∺"))
("-:" . ("∹"))
@@ -383,22 +383,22 @@ order for the change to take effect."
;; Various symbols.
- ("integral" . ,(minijuvix-input-to-string-list "∫∬∭∮∯∰∱∲∳"))
- ("angle" . ,(minijuvix-input-to-string-list "∟∡∢⊾⊿"))
- ("join" . ,(minijuvix-input-to-string-list "⋈⋉⋊⋋⋌⨝⟕⟖⟗"))
+ ("integral" . ,(juvix-input-to-string-list "∫∬∭∮∯∰∱∲∳"))
+ ("angle" . ,(juvix-input-to-string-list "∟∡∢⊾⊿"))
+ ("join" . ,(juvix-input-to-string-list "⋈⋉⋊⋋⋌⨝⟕⟖⟗"))
;; Arrows.
- ("l" . ,(minijuvix-input-to-string-list "←⇐⇚⇇⇆↤⇦↞↼↽⇠⇺↜⇽⟵⟸↚⇍⇷ ↹ ↢↩↫⇋⇜⇤⟻⟽⤆↶↺⟲ "))
- ("r" . ,(minijuvix-input-to-string-list "→⇒⇛⇉⇄↦⇨↠⇀⇁⇢⇻↝⇾⟶⟹↛⇏⇸⇶ ↴ ↣↪↬⇌⇝⇥⟼⟾⤇↷↻⟳⇰⇴⟴⟿ ➵➸➙➔➛➜➝➞➟➠➡➢➣➤➧➨➩➪➫➬➭➮➯➱➲➳➺➻➼➽➾⊸"))
- ("u" . ,(minijuvix-input-to-string-list "↑⇑⟰⇈⇅↥⇧↟↿↾⇡⇞ ↰↱➦ ⇪⇫⇬⇭⇮⇯ "))
- ("d" . ,(minijuvix-input-to-string-list "↓⇓⟱⇊⇵↧⇩↡⇃⇂⇣⇟ ↵↲↳➥ ↯ "))
- ("ud" . ,(minijuvix-input-to-string-list "↕⇕ ↨⇳ "))
- ("lr" . ,(minijuvix-input-to-string-list "↔⇔ ⇼↭⇿⟷⟺↮⇎⇹ "))
- ("ul" . ,(minijuvix-input-to-string-list "↖⇖ ⇱↸ "))
- ("ur" . ,(minijuvix-input-to-string-list "↗⇗ ➶➹➚ "))
- ("dr" . ,(minijuvix-input-to-string-list "↘⇘ ⇲ ➴➷➘ "))
- ("dl" . ,(minijuvix-input-to-string-list "↙⇙ "))
+ ("l" . ,(juvix-input-to-string-list "←⇐⇚⇇⇆↤⇦↞↼↽⇠⇺↜⇽⟵⟸↚⇍⇷ ↹ ↢↩↫⇋⇜⇤⟻⟽⤆↶↺⟲ "))
+ ("r" . ,(juvix-input-to-string-list "→⇒⇛⇉⇄↦⇨↠⇀⇁⇢⇻↝⇾⟶⟹↛⇏⇸⇶ ↴ ↣↪↬⇌⇝⇥⟼⟾⤇↷↻⟳⇰⇴⟴⟿ ➵➸➙➔➛➜➝➞➟➠➡➢➣➤➧➨➩➪➫➬➭➮➯➱➲➳➺➻➼➽➾⊸"))
+ ("u" . ,(juvix-input-to-string-list "↑⇑⟰⇈⇅↥⇧↟↿↾⇡⇞ ↰↱➦ ⇪⇫⇬⇭⇮⇯ "))
+ ("d" . ,(juvix-input-to-string-list "↓⇓⟱⇊⇵↧⇩↡⇃⇂⇣⇟ ↵↲↳➥ ↯ "))
+ ("ud" . ,(juvix-input-to-string-list "↕⇕ ↨⇳ "))
+ ("lr" . ,(juvix-input-to-string-list "↔⇔ ⇼↭⇿⟷⟺↮⇎⇹ "))
+ ("ul" . ,(juvix-input-to-string-list "↖⇖ ⇱↸ "))
+ ("ur" . ,(juvix-input-to-string-list "↗⇗ ➶➹➚ "))
+ ("dr" . ,(juvix-input-to-string-list "↘⇘ ⇲ ➴➷➘ "))
+ ("dl" . ,(juvix-input-to-string-list "↙⇙ "))
("l-" . ("←")) ("<-" . ("←")) ("l=" . ("⇐")) ("<=" . ("⇐"))
("r-" . ("→")) ("->" . ("→")) ("r=" . ("⇒")) ("=>" . ("⇒"))
@@ -439,61 +439,61 @@ order for the change to take effect."
;; Ellipsis.
- ("..." . ,(minijuvix-input-to-string-list "⋯⋮⋰⋱"))
+ ("..." . ,(juvix-input-to-string-list "⋯⋮⋰⋱"))
;; Box-drawing characters.
- ("---" . ,(minijuvix-input-to-string-list "─│┌┐└┘├┤┬┼┴╴╵╶╷╭╮╯╰╱╲╳"))
- ("--=" . ,(minijuvix-input-to-string-list "═║╔╗╚╝╠╣╦╬╩ ╒╕╘╛╞╡╤╪╧ ╓╖╙╜╟╢╥╫╨"))
- ("--_" . ,(minijuvix-input-to-string-list "━┃┏┓┗┛┣┫┳╋┻╸╹╺╻
+ ("---" . ,(juvix-input-to-string-list "─│┌┐└┘├┤┬┼┴╴╵╶╷╭╮╯╰╱╲╳"))
+ ("--=" . ,(juvix-input-to-string-list "═║╔╗╚╝╠╣╦╬╩ ╒╕╘╛╞╡╤╪╧ ╓╖╙╜╟╢╥╫╨"))
+ ("--_" . ,(juvix-input-to-string-list "━┃┏┓┗┛┣┫┳╋┻╸╹╺╻
┍┯┑┕┷┙┝┿┥┎┰┒┖┸┚┠╂┨┞╀┦┟╁┧┢╈┪┡╇┩
┮┭┶┵┾┽┲┱┺┹╊╉╆╅╄╃ ╿╽╼╾"))
- ("--." . ,(minijuvix-input-to-string-list "╌╎┄┆┈┊
+ ("--." . ,(juvix-input-to-string-list "╌╎┄┆┈┊
╍╏┅┇┉┋"))
;; Triangles.
;; Big/small, black/white.
- ("t" . ,(minijuvix-input-to-string-list "◂◃◄◅▸▹►▻▴▵▾▿◢◿◣◺◤◸◥◹"))
- ("T" . ,(minijuvix-input-to-string-list "◀◁▶▷▲△▼▽◬◭◮"))
+ ("t" . ,(juvix-input-to-string-list "◂◃◄◅▸▹►▻▴▵▾▿◢◿◣◺◤◸◥◹"))
+ ("T" . ,(juvix-input-to-string-list "◀◁▶▷▲△▼▽◬◭◮"))
- ("tb" . ,(minijuvix-input-to-string-list "◂▸▴▾◄►◢◣◤◥"))
- ("tw" . ,(minijuvix-input-to-string-list "◃▹▵▿◅▻◿◺◸◹"))
+ ("tb" . ,(juvix-input-to-string-list "◂▸▴▾◄►◢◣◤◥"))
+ ("tw" . ,(juvix-input-to-string-list "◃▹▵▿◅▻◿◺◸◹"))
- ("Tb" . ,(minijuvix-input-to-string-list "◀▶▲▼"))
- ("Tw" . ,(minijuvix-input-to-string-list "◁▷△▽"))
+ ("Tb" . ,(juvix-input-to-string-list "◀▶▲▼"))
+ ("Tw" . ,(juvix-input-to-string-list "◁▷△▽"))
;; Squares.
- ("sq" . ,(minijuvix-input-to-string-list "■□◼◻◾◽▣▢▤▥▦▧▨▩◧◨◩◪◫◰◱◲◳"))
- ("sqb" . ,(minijuvix-input-to-string-list "■◼◾"))
- ("sqw" . ,(minijuvix-input-to-string-list "□◻◽"))
+ ("sq" . ,(juvix-input-to-string-list "■□◼◻◾◽▣▢▤▥▦▧▨▩◧◨◩◪◫◰◱◲◳"))
+ ("sqb" . ,(juvix-input-to-string-list "■◼◾"))
+ ("sqw" . ,(juvix-input-to-string-list "□◻◽"))
("sq." . ("▣"))
("sqo" . ("▢"))
;; Rectangles.
- ("re" . ,(minijuvix-input-to-string-list "▬▭▮▯"))
- ("reb" . ,(minijuvix-input-to-string-list "▬▮"))
- ("rew" . ,(minijuvix-input-to-string-list "▭▯"))
+ ("re" . ,(juvix-input-to-string-list "▬▭▮▯"))
+ ("reb" . ,(juvix-input-to-string-list "▬▮"))
+ ("rew" . ,(juvix-input-to-string-list "▭▯"))
;; Parallelograms.
- ("pa" . ,(minijuvix-input-to-string-list "▰▱"))
+ ("pa" . ,(juvix-input-to-string-list "▰▱"))
("pab" . ("▰"))
("paw" . ("▱"))
;; Diamonds.
- ("di" . ,(minijuvix-input-to-string-list "◆◇◈"))
+ ("di" . ,(juvix-input-to-string-list "◆◇◈"))
("dib" . ("◆"))
("diw" . ("◇"))
("di." . ("◈"))
;; Circles.
- ("ci" . ,(minijuvix-input-to-string-list "●○◎◌◯◍◐◑◒◓◔◕◖◗◠◡◴◵◶◷⚆⚇⚈⚉"))
+ ("ci" . ,(juvix-input-to-string-list "●○◎◌◯◍◐◑◒◓◔◕◖◗◠◡◴◵◶◷⚆⚇⚈⚉"))
("cib" . ("●"))
("ciw" . ("○"))
("ci." . ("◎"))
@@ -502,8 +502,8 @@ order for the change to take effect."
;; Stars.
- ("st" . ,(minijuvix-input-to-string-list "⋆✦✧✶✴✹ ★☆✪✫✯✰✵✷✸"))
- ("st4" . ,(minijuvix-input-to-string-list "✦✧"))
+ ("st" . ,(juvix-input-to-string-list "⋆✦✧✶✴✹ ★☆✪✫✯✰✵✷✸"))
+ ("st4" . ,(juvix-input-to-string-list "✦✧"))
("st6" . ("✶"))
("st8" . ("✴"))
("st12" . ("✹"))
@@ -596,8 +596,8 @@ order for the change to take effect."
;; Parentheses.
- ("(" . ,(minijuvix-input-to-string-list "([{⁅⁽₍〈⎴⟅⟦⟨⟪⦃〈《「『【〔〖〚︵︷︹︻︽︿﹁﹃﹙﹛﹝([{「❪❬❰❲❴⟮⦅⦗⧼⸨❮⦇⦉"))
- (")" . ,(minijuvix-input-to-string-list ")]}⁆⁾₎〉⎵⟆⟧⟩⟫⦄〉》」』】〕〗〛︶︸︺︼︾﹀﹂﹄﹚﹜﹞)]}」❫❭❱❳❵⟯⦆⦘⧽⸩❯⦈⦊"))
+ ("(" . ,(juvix-input-to-string-list "([{⁅⁽₍〈⎴⟅⟦⟨⟪⦃〈《「『【〔〖〚︵︷︹︻︽︿﹁﹃﹙﹛﹝([{「❪❬❰❲❴⟮⦅⦗⧼⸨❮⦇⦉"))
+ (")" . ,(juvix-input-to-string-list ")]}⁆⁾₎〉⎵⟆⟧⟩⟫⦄〉》」』】〕〗〛︶︸︺︼︾﹀﹂﹄﹚﹜﹞)]}」❫❭❱❳❵⟯⦆⦘⧽⸩❯⦈⦊"))
("[[" . ("⟦"))
("]]" . ("⟧"))
@@ -625,23 +625,23 @@ order for the change to take effect."
;; Primes.
- ("'" . ,(minijuvix-input-to-string-list "′″‴⁗"))
- ("`" . ,(minijuvix-input-to-string-list "‵‶‷"))
+ ("'" . ,(juvix-input-to-string-list "′″‴⁗"))
+ ("`" . ,(juvix-input-to-string-list "‵‶‷"))
;; Fractions.
- ("frac" . ,(minijuvix-input-to-string-list "¼½¾⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞⅟"))
+ ("frac" . ,(juvix-input-to-string-list "¼½¾⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞⅟"))
;; Bullets.
- ("bu" . ,(minijuvix-input-to-string-list "•◦‣⁌⁍"))
+ ("bu" . ,(juvix-input-to-string-list "•◦‣⁌⁍"))
("bub" . ("•"))
("buw" . ("◦"))
("but" . ("‣"))
;; Musical symbols.
- ("note" . ,(minijuvix-input-to-string-list "♩♪♫♬"))
+ ("note" . ,(juvix-input-to-string-list "♩♪♫♬"))
("b" . ("♭"))
("#" . ("♯"))
@@ -654,12 +654,12 @@ order for the change to take effect."
("??" . ("⁇"))
("?!" . ("‽" "⁈"))
("!?" . ("⁉"))
- ("die" . ,(minijuvix-input-to-string-list "⚀⚁⚂⚃⚄⚅"))
- ("asterisk" . ,(minijuvix-input-to-string-list "⁎⁑⁂✢✣✤✥✱✲✳✺✻✼✽❃❉❊❋"))
+ ("die" . ,(juvix-input-to-string-list "⚀⚁⚂⚃⚄⚅"))
+ ("asterisk" . ,(juvix-input-to-string-list "⁎⁑⁂✢✣✤✥✱✲✳✺✻✼✽❃❉❊❋"))
("8<" . ("✂" "✄"))
("tie" . ("⁀"))
("undertie" . ("‿"))
- ("apl" . ,(minijuvix-input-to-string-list "⌶⌷⌸⌹⌺⌻⌼⌽⌾⌿⍀⍁⍂⍃⍄⍅⍆⍇⍈
+ ("apl" . ,(juvix-input-to-string-list "⌶⌷⌸⌹⌺⌻⌼⌽⌾⌿⍀⍁⍂⍃⍄⍅⍆⍇⍈
⍉⍊⍋⍌⍍⍎⍏⍐⍑⍒⍓⍔⍕⍖⍗⍘⍙⍚⍛
⍜⍝⍞⍟⍠⍡⍢⍣⍤⍥⍦⍧⍨⍩⍪⍫⍬⍭⍮
⍯⍰⍱⍲⍳⍴⍵⍶⍷⍸⍹⍺⎕"))
@@ -670,22 +670,22 @@ order for the change to take effect."
;; translations:
;; ̀ ́ ̂ ̃ ̄ ̆ ̇ ̈ ̋ ̌ ̣ ̧ ̱
- ("^--" . ,(minijuvix-input-to-string-list"̅̿"))
- ("_--" . ,(minijuvix-input-to-string-list"̲̳"))
- ("^~" . ,(minijuvix-input-to-string-list"̃͌"))
+ ("^--" . ,(juvix-input-to-string-list"̅̿"))
+ ("_--" . ,(juvix-input-to-string-list"̲̳"))
+ ("^~" . ,(juvix-input-to-string-list"̃͌"))
("_~" . ( "̰"))
- ("^." . ,(minijuvix-input-to-string-list"̇̈⃛⃜"))
- ("_." . ,(minijuvix-input-to-string-list"̣̤"))
- ("^l" . ,(minijuvix-input-to-string-list"⃖⃐⃔"))
+ ("^." . ,(juvix-input-to-string-list"̇̈⃛⃜"))
+ ("_." . ,(juvix-input-to-string-list"̣̤"))
+ ("^l" . ,(juvix-input-to-string-list"⃖⃐⃔"))
("^l-" . ( "⃖"))
- ("^r" . ,(minijuvix-input-to-string-list"⃗⃑⃕"))
+ ("^r" . ,(juvix-input-to-string-list"⃗⃑⃕"))
("^r-" . ( "⃗"))
("^lr" . ( "⃡"))
("_lr" . ( "͍"))
- ("^^" . ,(minijuvix-input-to-string-list"̂̑͆"))
- ("_^" . ,(minijuvix-input-to-string-list"̭̯̪"))
- ("^v" . ,(minijuvix-input-to-string-list"̌̆"))
- ("_v" . ,(minijuvix-input-to-string-list"̬̮̺"))
+ ("^^" . ,(juvix-input-to-string-list"̂̑͆"))
+ ("_^" . ,(juvix-input-to-string-list"̭̯̪"))
+ ("^v" . ,(juvix-input-to-string-list"̌̆"))
+ ("_v" . ,(juvix-input-to-string-list"̬̮̺"))
;; Shorter forms of many greek letters plus ƛ.
@@ -1094,57 +1094,57 @@ order for the change to take effect."
;; Circled, parenthesised etc. numbers and letters.
- ( "(0)" . ,(minijuvix-input-to-string-list " ⓪🄀⓿🄋🄌"))
- ( "(1)" . ,(minijuvix-input-to-string-list "⑴①⒈❶➀➊"))
- ( "(2)" . ,(minijuvix-input-to-string-list "⑵②⒉❷➁➋"))
- ( "(3)" . ,(minijuvix-input-to-string-list "⑶③⒊❸➂➌"))
- ( "(4)" . ,(minijuvix-input-to-string-list "⑷④⒋❹➃➍"))
- ( "(5)" . ,(minijuvix-input-to-string-list "⑸⑤⒌❺➄➎"))
- ( "(6)" . ,(minijuvix-input-to-string-list "⑹⑥⒍❻➅➏"))
- ( "(7)" . ,(minijuvix-input-to-string-list "⑺⑦⒎❼➆➐"))
- ( "(8)" . ,(minijuvix-input-to-string-list "⑻⑧⒏❽➇➑"))
- ( "(9)" . ,(minijuvix-input-to-string-list "⑼⑨⒐❾➈➒"))
- ("(10)" . ,(minijuvix-input-to-string-list "⑽⑩⒑❿➉➓"))
- ("(11)" . ,(minijuvix-input-to-string-list "⑾⑪⒒⓫"))
- ("(12)" . ,(minijuvix-input-to-string-list "⑿⑫⒓⓬"))
- ("(13)" . ,(minijuvix-input-to-string-list "⒀⑬⒔⓭"))
- ("(14)" . ,(minijuvix-input-to-string-list "⒁⑭⒕⓮"))
- ("(15)" . ,(minijuvix-input-to-string-list "⒂⑮⒖⓯"))
- ("(16)" . ,(minijuvix-input-to-string-list "⒃⑯⒗⓰"))
- ("(17)" . ,(minijuvix-input-to-string-list "⒄⑰⒘⓱"))
- ("(18)" . ,(minijuvix-input-to-string-list "⒅⑱⒙⓲"))
- ("(19)" . ,(minijuvix-input-to-string-list "⒆⑲⒚⓳"))
- ("(20)" . ,(minijuvix-input-to-string-list "⒇⑳⒛⓴"))
+ ( "(0)" . ,(juvix-input-to-string-list " ⓪🄀⓿🄋🄌"))
+ ( "(1)" . ,(juvix-input-to-string-list "⑴①⒈❶➀➊"))
+ ( "(2)" . ,(juvix-input-to-string-list "⑵②⒉❷➁➋"))
+ ( "(3)" . ,(juvix-input-to-string-list "⑶③⒊❸➂➌"))
+ ( "(4)" . ,(juvix-input-to-string-list "⑷④⒋❹➃➍"))
+ ( "(5)" . ,(juvix-input-to-string-list "⑸⑤⒌❺➄➎"))
+ ( "(6)" . ,(juvix-input-to-string-list "⑹⑥⒍❻➅➏"))
+ ( "(7)" . ,(juvix-input-to-string-list "⑺⑦⒎❼➆➐"))
+ ( "(8)" . ,(juvix-input-to-string-list "⑻⑧⒏❽➇➑"))
+ ( "(9)" . ,(juvix-input-to-string-list "⑼⑨⒐❾➈➒"))
+ ("(10)" . ,(juvix-input-to-string-list "⑽⑩⒑❿➉➓"))
+ ("(11)" . ,(juvix-input-to-string-list "⑾⑪⒒⓫"))
+ ("(12)" . ,(juvix-input-to-string-list "⑿⑫⒓⓬"))
+ ("(13)" . ,(juvix-input-to-string-list "⒀⑬⒔⓭"))
+ ("(14)" . ,(juvix-input-to-string-list "⒁⑭⒕⓮"))
+ ("(15)" . ,(juvix-input-to-string-list "⒂⑮⒖⓯"))
+ ("(16)" . ,(juvix-input-to-string-list "⒃⑯⒗⓰"))
+ ("(17)" . ,(juvix-input-to-string-list "⒄⑰⒘⓱"))
+ ("(18)" . ,(juvix-input-to-string-list "⒅⑱⒙⓲"))
+ ("(19)" . ,(juvix-input-to-string-list "⒆⑲⒚⓳"))
+ ("(20)" . ,(juvix-input-to-string-list "⒇⑳⒛⓴"))
- ("(a)" . ,(minijuvix-input-to-string-list "⒜Ⓐⓐ🅐🄰🅰"))
- ("(b)" . ,(minijuvix-input-to-string-list "⒝Ⓑⓑ🅑🄱🅱"))
- ("(c)" . ,(minijuvix-input-to-string-list "⒞Ⓒⓒ🅒🄲🅲"))
- ("(d)" . ,(minijuvix-input-to-string-list "⒟Ⓓⓓ🅓🄳🅳"))
- ("(e)" . ,(minijuvix-input-to-string-list "⒠Ⓔⓔ🅔🄴🅴"))
- ("(f)" . ,(minijuvix-input-to-string-list "⒡Ⓕⓕ🅕🄵🅵"))
- ("(g)" . ,(minijuvix-input-to-string-list "⒢Ⓖⓖ🅖🄶🅶"))
- ("(h)" . ,(minijuvix-input-to-string-list "⒣Ⓗⓗ🅗🄷🅷"))
- ("(i)" . ,(minijuvix-input-to-string-list "⒤Ⓘⓘ🅘🄸🅸"))
- ("(j)" . ,(minijuvix-input-to-string-list "⒥Ⓙⓙ🅙🄹🅹"))
- ("(k)" . ,(minijuvix-input-to-string-list "⒦Ⓚⓚ🅚🄺🅺"))
- ("(l)" . ,(minijuvix-input-to-string-list "⒧Ⓛⓛ🅛🄻🅻"))
- ("(m)" . ,(minijuvix-input-to-string-list "⒨Ⓜⓜ🅜🄼🅼"))
- ("(n)" . ,(minijuvix-input-to-string-list "⒩Ⓝⓝ🅝🄽🅽"))
- ("(o)" . ,(minijuvix-input-to-string-list "⒪Ⓞⓞ🅞🄾🅾"))
- ("(p)" . ,(minijuvix-input-to-string-list "⒫Ⓟⓟ🅟🄿🅿"))
- ("(q)" . ,(minijuvix-input-to-string-list "⒬Ⓠⓠ🅠🅀🆀"))
- ("(r)" . ,(minijuvix-input-to-string-list "⒭Ⓡⓡ🅡🅁🆁"))
- ("(s)" . ,(minijuvix-input-to-string-list "⒮Ⓢⓢ🅢🅂🆂"))
- ("(t)" . ,(minijuvix-input-to-string-list "⒯Ⓣⓣ🅣🅃🆃"))
- ("(u)" . ,(minijuvix-input-to-string-list "⒰Ⓤⓤ🅤🅄🆄"))
- ("(v)" . ,(minijuvix-input-to-string-list "⒱Ⓥⓥ🅥🅅🆅"))
- ("(w)" . ,(minijuvix-input-to-string-list "⒲Ⓦⓦ🅦🅆🆆"))
- ("(x)" . ,(minijuvix-input-to-string-list "⒳Ⓧⓧ🅧🅇🆇"))
- ("(y)" . ,(minijuvix-input-to-string-list "⒴Ⓨⓨ🅨🅈🆈"))
- ("(z)" . ,(minijuvix-input-to-string-list "⒵Ⓩⓩ🅩🅉🆉"))
+ ("(a)" . ,(juvix-input-to-string-list "⒜Ⓐⓐ🅐🄰🅰"))
+ ("(b)" . ,(juvix-input-to-string-list "⒝Ⓑⓑ🅑🄱🅱"))
+ ("(c)" . ,(juvix-input-to-string-list "⒞Ⓒⓒ🅒🄲🅲"))
+ ("(d)" . ,(juvix-input-to-string-list "⒟Ⓓⓓ🅓🄳🅳"))
+ ("(e)" . ,(juvix-input-to-string-list "⒠Ⓔⓔ🅔🄴🅴"))
+ ("(f)" . ,(juvix-input-to-string-list "⒡Ⓕⓕ🅕🄵🅵"))
+ ("(g)" . ,(juvix-input-to-string-list "⒢Ⓖⓖ🅖🄶🅶"))
+ ("(h)" . ,(juvix-input-to-string-list "⒣Ⓗⓗ🅗🄷🅷"))
+ ("(i)" . ,(juvix-input-to-string-list "⒤Ⓘⓘ🅘🄸🅸"))
+ ("(j)" . ,(juvix-input-to-string-list "⒥Ⓙⓙ🅙🄹🅹"))
+ ("(k)" . ,(juvix-input-to-string-list "⒦Ⓚⓚ🅚🄺🅺"))
+ ("(l)" . ,(juvix-input-to-string-list "⒧Ⓛⓛ🅛🄻🅻"))
+ ("(m)" . ,(juvix-input-to-string-list "⒨Ⓜⓜ🅜🄼🅼"))
+ ("(n)" . ,(juvix-input-to-string-list "⒩Ⓝⓝ🅝🄽🅽"))
+ ("(o)" . ,(juvix-input-to-string-list "⒪Ⓞⓞ🅞🄾🅾"))
+ ("(p)" . ,(juvix-input-to-string-list "⒫Ⓟⓟ🅟🄿🅿"))
+ ("(q)" . ,(juvix-input-to-string-list "⒬Ⓠⓠ🅠🅀🆀"))
+ ("(r)" . ,(juvix-input-to-string-list "⒭Ⓡⓡ🅡🅁🆁"))
+ ("(s)" . ,(juvix-input-to-string-list "⒮Ⓢⓢ🅢🅂🆂"))
+ ("(t)" . ,(juvix-input-to-string-list "⒯Ⓣⓣ🅣🅃🆃"))
+ ("(u)" . ,(juvix-input-to-string-list "⒰Ⓤⓤ🅤🅄🆄"))
+ ("(v)" . ,(juvix-input-to-string-list "⒱Ⓥⓥ🅥🅅🆅"))
+ ("(w)" . ,(juvix-input-to-string-list "⒲Ⓦⓦ🅦🅆🆆"))
+ ("(x)" . ,(juvix-input-to-string-list "⒳Ⓧⓧ🅧🅇🆇"))
+ ("(y)" . ,(juvix-input-to-string-list "⒴Ⓨⓨ🅨🅈🆈"))
+ ("(z)" . ,(juvix-input-to-string-list "⒵Ⓩⓩ🅩🅉🆉"))
))
- "A list of translations specific to the minijuvix input method.
+ "A list of translations specific to the juvix input method.
Each element is a pair (KEY-SEQUENCE-STRING . LIST-OF-TRANSLATION-STRINGS).
All the translation strings are possible translations
of the given key sequence; if there is more than one you can choose
@@ -1154,30 +1154,30 @@ Note that if you customize this setting you will not
automatically benefit (or suffer) from modifications to its
default value when the library is updated. If you just want to
add some bindings it is probably a better idea to customize
-`minijuvix-input-user-translations'.
+`juvix-input-user-translations'.
These translation pairs are included after those in
-`minijuvix-input-user-translations', but before the ones inherited
-from other input methods (see `minijuvix-input-inherit').
+`juvix-input-user-translations', but before the ones inherited
+from other input methods (see `juvix-input-inherit').
If you change this setting manually (without using the
-customization buffer) you need to call `minijuvix-input-setup' in
+customization buffer) you need to call `juvix-input-setup' in
order for the change to take effect."
- :group 'minijuvix-input
- :set 'minijuvix-input-incorporate-changed-setting
+ :group 'juvix-input
+ :set 'juvix-input-incorporate-changed-setting
:initialize 'custom-initialize-default
:type '(repeat (cons (string :tag "Key sequence")
(repeat :tag "Translations" string))))
-(defcustom minijuvix-input-user-translations nil
- "Like `minijuvix-input-translations', but more suitable for user
+(defcustom juvix-input-user-translations nil
+ "Like `juvix-input-translations', but more suitable for user
customizations since by default it is empty.
These translation pairs are included first, before those in
-`minijuvix-input-translations' and the ones inherited from other input
+`juvix-input-translations' and the ones inherited from other input
methods."
- :group 'minijuvix-input
- :set 'minijuvix-input-incorporate-changed-setting
+ :group 'juvix-input
+ :set 'juvix-input-incorporate-changed-setting
:initialize 'custom-initialize-default
:type '(repeat (cons (string :tag "Key sequence")
(repeat :tag "Translations" string))))
@@ -1185,7 +1185,7 @@ methods."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Inspecting and modifying translation maps
-(defun minijuvix-input-get-translations (qp)
+(defun juvix-input-get-translations (qp)
"Return a list containing all translations from the Quail
package QP (except for those corresponding to ASCII).
Each pair in the list has the form (KEY-SEQUENCE . TRANSLATION)."
@@ -1197,75 +1197,75 @@ Each pair in the list has the form (KEY-SEQUENCE . TRANSLATION)."
(quail-build-decode-map (list (quail-map)) "" decode-map 0)
(cdr decode-map))))
-(defun minijuvix-input-show-translations (qp)
+(defun juvix-input-show-translations (qp)
"Display all translations used by the Quail package QP (a string).
\(Except for those corresponding to ASCII)."
(interactive (list (read-input-method-name
- "Quail input method (default %s): " "minijuvix")))
+ "Quail input method (default %s): " "juvix")))
(let ((buf (concat "*" qp " input method translations*")))
(with-output-to-temp-buffer buf
(with-current-buffer buf
(quail-insert-decode-map
- (cons 'decode-map (minijuvix-input-get-translations qp)))))))
+ (cons 'decode-map (juvix-input-get-translations qp)))))))
-(defun minijuvix-input-add-translations (trans)
- "Add the given translations TRANS to the minijuvix input method.
+(defun juvix-input-add-translations (trans)
+ "Add the given translations TRANS to the juvix input method.
TRANS is a list of pairs (KEY-SEQUENCE . TRANSLATION). The
translations are appended to the current translations."
(with-temp-buffer
- (dolist (tr (minijuvix-input-concat-map (eval minijuvix-input-tweak-all) trans))
- (quail-defrule (car tr) (cdr tr) "minijuvix" t))))
+ (dolist (tr (juvix-input-concat-map (eval juvix-input-tweak-all) trans))
+ (quail-defrule (car tr) (cdr tr) "juvix" t))))
-(defun minijuvix-input-inherit-package (qp &optional fun)
- "Let the minijuvix input method inherit the translations from the
+(defun juvix-input-inherit-package (qp &optional fun)
+ "Let the juvix input method inherit the translations from the
Quail package QP (except for those corresponding to ASCII).
The optional function FUN can be used to modify the translations.
It is given a pair (KEY-SEQUENCE . TRANSLATION) and should return
a list of such pairs."
- (let ((trans (minijuvix-input-get-translations qp)))
- (minijuvix-input-add-translations
- (if fun (minijuvix-input-concat-map fun trans)
+ (let ((trans (juvix-input-get-translations qp)))
+ (juvix-input-add-translations
+ (if fun (juvix-input-concat-map fun trans)
trans))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Setting up the input method
-(defun minijuvix-input-setup ()
- "Set up the minijuvix input method based on the customisable
+(defun juvix-input-setup ()
+ "Set up the juvix input method based on the customisable
variables and underlying input methods."
;; Create (or reset) the input method.
(with-temp-buffer
- (quail-define-package "minijuvix" "UTF-8" "∏" t ; guidance
- "minijuvix input method.
-The purpose of this input method is to edit MiniJuvix programs, but
+ (quail-define-package "juvix" "UTF-8" "∏" t ; guidance
+ "juvix input method.
+The purpose of this input method is to edit Juvix programs, but
since it is highly customisable it can be made useful for other
tasks as well."
nil nil nil nil nil nil t ; maximum-shortest
))
- (minijuvix-input-add-translations
+ (juvix-input-add-translations
(mapcar (lambda (tr) (cons (car tr) (vconcat (cdr tr))))
- (append minijuvix-input-user-translations
- minijuvix-input-translations)))
- (dolist (def minijuvix-input-inherit)
- (minijuvix-input-inherit-package (car def)
+ (append juvix-input-user-translations
+ juvix-input-translations)))
+ (dolist (def juvix-input-inherit)
+ (juvix-input-inherit-package (car def)
(eval (cdr def)))))
-(defun minijuvix-input-incorporate-changed-setting (sym val)
- "Update the minijuvix input method based on the customisable
+(defun juvix-input-incorporate-changed-setting (sym val)
+ "Update the juvix input method based on the customisable
variables and underlying input methods.
Suitable for use in the :set field of `defcustom'."
(set-default sym val)
- (minijuvix-input-setup))
+ (juvix-input-setup))
;; Set up the input method.
-(minijuvix-input-setup)
+(juvix-input-setup)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Administrative details
-(provide 'minijuvix-input)
-;;; minijuvix-input.el ends here
+(provide 'juvix-input)
+;;; juvix-input.el ends here
diff --git a/juvix-mode/juvix-mode.el b/juvix-mode/juvix-mode.el
new file mode 100644
index 000000000..f904dd341
--- /dev/null
+++ b/juvix-mode/juvix-mode.el
@@ -0,0 +1,66 @@
+(require 'juvix-customize)
+(require 'juvix-highlight)
+(require 'juvix-input)
+(require 'flycheck-juvix)
+
+(defgroup juvix nil
+ "Major mode for Juvix files."
+ :group 'languages)
+
+(defvar juvix-mode-map
+ (let ((map (make-sparse-keymap))
+ (menu-map (make-sparse-keymap "Juvix")))
+ (define-key map (kbd "C-c C-l") 'juvix-load)
+ (define-key map (kbd "M-.") 'juvix-goto-definition)
+ map)
+ "Keymap for Juvix mode.")
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.m?juvix\\'" . juvix-mode))
+
+(define-derived-mode juvix-mode prog-mode "Juvix-v0.2.1"
+
+ (font-lock-mode 0)
+ (when juvix-auto-input-method
+ (set-input-method "juvix")
+ )
+ (setq-local comment-start "--")
+
+ (add-hook
+ 'juvix-mode-hook
+ (lambda ()
+ (with-eval-after-load 'evil
+ (evil-define-key 'normal juvix-mode-map (kbd "SPC m l") 'juvix-load)
+ (evil-define-key 'normal juvix-mode-map (kbd "SPC m g") 'juvix-goto-definition)
+ (evil-define-key 'normal juvix-mode-map (kbd "g d") 'juvix-goto-definition)
+ (evil-normalize-keymaps))))
+ )
+
+(defun juvix-clear-annotations ()
+ "Remove all annotations from the current buffer."
+ (interactive)
+ (remove-list-of-text-properties (point-min) (point-max)
+ '(face))
+ )
+
+(defun juvix-load ()
+ "Load current buffer."
+ (interactive)
+ (save-buffer)
+ (juvix-clear-annotations)
+ (eval (read (shell-command-to-string (concat "juvix highlight " (if juvix-disable-embedded-stdlib "--no-stdlib " "") (buffer-file-name)))))
+ (save-buffer)
+ )
+
+(defun juvix-goto-definition ()
+ "Go to the definition of the symbol at point."
+ (interactive)
+ (let ((goto-info (get-text-property (point) 'juvix-goto)))
+ (if goto-info
+ (progn
+ (find-file (car goto-info))
+ (juvix-load)
+ (goto-char (cdr goto-info)))
+ (message "No goto information found at cursor"))))
+
+(provide 'juvix-mode)
diff --git a/juvix-stdlib b/juvix-stdlib
new file mode 160000
index 000000000..223a87038
--- /dev/null
+++ b/juvix-stdlib
@@ -0,0 +1 @@
+Subproject commit 223a87038bef8381423dda8824db18ea47b49c4e
diff --git a/minic-runtime/libc/minic-runtime.h b/minic-runtime/libc/minic-runtime.h
index dd1e92e1f..993d6b0f4 100644
--- a/minic-runtime/libc/minic-runtime.h
+++ b/minic-runtime/libc/minic-runtime.h
@@ -10,9 +10,9 @@
typedef __UINTPTR_TYPE__ uintptr_t;
-typedef struct minijuvix_function {
+typedef struct juvix_function {
uintptr_t fun;
-} minijuvix_function_t;
+} juvix_function_t;
char* intToStr(int i) {
int length = snprintf(NULL, 0, "%d", i);
diff --git a/minic-runtime/standalone/minic-runtime.h b/minic-runtime/standalone/minic-runtime.h
index 6b0fd8959..ed68a7ba3 100644
--- a/minic-runtime/standalone/minic-runtime.h
+++ b/minic-runtime/standalone/minic-runtime.h
@@ -10,9 +10,9 @@ typedef __UINT16_TYPE__ uint16_t;
typedef __UINT32_TYPE__ uint32_t;
typedef __UINTPTR_TYPE__ uintptr_t;
-typedef struct minijuvix_function {
+typedef struct juvix_function {
uintptr_t fun;
-} minijuvix_function_t;
+} juvix_function_t;
/**
* Allocator
diff --git a/minijuvix-mode/minijuvix-customize.el b/minijuvix-mode/minijuvix-customize.el
deleted file mode 100644
index c81e4019f..000000000
--- a/minijuvix-mode/minijuvix-customize.el
+++ /dev/null
@@ -1,12 +0,0 @@
-
-(defcustom minijuvix-auto-input-method t
- "Automatically set the input method in minijuvix files."
- :type 'boolean
- :group 'minijuvix)
-
-(defcustom minijuvix-disable-embedded-stdlib nil
- "Disable the embedded standard library."
- :type 'boolean
- :group 'minijuvix)
-
-(provide 'minijuvix-customize)
diff --git a/minijuvix-mode/minijuvix-mode.el b/minijuvix-mode/minijuvix-mode.el
deleted file mode 100644
index 51000a364..000000000
--- a/minijuvix-mode/minijuvix-mode.el
+++ /dev/null
@@ -1,66 +0,0 @@
-(require 'minijuvix-customize)
-(require 'minijuvix-highlight)
-(require 'minijuvix-input)
-(require 'flycheck-minijuvix)
-
-(defgroup minijuvix nil
- "Major mode for MiniJuvix files."
- :group 'languages)
-
-(defvar minijuvix-mode-map
- (let ((map (make-sparse-keymap))
- (menu-map (make-sparse-keymap "MiniJuvix")))
- (define-key map (kbd "C-c C-l") 'minijuvix-load)
- (define-key map (kbd "M-.") 'minijuvix-goto-definition)
- map)
- "Keymap for MiniJuvix mode.")
-
-;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.m?juvix\\'" . minijuvix-mode))
-
-(define-derived-mode minijuvix-mode prog-mode "MiniJuvix"
-
- (font-lock-mode 0)
- (when minijuvix-auto-input-method
- (set-input-method "minijuvix")
- )
- (setq-local comment-start "--")
-
- (add-hook
- 'minijuvix-mode-hook
- (lambda ()
- (with-eval-after-load 'evil
- (evil-define-key 'normal minijuvix-mode-map (kbd "SPC m l") 'minijuvix-load)
- (evil-define-key 'normal minijuvix-mode-map (kbd "SPC m g") 'minijuvix-goto-definition)
- (evil-define-key 'normal minijuvix-mode-map (kbd "g d") 'minijuvix-goto-definition)
- (evil-normalize-keymaps))))
- )
-
-(defun minijuvix-clear-annotations ()
- "Remove all annotations from the current buffer."
- (interactive)
- (remove-list-of-text-properties (point-min) (point-max)
- '(face))
- )
-
-(defun minijuvix-load ()
- "Load current buffer."
- (interactive)
- (save-buffer)
- (minijuvix-clear-annotations)
- (eval (read (shell-command-to-string (concat "minijuvix highlight " (if minijuvix-disable-embedded-stdlib "--no-stdlib " "") (buffer-file-name)))))
- (save-buffer)
- )
-
-(defun minijuvix-goto-definition ()
- "Go to the definition of the symbol at point."
- (interactive)
- (let ((goto-info (get-text-property (point) 'minijuvix-goto)))
- (if goto-info
- (progn
- (find-file (car goto-info))
- (minijuvix-load)
- (goto-char (cdr goto-info)))
- (message "No goto information found at cursor"))))
-
-(provide 'minijuvix-mode)
diff --git a/minijuvix-stdlib b/minijuvix-stdlib
deleted file mode 160000
index 23515f6c2..000000000
--- a/minijuvix-stdlib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 23515f6c295235bf51d828287db56e0b51c67582
diff --git a/package.yaml b/package.yaml
index 8ec4ec998..59da9df84 100644
--- a/package.yaml
+++ b/package.yaml
@@ -1,16 +1,16 @@
-name: minijuvix
-version: 0.2.0
+name: juvix
+version: 0.2.1
license: GPL-3.0-only
license-file: LICENSE
copyright: (c) 2022- Heliax AG.
maintainer: The PLT Team at Heliax AG
-author: [ Jonathan Prieto-Cubides , Jan Mas Rovira , Paul Cadman ]
+author: [ Jonathan Prieto-Cubides , Jan Mas Rovira , Paul Cadman , Github's contributors ]
tested-with: ghc == 9.2.3
-homepage: https://github.com/heliaxdev/minijuvix
-bug-reports: https://github.com/heliaxdev/minijuvix/issues
-description: The MiniJuvix compiler
+homepage: https://github.com/anoma/juvix
+bug-reports: https://github.com/anoma/juvix/issues
+description: The Juvix compiler
category: Compilers/Interpreters
-github: heliaxdev/minijuvix
+github: anoma/juvix
extra-source-files:
- README.org
@@ -51,7 +51,7 @@ dependencies:
- unordered-containers == 0.2.*
# the tasty dependencies are here to avoid having to recompile
-# minijuvix when running the tests.
+# juvix when running the tests.
- tasty
- tasty-hunit
- Diff == 0.4.*
@@ -96,20 +96,20 @@ library:
default-language: GHC2021
executables:
- minijuvix:
+ juvix:
main: Main.hs
source-dirs: app
dependencies:
- - minijuvix
+ - juvix
- optparse-applicative == 0.17.*
verbatim:
default-language: GHC2021
tests:
- minijuvix-test:
+ juvix-test:
main: Main.hs
source-dirs: test
dependencies:
- - minijuvix
+ - juvix
verbatim:
default-language: GHC2021
diff --git a/src/Juvix/Builtins.hs b/src/Juvix/Builtins.hs
new file mode 100644
index 000000000..be5856717
--- /dev/null
+++ b/src/Juvix/Builtins.hs
@@ -0,0 +1,10 @@
+module Juvix.Builtins
+ ( module Juvix.Builtins.Effect,
+ module Juvix.Builtins.Natural,
+ module Juvix.Builtins.IO,
+ )
+where
+
+import Juvix.Builtins.Effect
+import Juvix.Builtins.IO
+import Juvix.Builtins.Natural
diff --git a/src/MiniJuvix/Builtins/Base.hs b/src/Juvix/Builtins/Base.hs
similarity index 75%
rename from src/MiniJuvix/Builtins/Base.hs
rename to src/Juvix/Builtins/Base.hs
index 90bdbb0cf..fcc7fca8f 100644
--- a/src/MiniJuvix/Builtins/Base.hs
+++ b/src/Juvix/Builtins/Base.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Builtins.Base
- ( module MiniJuvix.Builtins.Base,
+module Juvix.Builtins.Base
+ ( module Juvix.Builtins.Base,
)
where
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
data BuiltinsEnum
= BuiltinsNatural
diff --git a/src/MiniJuvix/Builtins/Effect.hs b/src/Juvix/Builtins/Effect.hs
similarity index 79%
rename from src/MiniJuvix/Builtins/Effect.hs
rename to src/Juvix/Builtins/Effect.hs
index 17b159688..2ce6c7547 100644
--- a/src/MiniJuvix/Builtins/Effect.hs
+++ b/src/Juvix/Builtins/Effect.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Builtins.Effect
- ( module MiniJuvix.Builtins.Effect,
+module Juvix.Builtins.Effect
+ ( module Juvix.Builtins.Effect,
)
where
-import MiniJuvix.Builtins.Error
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language.Extra
+import Juvix.Builtins.Error
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language.Extra
data Builtins m a where
GetBuiltinName' :: Interval -> BuiltinPrim -> Builtins m Name
@@ -30,14 +30,14 @@ makeLenses ''BuiltinsState
iniState :: BuiltinsState
iniState = BuiltinsState mempty mempty
-re :: forall r a. Member (Error MiniJuvixError) r => Sem (Builtins ': r) a -> Sem (State BuiltinsState ': r) a
+re :: forall r a. Member (Error JuvixError) r => Sem (Builtins ': r) a -> Sem (State BuiltinsState ': r) a
re = reinterpret $ \case
GetBuiltinName' i b -> fromMaybeM notDefined (gets (^. builtinsTable . at b))
where
notDefined :: Sem (State BuiltinsState : r) x
notDefined =
throw $
- MiniJuvixError
+ JuvixError
NotDefined
{ _notDefinedBuiltin = b,
_notDefinedLoc = i
@@ -54,11 +54,11 @@ re = reinterpret $ \case
alreadyDefined :: Sem (State BuiltinsState : r) x
alreadyDefined =
throw $
- MiniJuvixError
+ JuvixError
AlreadyDefined
{ _alreadyDefinedBuiltin = b,
_alreadyDefinedLoc = getLoc n
}
-runBuiltins :: Member (Error MiniJuvixError) r => Sem (Builtins ': r) a -> Sem r a
+runBuiltins :: Member (Error JuvixError) r => Sem (Builtins ': r) a -> Sem r a
runBuiltins = evalState iniState . re
diff --git a/src/MiniJuvix/Builtins/Error.hs b/src/Juvix/Builtins/Error.hs
similarity index 85%
rename from src/MiniJuvix/Builtins/Error.hs
rename to src/Juvix/Builtins/Error.hs
index d6e997d61..e9e9b58ba 100644
--- a/src/MiniJuvix/Builtins/Error.hs
+++ b/src/Juvix/Builtins/Error.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Builtins.Error where
+module Juvix.Builtins.Error where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Builtins
-import MiniJuvix.Termination.Error.Pretty
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Builtins
+import Juvix.Termination.Error.Pretty
data AlreadyDefined = AlreadyDefined
{ _alreadyDefinedBuiltin :: BuiltinPrim,
diff --git a/src/MiniJuvix/Builtins/IO.hs b/src/Juvix/Builtins/IO.hs
similarity index 77%
rename from src/MiniJuvix/Builtins/IO.hs
rename to src/Juvix/Builtins/IO.hs
index 824d9e877..31585265d 100644
--- a/src/MiniJuvix/Builtins/IO.hs
+++ b/src/Juvix/Builtins/IO.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Builtins.IO where
+module Juvix.Builtins.IO where
-import MiniJuvix.Builtins.Effect
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language.Extra
+import Juvix.Builtins.Effect
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language.Extra
registerIO :: Member Builtins r => AxiomDef -> Sem r ()
registerIO d = do
diff --git a/src/MiniJuvix/Builtins/Natural.hs b/src/Juvix/Builtins/Natural.hs
similarity index 92%
rename from src/MiniJuvix/Builtins/Natural.hs
rename to src/Juvix/Builtins/Natural.hs
index 5b10c1f8f..894dc9814 100644
--- a/src/MiniJuvix/Builtins/Natural.hs
+++ b/src/Juvix/Builtins/Natural.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Builtins.Natural where
+module Juvix.Builtins.Natural where
import Data.HashSet qualified as HashSet
-import MiniJuvix.Builtins.Effect
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language.Extra
-import MiniJuvix.Syntax.Abstract.Pretty
+import Juvix.Builtins.Effect
+import Juvix.Internal.NameIdGen
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language.Extra
+import Juvix.Syntax.Abstract.Pretty
registerNaturalDef :: Member Builtins r => InductiveDef -> Sem r ()
registerNaturalDef d = do
diff --git a/src/MiniJuvix/Internal/NameIdGen.hs b/src/Juvix/Internal/NameIdGen.hs
similarity index 77%
rename from src/MiniJuvix/Internal/NameIdGen.hs
rename to src/Juvix/Internal/NameIdGen.hs
index 46a8d6dbe..ecc2678db 100644
--- a/src/MiniJuvix/Internal/NameIdGen.hs
+++ b/src/Juvix/Internal/NameIdGen.hs
@@ -1,12 +1,12 @@
-module MiniJuvix.Internal.NameIdGen
- ( module MiniJuvix.Internal.NameIdGen,
- module MiniJuvix.Syntax.NameId,
+module Juvix.Internal.NameIdGen
+ ( module Juvix.Internal.NameIdGen,
+ module Juvix.Syntax.NameId,
)
where
import Data.Stream (Stream (Cons))
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.NameId
+import Juvix.Prelude
+import Juvix.Syntax.NameId
allNameIds :: Stream NameId
allNameIds = NameId <$> ids
diff --git a/src/MiniJuvix/Internal/Strings.hs b/src/Juvix/Internal/Strings.hs
similarity index 96%
rename from src/MiniJuvix/Internal/Strings.hs
rename to src/Juvix/Internal/Strings.hs
index abf5c4110..05f68edaf 100644
--- a/src/MiniJuvix/Internal/Strings.hs
+++ b/src/Juvix/Internal/Strings.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Internal.Strings where
+module Juvix.Internal.Strings where
-import MiniJuvix.Prelude
+import Juvix.Prelude
module_ :: IsString s => s
module_ = "module"
@@ -230,5 +230,5 @@ minicRuntime = "minic-runtime.h"
putStrLn_ :: IsString s => s
putStrLn_ = "putStrLn"
-minijuvixFunctionT :: IsString s => s
-minijuvixFunctionT = "minijuvix_function_t"
+juvixFunctionT :: IsString s => s
+juvixFunctionT = "juvix_function_t"
diff --git a/src/Juvix/Pipeline.hs b/src/Juvix/Pipeline.hs
new file mode 100644
index 000000000..2083e8772
--- /dev/null
+++ b/src/Juvix/Pipeline.hs
@@ -0,0 +1,154 @@
+module Juvix.Pipeline
+ ( module Juvix.Pipeline,
+ module Juvix.Pipeline.EntryPoint,
+ )
+where
+
+import Juvix.Builtins
+import Juvix.Internal.NameIdGen
+import Juvix.Pipeline.EntryPoint
+import Juvix.Pipeline.Setup qualified as Setup
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.AbstractResult qualified as Abstract
+import Juvix.Syntax.Concrete.Parser qualified as Parser
+import Juvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
+import Juvix.Syntax.MicroJuvix.ArityChecker qualified as MicroJuvix
+import Juvix.Syntax.MicroJuvix.MicroJuvixResult qualified as MicroJuvix
+import Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult qualified as MicroJuvix
+import Juvix.Syntax.MicroJuvix.TypeChecker qualified as MicroJuvix
+import Juvix.Translation.AbstractToMicroJuvix qualified as MicroJuvix
+import Juvix.Translation.MicroJuvixToMonoJuvix qualified as MonoJuvix
+import Juvix.Translation.MonoJuvixToMiniC qualified as MiniC
+import Juvix.Translation.MonoJuvixToMiniHaskell qualified as MiniHaskell
+import Juvix.Translation.ScopedToAbstract qualified as Abstract
+
+type PipelineEff = '[Files, NameIdGen, Builtins, Error JuvixError, Embed IO]
+
+runIOEither :: Sem PipelineEff a -> IO (Either JuvixError a)
+runIOEither = runM . runError . runBuiltins . runNameIdGen . mapError (JuvixError @FilesError) . runFilesIO
+
+runIO :: Sem PipelineEff a -> IO a
+runIO = runIOEither >=> mayThrow
+ where
+ mayThrow :: Either JuvixError r -> IO r
+ mayThrow = \case
+ Left err -> printErrorAnsiSafe err >> exitFailure
+ Right r -> return r
+
+--------------------------------------------------------------------------------
+
+upToSetup ::
+ Member Files r =>
+ EntryPoint ->
+ Sem r EntryPoint
+upToSetup = Setup.entrySetup
+
+upToParsing ::
+ Members '[Files, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r Parser.ParserResult
+upToParsing = upToSetup >=> pipelineParser
+
+upToScoping ::
+ Members '[Files, NameIdGen, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r Scoper.ScoperResult
+upToScoping = upToParsing >=> pipelineScoper
+
+upToAbstract ::
+ Members '[Files, NameIdGen, Builtins, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r Abstract.AbstractResult
+upToAbstract = upToScoping >=> pipelineAbstract
+
+upToMicroJuvix ::
+ Members '[Files, NameIdGen, Builtins, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r MicroJuvix.MicroJuvixResult
+upToMicroJuvix = upToAbstract >=> pipelineMicroJuvix
+
+upToMicroJuvixArity ::
+ Members '[Files, NameIdGen, Builtins, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r MicroJuvix.MicroJuvixArityResult
+upToMicroJuvixArity = upToMicroJuvix >=> pipelineMicroJuvixArity
+
+upToMicroJuvixTyped ::
+ Members '[Files, NameIdGen, Builtins, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r MicroJuvix.MicroJuvixTypedResult
+upToMicroJuvixTyped = upToMicroJuvixArity >=> pipelineMicroJuvixTyped
+
+upToMonoJuvix ::
+ Members '[Files, NameIdGen, Builtins, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r MonoJuvix.MonoJuvixResult
+upToMonoJuvix = upToMicroJuvixTyped >=> pipelineMonoJuvix
+
+upToMiniHaskell ::
+ Members '[Files, NameIdGen, Builtins, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r MiniHaskell.MiniHaskellResult
+upToMiniHaskell = upToMonoJuvix >=> pipelineMiniHaskell
+
+upToMiniC ::
+ Members '[Files, NameIdGen, Builtins, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r MiniC.MiniCResult
+upToMiniC = upToMonoJuvix >=> pipelineMiniC
+
+--------------------------------------------------------------------------------
+
+pipelineParser ::
+ Members '[Files, Error JuvixError] r =>
+ EntryPoint ->
+ Sem r Parser.ParserResult
+pipelineParser = mapError (JuvixError @Parser.ParserError) . Parser.entryParser
+
+pipelineScoper ::
+ Members '[Files, NameIdGen, Error JuvixError] r =>
+ Parser.ParserResult ->
+ Sem r Scoper.ScoperResult
+pipelineScoper = mapError (JuvixError @Scoper.ScoperError) . Scoper.entryScoper
+
+pipelineAbstract ::
+ Members '[Error JuvixError, Builtins, NameIdGen] r =>
+ Scoper.ScoperResult ->
+ Sem r Abstract.AbstractResult
+pipelineAbstract = mapError (JuvixError @Scoper.ScoperError) . Abstract.entryAbstract
+
+pipelineMicroJuvix ::
+ Members '[Error JuvixError] r =>
+ Abstract.AbstractResult ->
+ Sem r MicroJuvix.MicroJuvixResult
+pipelineMicroJuvix = MicroJuvix.entryMicroJuvix
+
+pipelineMicroJuvixArity ::
+ Members '[Error JuvixError, NameIdGen] r =>
+ MicroJuvix.MicroJuvixResult ->
+ Sem r MicroJuvix.MicroJuvixArityResult
+pipelineMicroJuvixArity = mapError (JuvixError @MicroJuvix.ArityCheckerError) . MicroJuvix.entryMicroJuvixArity
+
+pipelineMicroJuvixTyped ::
+ Members '[Files, NameIdGen, Error JuvixError] r =>
+ MicroJuvix.MicroJuvixArityResult ->
+ Sem r MicroJuvix.MicroJuvixTypedResult
+pipelineMicroJuvixTyped =
+ mapError (JuvixError @MicroJuvix.TypeCheckerError) . MicroJuvix.entryMicroJuvixTyped
+
+pipelineMonoJuvix ::
+ Members '[Files, NameIdGen] r =>
+ MicroJuvix.MicroJuvixTypedResult ->
+ Sem r MonoJuvix.MonoJuvixResult
+pipelineMonoJuvix = MonoJuvix.entryMonoJuvix
+
+pipelineMiniHaskell ::
+ MonoJuvix.MonoJuvixResult ->
+ Sem r MiniHaskell.MiniHaskellResult
+pipelineMiniHaskell = MiniHaskell.entryMiniHaskell
+
+pipelineMiniC ::
+ Member Builtins r =>
+ MonoJuvix.MonoJuvixResult ->
+ Sem r MiniC.MiniCResult
+pipelineMiniC = MiniC.entryMiniC
diff --git a/src/MiniJuvix/Pipeline/EntryPoint.hs b/src/Juvix/Pipeline/EntryPoint.hs
similarity index 86%
rename from src/MiniJuvix/Pipeline/EntryPoint.hs
rename to src/Juvix/Pipeline/EntryPoint.hs
index fe26cf16e..a4213f6e4 100644
--- a/src/MiniJuvix/Pipeline/EntryPoint.hs
+++ b/src/Juvix/Pipeline/EntryPoint.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Pipeline.EntryPoint
- ( module MiniJuvix.Pipeline.EntryPoint,
+module Juvix.Pipeline.EntryPoint
+ ( module Juvix.Pipeline.EntryPoint,
)
where
-import MiniJuvix.Prelude
+import Juvix.Prelude
-- | The head of _entryModulePaths is assumed to be the Main module
data EntryPoint = EntryPoint
diff --git a/src/MiniJuvix/Pipeline/Setup.hs b/src/Juvix/Pipeline/Setup.hs
similarity index 71%
rename from src/MiniJuvix/Pipeline/Setup.hs
rename to src/Juvix/Pipeline/Setup.hs
index 3f3cf1029..9913c88d8 100644
--- a/src/MiniJuvix/Pipeline/Setup.hs
+++ b/src/Juvix/Pipeline/Setup.hs
@@ -1,15 +1,15 @@
-module MiniJuvix.Pipeline.Setup where
+module Juvix.Pipeline.Setup where
import Data.FileEmbed qualified as FE
-import MiniJuvix.Pipeline.EntryPoint
-import MiniJuvix.Prelude
+import Juvix.Pipeline.EntryPoint
+import Juvix.Prelude
stdlibDir :: [(FilePath, Text)]
stdlibDir =
let stdlibFiles :: [(FilePath, Text)]
- stdlibFiles = second decodeUtf8 <$> $(FE.makeRelativeToProject "minijuvix-stdlib" >>= FE.embedDir)
+ stdlibFiles = second decodeUtf8 <$> $(FE.makeRelativeToProject "juvix-stdlib" >>= FE.embedDir)
isMjuvixFile :: (FilePath, Text) -> Bool
- isMjuvixFile (fp, _) = takeExtension fp == ".mjuvix"
+ isMjuvixFile (fp, _) = takeExtension fp == ".juvix"
in filter isMjuvixFile stdlibFiles
entrySetup ::
diff --git a/src/Juvix/Prelude.hs b/src/Juvix/Prelude.hs
new file mode 100644
index 000000000..75505967f
--- /dev/null
+++ b/src/Juvix/Prelude.hs
@@ -0,0 +1,12 @@
+module Juvix.Prelude
+ ( module Juvix.Prelude.Base,
+ module Juvix.Prelude.Error,
+ module Juvix.Prelude.Files,
+ module Juvix.Prelude.Lens,
+ )
+where
+
+import Juvix.Prelude.Base
+import Juvix.Prelude.Error
+import Juvix.Prelude.Files
+import Juvix.Prelude.Lens
diff --git a/src/MiniJuvix/Prelude/Base.hs b/src/Juvix/Prelude/Base.hs
similarity index 99%
rename from src/MiniJuvix/Prelude/Base.hs
rename to src/Juvix/Prelude/Base.hs
index 0697be795..6058f15f8 100644
--- a/src/MiniJuvix/Prelude/Base.hs
+++ b/src/Juvix/Prelude/Base.hs
@@ -1,5 +1,5 @@
-module MiniJuvix.Prelude.Base
- ( module MiniJuvix.Prelude.Base,
+module Juvix.Prelude.Base
+ ( module Juvix.Prelude.Base,
module Control.Applicative,
module Control.Monad.Extra,
module Control.Monad.Fix,
diff --git a/src/Juvix/Prelude/Error.hs b/src/Juvix/Prelude/Error.hs
new file mode 100644
index 000000000..17086a7ea
--- /dev/null
+++ b/src/Juvix/Prelude/Error.hs
@@ -0,0 +1,21 @@
+-- | Generic class of errors generated by the juvix compiler. Inspired by
+-- Control.Exception
+module Juvix.Prelude.Error
+ ( module Juvix.Prelude.Error,
+ module Juvix.Syntax.Concrete.Loc,
+ module Juvix.Prelude.Error.GenericError,
+ )
+where
+
+import Juvix.Prelude.Base
+import Juvix.Prelude.Error.GenericError
+import Juvix.Syntax.Concrete.Loc
+
+data JuvixError
+ = forall a. (ToGenericError a, Typeable a) => JuvixError a
+
+instance ToGenericError JuvixError where
+ genericError (JuvixError e) = genericError e
+
+fromJuvixError :: Typeable a => JuvixError -> Maybe a
+fromJuvixError (JuvixError e) = cast e
diff --git a/src/MiniJuvix/Prelude/Error/GenericError.hs b/src/Juvix/Prelude/Error/GenericError.hs
similarity index 92%
rename from src/MiniJuvix/Prelude/Error/GenericError.hs
rename to src/Juvix/Prelude/Error/GenericError.hs
index 7993b0071..7ba3bee66 100644
--- a/src/MiniJuvix/Prelude/Error/GenericError.hs
+++ b/src/Juvix/Prelude/Error/GenericError.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Prelude.Error.GenericError
- ( module MiniJuvix.Prelude.Error.GenericError,
+module Juvix.Prelude.Error.GenericError
+ ( module Juvix.Prelude.Error.GenericError,
)
where
-import MiniJuvix.Prelude.Base
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Loc
+import Juvix.Prelude.Base
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Loc
import Prettyprinter.Render.Terminal qualified as Ansi
import Prettyprinter.Render.Text
import System.Console.ANSI qualified as Ansi
diff --git a/src/MiniJuvix/Prelude/Files.hs b/src/Juvix/Prelude/Files.hs
similarity index 92%
rename from src/MiniJuvix/Prelude/Files.hs
rename to src/Juvix/Prelude/Files.hs
index 7aebfb28c..9b9146614 100644
--- a/src/MiniJuvix/Prelude/Files.hs
+++ b/src/Juvix/Prelude/Files.hs
@@ -1,12 +1,12 @@
-module MiniJuvix.Prelude.Files
- ( module MiniJuvix.Prelude.Files,
- module MiniJuvix.Prelude.Files.Error,
+module Juvix.Prelude.Files
+ ( module Juvix.Prelude.Files,
+ module Juvix.Prelude.Files.Error,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude.Base
-import MiniJuvix.Prelude.Files.Error
+import Juvix.Prelude.Base
+import Juvix.Prelude.Files.Error
data Files m a where
ReadFile' :: FilePath -> Files m Text
diff --git a/src/MiniJuvix/Prelude/Files/Error.hs b/src/Juvix/Prelude/Files/Error.hs
similarity index 87%
rename from src/MiniJuvix/Prelude/Files/Error.hs
rename to src/Juvix/Prelude/Files/Error.hs
index 408c9ce20..449d88db6 100644
--- a/src/MiniJuvix/Prelude/Files/Error.hs
+++ b/src/Juvix/Prelude/Files/Error.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Prelude.Files.Error where
+module Juvix.Prelude.Files.Error where
-import MiniJuvix.Prelude.Base
-import MiniJuvix.Prelude.Error
-import MiniJuvix.Prelude.Pretty
+import Juvix.Prelude.Base
+import Juvix.Prelude.Error
+import Juvix.Prelude.Pretty
data FilesErrorCause = StdlibConflict
deriving stock (Show)
diff --git a/src/MiniJuvix/Prelude/Lens.hs b/src/Juvix/Prelude/Lens.hs
similarity index 62%
rename from src/MiniJuvix/Prelude/Lens.hs
rename to src/Juvix/Prelude/Lens.hs
index 0c6f12a28..9dcacb795 100644
--- a/src/MiniJuvix/Prelude/Lens.hs
+++ b/src/Juvix/Prelude/Lens.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Prelude.Lens where
+module Juvix.Prelude.Lens where
-import MiniJuvix.Prelude.Base
+import Juvix.Prelude.Base
-- | points to the first element of a non-empty list.
_head :: Lens' (NonEmpty a) a
diff --git a/src/MiniJuvix/Prelude/Pretty.hs b/src/Juvix/Prelude/Pretty.hs
similarity index 96%
rename from src/MiniJuvix/Prelude/Pretty.hs
rename to src/Juvix/Prelude/Pretty.hs
index c790b5fd3..0d066b4e9 100644
--- a/src/MiniJuvix/Prelude/Pretty.hs
+++ b/src/Juvix/Prelude/Pretty.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Prelude.Pretty
- ( module MiniJuvix.Prelude.Pretty,
+module Juvix.Prelude.Pretty
+ ( module Juvix.Prelude.Pretty,
module Prettyprinter,
module Prettyprinter.Render.Terminal,
)
where
-import MiniJuvix.Prelude.Base
+import Juvix.Prelude.Base
import Prettyprinter hiding (hsep, vsep)
import Prettyprinter qualified as PP
import Prettyprinter.Render.Terminal (AnsiStyle)
diff --git a/src/Juvix/Syntax/Abstract/AbstractResult.hs b/src/Juvix/Syntax/Abstract/AbstractResult.hs
new file mode 100644
index 000000000..80a8cbc5f
--- /dev/null
+++ b/src/Juvix/Syntax/Abstract/AbstractResult.hs
@@ -0,0 +1,23 @@
+module Juvix.Syntax.Abstract.AbstractResult
+ ( module Juvix.Syntax.Abstract.AbstractResult,
+ module Juvix.Syntax.Abstract.InfoTable,
+ )
+where
+
+import Juvix.Pipeline.EntryPoint qualified as E
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.InfoTable
+import Juvix.Syntax.Abstract.Language
+import Juvix.Syntax.Concrete.Parser.ParserResult
+import Juvix.Syntax.Concrete.Scoped.Scoper.ScoperResult
+
+data AbstractResult = AbstractResult
+ { _resultScoper :: ScoperResult,
+ _resultTable :: InfoTable,
+ _resultModules :: NonEmpty TopModule
+ }
+
+makeLenses ''AbstractResult
+
+abstractResultEntryPoint :: Lens' AbstractResult E.EntryPoint
+abstractResultEntryPoint = resultScoper . resultParserResult . resultEntry
diff --git a/src/MiniJuvix/Syntax/Abstract/InfoTable.hs b/src/Juvix/Syntax/Abstract/InfoTable.hs
similarity index 85%
rename from src/MiniJuvix/Syntax/Abstract/InfoTable.hs
rename to src/Juvix/Syntax/Abstract/InfoTable.hs
index e0c0cfd76..3c790eaf2 100644
--- a/src/MiniJuvix/Syntax/Abstract/InfoTable.hs
+++ b/src/Juvix/Syntax/Abstract/InfoTable.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.Abstract.InfoTable where
+module Juvix.Syntax.Abstract.InfoTable where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
newtype FunctionInfo = FunctionInfo
{ _functionInfoDef :: FunctionDef
diff --git a/src/MiniJuvix/Syntax/Abstract/InfoTableBuilder.hs b/src/Juvix/Syntax/Abstract/InfoTableBuilder.hs
similarity index 87%
rename from src/MiniJuvix/Syntax/Abstract/InfoTableBuilder.hs
rename to src/Juvix/Syntax/Abstract/InfoTableBuilder.hs
index 004fbed08..b81bac8d2 100644
--- a/src/MiniJuvix/Syntax/Abstract/InfoTableBuilder.hs
+++ b/src/Juvix/Syntax/Abstract/InfoTableBuilder.hs
@@ -1,13 +1,13 @@
-module MiniJuvix.Syntax.Abstract.InfoTableBuilder
- ( module MiniJuvix.Syntax.Abstract.InfoTableBuilder,
- module MiniJuvix.Syntax.Abstract.InfoTable,
+module Juvix.Syntax.Abstract.InfoTableBuilder
+ ( module Juvix.Syntax.Abstract.InfoTableBuilder,
+ module Juvix.Syntax.Abstract.InfoTable,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.InfoTable
-import MiniJuvix.Syntax.Abstract.Language
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.InfoTable
+import Juvix.Syntax.Abstract.Language
data InfoTableBuilder m a where
RegisterAxiom :: AxiomDef -> InfoTableBuilder m ()
diff --git a/src/MiniJuvix/Syntax/Abstract/Language.hs b/src/Juvix/Syntax/Abstract/Language.hs
similarity index 85%
rename from src/MiniJuvix/Syntax/Abstract/Language.hs
rename to src/Juvix/Syntax/Abstract/Language.hs
index b43c3211b..99e4cd86f 100644
--- a/src/MiniJuvix/Syntax/Abstract/Language.hs
+++ b/src/Juvix/Syntax/Abstract/Language.hs
@@ -1,25 +1,25 @@
-module MiniJuvix.Syntax.Abstract.Language
- ( module MiniJuvix.Syntax.Abstract.Language,
- module MiniJuvix.Syntax.Concrete.Language,
- module MiniJuvix.Syntax.Hole,
- module MiniJuvix.Syntax.Concrete.Builtins,
- module MiniJuvix.Syntax.Usage,
- module MiniJuvix.Syntax.Universe,
- module MiniJuvix.Syntax.Abstract.Name,
- module MiniJuvix.Syntax.Wildcard,
- module MiniJuvix.Syntax.IsImplicit,
+module Juvix.Syntax.Abstract.Language
+ ( module Juvix.Syntax.Abstract.Language,
+ module Juvix.Syntax.Concrete.Language,
+ module Juvix.Syntax.Hole,
+ module Juvix.Syntax.Concrete.Builtins,
+ module Juvix.Syntax.Usage,
+ module Juvix.Syntax.Universe,
+ module Juvix.Syntax.Abstract.Name,
+ module Juvix.Syntax.Wildcard,
+ module Juvix.Syntax.IsImplicit,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Name
-import MiniJuvix.Syntax.Concrete.Builtins
-import MiniJuvix.Syntax.Concrete.Language (BackendItem, ForeignBlock (..), LiteralLoc (..), symbolLoc)
-import MiniJuvix.Syntax.Hole
-import MiniJuvix.Syntax.IsImplicit
-import MiniJuvix.Syntax.Universe
-import MiniJuvix.Syntax.Usage
-import MiniJuvix.Syntax.Wildcard
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Name
+import Juvix.Syntax.Concrete.Builtins
+import Juvix.Syntax.Concrete.Language (BackendItem, ForeignBlock (..), LiteralLoc (..), symbolLoc)
+import Juvix.Syntax.Hole
+import Juvix.Syntax.IsImplicit
+import Juvix.Syntax.Universe
+import Juvix.Syntax.Usage
+import Juvix.Syntax.Wildcard
type LocalModule = Module
diff --git a/src/MiniJuvix/Syntax/Abstract/Language/Extra.hs b/src/Juvix/Syntax/Abstract/Language/Extra.hs
similarity index 97%
rename from src/MiniJuvix/Syntax/Abstract/Language/Extra.hs
rename to src/Juvix/Syntax/Abstract/Language/Extra.hs
index 50b2b5108..830c0871a 100644
--- a/src/MiniJuvix/Syntax/Abstract/Language/Extra.hs
+++ b/src/Juvix/Syntax/Abstract/Language/Extra.hs
@@ -1,14 +1,14 @@
-module MiniJuvix.Syntax.Abstract.Language.Extra
- ( module MiniJuvix.Syntax.Abstract.Language,
- module MiniJuvix.Syntax.Abstract.Language.Extra,
+module Juvix.Syntax.Abstract.Language.Extra
+ ( module Juvix.Syntax.Abstract.Language,
+ module Juvix.Syntax.Abstract.Language.Extra,
)
where
import Data.HashMap.Strict qualified as HashMap
import Data.HashSet qualified as HashSet
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language
+import Juvix.Internal.NameIdGen
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language
data ApplicationArg = ApplicationArg
{ _appArgIsImplicit :: IsImplicit,
diff --git a/src/MiniJuvix/Syntax/Abstract/Name.hs b/src/Juvix/Syntax/Abstract/Name.hs
similarity index 67%
rename from src/MiniJuvix/Syntax/Abstract/Name.hs
rename to src/Juvix/Syntax/Abstract/Name.hs
index bb3548b14..c6be72386 100644
--- a/src/MiniJuvix/Syntax/Abstract/Name.hs
+++ b/src/Juvix/Syntax/Abstract/Name.hs
@@ -1,16 +1,16 @@
-module MiniJuvix.Syntax.Abstract.Name
- ( module MiniJuvix.Syntax.Abstract.Name,
- module MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind,
- module MiniJuvix.Syntax.NameId,
- module MiniJuvix.Syntax.Fixity,
+module Juvix.Syntax.Abstract.Name
+ ( module Juvix.Syntax.Abstract.Name,
+ module Juvix.Syntax.Concrete.Scoped.Name.NameKind,
+ module Juvix.Syntax.NameId,
+ module Juvix.Syntax.Fixity,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-import MiniJuvix.Syntax.Fixity
-import MiniJuvix.Syntax.NameId
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.Fixity
+import Juvix.Syntax.NameId
data Name = Name
{ _nameText :: Text,
diff --git a/src/MiniJuvix/Syntax/Abstract/Pretty.hs b/src/Juvix/Syntax/Abstract/Pretty.hs
similarity index 65%
rename from src/MiniJuvix/Syntax/Abstract/Pretty.hs
rename to src/Juvix/Syntax/Abstract/Pretty.hs
index 511d15784..5d51cfc9d 100644
--- a/src/MiniJuvix/Syntax/Abstract/Pretty.hs
+++ b/src/Juvix/Syntax/Abstract/Pretty.hs
@@ -1,14 +1,14 @@
-module MiniJuvix.Syntax.Abstract.Pretty
- ( module MiniJuvix.Syntax.Abstract.Pretty,
- module MiniJuvix.Syntax.Abstract.Pretty.Options,
+module Juvix.Syntax.Abstract.Pretty
+ ( module Juvix.Syntax.Abstract.Pretty,
+ module Juvix.Syntax.Abstract.Pretty.Options,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Abstract.Pretty.Ansi qualified as Ansi
-import MiniJuvix.Syntax.Abstract.Pretty.Base
-import MiniJuvix.Syntax.Abstract.Pretty.Options
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Abstract.Pretty.Ansi qualified as Ansi
+import Juvix.Syntax.Abstract.Pretty.Base
+import Juvix.Syntax.Abstract.Pretty.Options
newtype PPOutput = PPOutput (Doc Ann)
diff --git a/src/MiniJuvix/Syntax/Abstract/Pretty/Ann.hs b/src/Juvix/Syntax/Abstract/Pretty/Ann.hs
similarity index 68%
rename from src/MiniJuvix/Syntax/Abstract/Pretty/Ann.hs
rename to src/Juvix/Syntax/Abstract/Pretty/Ann.hs
index 6a91df36e..e324b45a1 100644
--- a/src/MiniJuvix/Syntax/Abstract/Pretty/Ann.hs
+++ b/src/Juvix/Syntax/Abstract/Pretty/Ann.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.Abstract.Pretty.Ann where
+module Juvix.Syntax.Abstract.Pretty.Ann where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base qualified as S
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Pretty.Base qualified as S
data Ann
= AnnKind S.NameKind
diff --git a/src/MiniJuvix/Syntax/Abstract/Pretty/Ansi.hs b/src/Juvix/Syntax/Abstract/Pretty/Ansi.hs
similarity index 51%
rename from src/MiniJuvix/Syntax/Abstract/Pretty/Ansi.hs
rename to src/Juvix/Syntax/Abstract/Pretty/Ansi.hs
index 37edda4ec..3e4ffe219 100644
--- a/src/MiniJuvix/Syntax/Abstract/Pretty/Ansi.hs
+++ b/src/Juvix/Syntax/Abstract/Pretty/Ansi.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Syntax.Abstract.Pretty.Ansi
- ( module MiniJuvix.Syntax.Abstract.Pretty.Base,
- module MiniJuvix.Syntax.Abstract.Pretty.Ansi,
+module Juvix.Syntax.Abstract.Pretty.Ansi
+ ( module Juvix.Syntax.Abstract.Pretty.Base,
+ module Juvix.Syntax.Abstract.Pretty.Ansi,
)
where
-import MiniJuvix.Syntax.Abstract.Pretty.Base
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.Abstract.Pretty.Base
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
import Prettyprinter.Render.Terminal
stylize :: Ann -> AnsiStyle
diff --git a/src/MiniJuvix/Syntax/Abstract/Pretty/Base.hs b/src/Juvix/Syntax/Abstract/Pretty/Base.hs
similarity index 90%
rename from src/MiniJuvix/Syntax/Abstract/Pretty/Base.hs
rename to src/Juvix/Syntax/Abstract/Pretty/Base.hs
index 289effd62..06814d696 100644
--- a/src/MiniJuvix/Syntax/Abstract/Pretty/Base.hs
+++ b/src/Juvix/Syntax/Abstract/Pretty/Base.hs
@@ -1,16 +1,16 @@
-module MiniJuvix.Syntax.Abstract.Pretty.Base
- ( module MiniJuvix.Syntax.Abstract.Pretty.Base,
- module MiniJuvix.Syntax.Abstract.Pretty.Ann,
- module MiniJuvix.Syntax.Abstract.Pretty.Options,
+module Juvix.Syntax.Abstract.Pretty.Base
+ ( module Juvix.Syntax.Abstract.Pretty.Base,
+ module Juvix.Syntax.Abstract.Pretty.Ann,
+ module Juvix.Syntax.Abstract.Pretty.Options,
)
where
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language.Extra
-import MiniJuvix.Syntax.Abstract.Pretty.Ann
-import MiniJuvix.Syntax.Abstract.Pretty.Options
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base qualified as S
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language.Extra
+import Juvix.Syntax.Abstract.Pretty.Ann
+import Juvix.Syntax.Abstract.Pretty.Options
+import Juvix.Syntax.Concrete.Scoped.Pretty.Base qualified as S
import Prettyprinter
doc :: PrettyCode c => Options -> c -> Doc Ann
diff --git a/src/MiniJuvix/Syntax/Abstract/Pretty/Options.hs b/src/Juvix/Syntax/Abstract/Pretty/Options.hs
similarity index 81%
rename from src/MiniJuvix/Syntax/Abstract/Pretty/Options.hs
rename to src/Juvix/Syntax/Abstract/Pretty/Options.hs
index 57c4a23fb..57fb90baf 100644
--- a/src/MiniJuvix/Syntax/Abstract/Pretty/Options.hs
+++ b/src/Juvix/Syntax/Abstract/Pretty/Options.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Abstract.Pretty.Options where
+module Juvix.Syntax.Abstract.Pretty.Options where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Options = Options
{ _optShowNameIds :: Bool,
diff --git a/src/MiniJuvix/Syntax/Abstract/Quasiquoter.hs b/src/Juvix/Syntax/Abstract/Quasiquoter.hs
similarity index 65%
rename from src/MiniJuvix/Syntax/Abstract/Quasiquoter.hs
rename to src/Juvix/Syntax/Abstract/Quasiquoter.hs
index 2b484e9ac..e2df254be 100644
--- a/src/MiniJuvix/Syntax/Abstract/Quasiquoter.hs
+++ b/src/Juvix/Syntax/Abstract/Quasiquoter.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Abstract.Quasiquoter where
+module Juvix.Syntax.Abstract.Quasiquoter where
--- ( module MiniJuvix.Syntax.Abstract.Quasiquoter,
--- module MiniJuvix.Syntax.Abstract.Language,
+-- ( module Juvix.Syntax.Abstract.Quasiquoter,
+-- module Juvix.Syntax.Abstract.Language,
-- )
-- where
@@ -9,26 +9,26 @@ module MiniJuvix.Syntax.Abstract.Quasiquoter where
-- import Language.Haskell.TH (Exp, Q)
-- import Language.Haskell.TH.Quote (QuasiQuoter (..))
-- import Language.Haskell.TH.Syntax qualified as TH
--- import MiniJuvix.Internal.NameIdGen (runNameIdGen)
--- import MiniJuvix.Pipeline
--- import MiniJuvix.Prelude
--- import MiniJuvix.Syntax.Abstract.AbstractResult
--- import MiniJuvix.Syntax.Abstract.Language
+-- import Juvix.Internal.NameIdGen (runNameIdGen)
+-- import Juvix.Pipeline
+-- import Juvix.Prelude
+-- import Juvix.Syntax.Abstract.AbstractResult
+-- import Juvix.Syntax.Abstract.Language
--- minijuvixQ :: Lift a => (Module -> a) -> QuasiQuoter
--- minijuvixQ proj =
+-- juvixQ :: Lift a => (Module -> a) -> QuasiQuoter
+-- juvixQ proj =
-- QuasiQuoter
-- { quotePat = impossible,
-- quoteType = impossible,
-- quoteDec = impossible,
--- quoteExp = minijuvixModule proj "Tmp" . wrapTmpModule
+-- quoteExp = juvixModule proj "Tmp" . wrapTmpModule
-- }
-- where
-- wrapTmpModule :: String -> String
-- wrapTmpModule body = "module Tmp;" <> body <> "end;"
-- functionQ :: QuasiQuoter
--- functionQ = minijuvixQ (getInd . getStatement)
+-- functionQ = juvixQ (getInd . getStatement)
-- where
-- getInd :: Statement -> FunctionDef
-- getInd = \case
@@ -36,7 +36,7 @@ module MiniJuvix.Syntax.Abstract.Quasiquoter where
-- _ -> error "function definition not found"
-- inductiveQ :: QuasiQuoter
--- inductiveQ = minijuvixQ (getInd . getStatement)
+-- inductiveQ = juvixQ (getInd . getStatement)
-- where
-- getInd :: Statement -> InductiveDef
-- getInd = \case
@@ -44,7 +44,7 @@ module MiniJuvix.Syntax.Abstract.Quasiquoter where
-- _ -> error "inductive definition not found"
-- foreignQ :: QuasiQuoter
--- foreignQ = minijuvixQ (getForeign . getStatement)
+-- foreignQ = juvixQ (getForeign . getStatement)
-- where
-- getForeign :: Statement -> ForeignBlock
-- getForeign = \case
@@ -54,7 +54,7 @@ module MiniJuvix.Syntax.Abstract.Quasiquoter where
-- getStatement :: Module -> Statement
-- getStatement = (^?! moduleBody . moduleStatements . _nonEmpty . _Just . _head)
--- readAbsractModule :: String -> Text -> Either MiniJuvixError Module
+-- readAbsractModule :: String -> Text -> Either JuvixError Module
-- readAbsractModule name body =
-- fmap (head . (^. resultModules))
-- . run
@@ -73,9 +73,9 @@ module MiniJuvix.Syntax.Abstract.Quasiquoter where
-- _entryPointModulePaths = fakePath :| []
-- }
-- fakePath :: FilePath
--- fakePath = name <> ".mjuvix"
+-- fakePath = name <> ".juvix"
--- minijuvixModule :: Lift a => (Module -> a) -> String -> String -> Q Exp
--- minijuvixModule proj modName str = case readAbsractModule modName (pack str) of
+-- juvixModule :: Lift a => (Module -> a) -> String -> String -> Q Exp
+-- juvixModule proj modName str = case readAbsractModule modName (pack str) of
-- Left e -> fail ("Error: " <> unpack (renderText e))
-- Right r -> TH.lift (proj r)
diff --git a/src/MiniJuvix/Syntax/Backends.hs b/src/Juvix/Syntax/Backends.hs
similarity index 82%
rename from src/MiniJuvix/Syntax/Backends.hs
rename to src/Juvix/Syntax/Backends.hs
index 65a91d61d..d3e7b057e 100644
--- a/src/MiniJuvix/Syntax/Backends.hs
+++ b/src/Juvix/Syntax/Backends.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Backends where
+module Juvix.Syntax.Backends where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Backend = BackendGhc | BackendC
deriving stock (Show, Eq, Ord, Generic)
diff --git a/src/MiniJuvix/Syntax/Concrete/Base.hs b/src/Juvix/Syntax/Concrete/Base.hs
similarity index 86%
rename from src/MiniJuvix/Syntax/Concrete/Base.hs
rename to src/Juvix/Syntax/Concrete/Base.hs
index 7d9bc8dd9..bd6a620f2 100644
--- a/src/MiniJuvix/Syntax/Concrete/Base.hs
+++ b/src/Juvix/Syntax/Concrete/Base.hs
@@ -1,4 +1,4 @@
-module MiniJuvix.Syntax.Concrete.Base
+module Juvix.Syntax.Concrete.Base
( module Text.Megaparsec,
module Data.List.NonEmpty,
module Text.Megaparsec.Char,
@@ -12,6 +12,6 @@ import Control.Monad.Combinators.Expr
import Control.Monad.Combinators.NonEmpty (sepBy1, sepEndBy1, some)
import Control.Monad.Trans.Class (lift)
import Data.List.NonEmpty (NonEmpty)
-import MiniJuvix.Prelude hiding (some)
+import Juvix.Prelude hiding (some)
import Text.Megaparsec hiding (sepBy1, sepEndBy1, some)
import Text.Megaparsec.Char
diff --git a/src/MiniJuvix/Syntax/Concrete/Builtins.hs b/src/Juvix/Syntax/Concrete/Builtins.hs
similarity index 92%
rename from src/MiniJuvix/Syntax/Concrete/Builtins.hs
rename to src/Juvix/Syntax/Concrete/Builtins.hs
index 8dad41973..def5449a0 100644
--- a/src/MiniJuvix/Syntax/Concrete/Builtins.hs
+++ b/src/Juvix/Syntax/Concrete/Builtins.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.Concrete.Builtins where
+module Juvix.Syntax.Concrete.Builtins where
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
class IsBuiltin a where
toBuiltinPrim :: a -> BuiltinPrim
diff --git a/src/MiniJuvix/Syntax/Concrete/Language.hs b/src/Juvix/Syntax/Concrete/Language.hs
similarity index 94%
rename from src/MiniJuvix/Syntax/Concrete/Language.hs
rename to src/Juvix/Syntax/Concrete/Language.hs
index c43d924bc..8c8e345ff 100644
--- a/src/MiniJuvix/Syntax/Concrete/Language.hs
+++ b/src/Juvix/Syntax/Concrete/Language.hs
@@ -1,49 +1,49 @@
{-# LANGUAGE UndecidableInstances #-}
-module MiniJuvix.Syntax.Concrete.Language
- ( module MiniJuvix.Syntax.Concrete.Language,
- module MiniJuvix.Syntax.Concrete.Name,
- module MiniJuvix.Syntax.Concrete.Scoped.NameRef,
- module MiniJuvix.Syntax.Concrete.Builtins,
- module MiniJuvix.Syntax.Concrete.Loc,
- module MiniJuvix.Syntax.Hole,
- module MiniJuvix.Syntax.Concrete.LiteralLoc,
- module MiniJuvix.Syntax.IsImplicit,
- module MiniJuvix.Syntax.Backends,
- module MiniJuvix.Syntax.ForeignBlock,
- module MiniJuvix.Syntax.Concrete.Scoped.VisibilityAnn,
- module MiniJuvix.Syntax.Concrete.PublicAnn,
- module MiniJuvix.Syntax.Concrete.ModuleIsTop,
- module MiniJuvix.Syntax.Concrete.Language.Stage,
- module MiniJuvix.Syntax.Wildcard,
- module MiniJuvix.Syntax.Fixity,
- module MiniJuvix.Syntax.Usage,
- module MiniJuvix.Syntax.Universe,
+module Juvix.Syntax.Concrete.Language
+ ( module Juvix.Syntax.Concrete.Language,
+ module Juvix.Syntax.Concrete.Name,
+ module Juvix.Syntax.Concrete.Scoped.NameRef,
+ module Juvix.Syntax.Concrete.Builtins,
+ module Juvix.Syntax.Concrete.Loc,
+ module Juvix.Syntax.Hole,
+ module Juvix.Syntax.Concrete.LiteralLoc,
+ module Juvix.Syntax.IsImplicit,
+ module Juvix.Syntax.Backends,
+ module Juvix.Syntax.ForeignBlock,
+ module Juvix.Syntax.Concrete.Scoped.VisibilityAnn,
+ module Juvix.Syntax.Concrete.PublicAnn,
+ module Juvix.Syntax.Concrete.ModuleIsTop,
+ module Juvix.Syntax.Concrete.Language.Stage,
+ module Juvix.Syntax.Wildcard,
+ module Juvix.Syntax.Fixity,
+ module Juvix.Syntax.Usage,
+ module Juvix.Syntax.Universe,
)
where
import Data.Kind qualified as GHC
-import MiniJuvix.Prelude hiding (show)
-import MiniJuvix.Syntax.Backends
-import MiniJuvix.Syntax.Concrete.Builtins
-import MiniJuvix.Syntax.Concrete.Language.Stage
-import MiniJuvix.Syntax.Concrete.LiteralLoc
-import MiniJuvix.Syntax.Concrete.Loc
-import MiniJuvix.Syntax.Concrete.ModuleIsTop
-import MiniJuvix.Syntax.Concrete.Name
-import MiniJuvix.Syntax.Concrete.PublicAnn
-import MiniJuvix.Syntax.Concrete.Scoped.Name (unqualifiedSymbol)
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-import MiniJuvix.Syntax.Concrete.Scoped.NameRef
-import MiniJuvix.Syntax.Concrete.Scoped.VisibilityAnn
-import MiniJuvix.Syntax.Fixity
-import MiniJuvix.Syntax.ForeignBlock
-import MiniJuvix.Syntax.Hole
-import MiniJuvix.Syntax.IsImplicit
-import MiniJuvix.Syntax.Universe
-import MiniJuvix.Syntax.Usage
-import MiniJuvix.Syntax.Wildcard
+import Juvix.Prelude hiding (show)
+import Juvix.Syntax.Backends
+import Juvix.Syntax.Concrete.Builtins
+import Juvix.Syntax.Concrete.Language.Stage
+import Juvix.Syntax.Concrete.LiteralLoc
+import Juvix.Syntax.Concrete.Loc
+import Juvix.Syntax.Concrete.ModuleIsTop
+import Juvix.Syntax.Concrete.Name
+import Juvix.Syntax.Concrete.PublicAnn
+import Juvix.Syntax.Concrete.Scoped.Name (unqualifiedSymbol)
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.Concrete.Scoped.NameRef
+import Juvix.Syntax.Concrete.Scoped.VisibilityAnn
+import Juvix.Syntax.Fixity
+import Juvix.Syntax.ForeignBlock
+import Juvix.Syntax.Hole
+import Juvix.Syntax.IsImplicit
+import Juvix.Syntax.Universe
+import Juvix.Syntax.Usage
+import Juvix.Syntax.Wildcard
import Prelude (show)
--------------------------------------------------------------------------------
diff --git a/src/MiniJuvix/Syntax/Concrete/Language/Stage.hs b/src/Juvix/Syntax/Concrete/Language/Stage.hs
similarity index 53%
rename from src/MiniJuvix/Syntax/Concrete/Language/Stage.hs
rename to src/Juvix/Syntax/Concrete/Language/Stage.hs
index d82217101..7724e8f57 100644
--- a/src/MiniJuvix/Syntax/Concrete/Language/Stage.hs
+++ b/src/Juvix/Syntax/Concrete/Language/Stage.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Concrete.Language.Stage where
+module Juvix.Syntax.Concrete.Language.Stage where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Stage
= Parsed
diff --git a/src/MiniJuvix/Syntax/Concrete/Lexer.hs b/src/Juvix/Syntax/Concrete/Lexer.hs
similarity index 96%
rename from src/MiniJuvix/Syntax/Concrete/Lexer.hs
rename to src/Juvix/Syntax/Concrete/Lexer.hs
index 52aa66936..9ee4c24fd 100644
--- a/src/MiniJuvix/Syntax/Concrete/Lexer.hs
+++ b/src/Juvix/Syntax/Concrete/Lexer.hs
@@ -1,12 +1,12 @@
-module MiniJuvix.Syntax.Concrete.Lexer where
+module Juvix.Syntax.Concrete.Lexer where
import Data.Text qualified as Text
import GHC.Unicode
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Base hiding (Pos, space)
-import MiniJuvix.Syntax.Concrete.Base qualified as P
-import MiniJuvix.Syntax.Concrete.Parser.InfoTableBuilder
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Base hiding (Pos, space)
+import Juvix.Syntax.Concrete.Base qualified as P
+import Juvix.Syntax.Concrete.Parser.InfoTableBuilder
import Text.Megaparsec.Char.Lexer qualified as L
type OperatorSym = Text
diff --git a/src/MiniJuvix/Syntax/Concrete/Literal.hs b/src/Juvix/Syntax/Concrete/Literal.hs
similarity index 81%
rename from src/MiniJuvix/Syntax/Concrete/Literal.hs
rename to src/Juvix/Syntax/Concrete/Literal.hs
index 7b14de830..9e5f56f69 100644
--- a/src/MiniJuvix/Syntax/Concrete/Literal.hs
+++ b/src/Juvix/Syntax/Concrete/Literal.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Concrete.Literal where
+module Juvix.Syntax.Concrete.Literal where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Fixity
+import Juvix.Prelude
+import Juvix.Syntax.Fixity
import Prettyprinter
data Literal
diff --git a/src/MiniJuvix/Syntax/Concrete/LiteralLoc.hs b/src/Juvix/Syntax/Concrete/LiteralLoc.hs
similarity index 67%
rename from src/MiniJuvix/Syntax/Concrete/LiteralLoc.hs
rename to src/Juvix/Syntax/Concrete/LiteralLoc.hs
index 8ef67546d..413b47c68 100644
--- a/src/MiniJuvix/Syntax/Concrete/LiteralLoc.hs
+++ b/src/Juvix/Syntax/Concrete/LiteralLoc.hs
@@ -1,13 +1,13 @@
-module MiniJuvix.Syntax.Concrete.LiteralLoc
- ( module MiniJuvix.Syntax.Concrete.LiteralLoc,
- module MiniJuvix.Syntax.Concrete.Literal,
+module Juvix.Syntax.Concrete.LiteralLoc
+ ( module Juvix.Syntax.Concrete.LiteralLoc,
+ module Juvix.Syntax.Concrete.Literal,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Literal
-import MiniJuvix.Syntax.Fixity
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Literal
+import Juvix.Syntax.Fixity
data LiteralLoc = LiteralLoc
{ _literalLocLiteral :: Literal,
diff --git a/src/MiniJuvix/Syntax/Concrete/Loc.hs b/src/Juvix/Syntax/Concrete/Loc.hs
similarity index 97%
rename from src/MiniJuvix/Syntax/Concrete/Loc.hs
rename to src/Juvix/Syntax/Concrete/Loc.hs
index 1682fc846..10fb75ac8 100644
--- a/src/MiniJuvix/Syntax/Concrete/Loc.hs
+++ b/src/Juvix/Syntax/Concrete/Loc.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Concrete.Loc where
+module Juvix.Syntax.Concrete.Loc where
-import MiniJuvix.Prelude.Base
+import Juvix.Prelude.Base
import Prettyprinter
import Text.Megaparsec qualified as M
diff --git a/src/MiniJuvix/Syntax/Concrete/ModuleIsTop.hs b/src/Juvix/Syntax/Concrete/ModuleIsTop.hs
similarity index 59%
rename from src/MiniJuvix/Syntax/Concrete/ModuleIsTop.hs
rename to src/Juvix/Syntax/Concrete/ModuleIsTop.hs
index 349ddd1ae..9613fc6c9 100644
--- a/src/MiniJuvix/Syntax/Concrete/ModuleIsTop.hs
+++ b/src/Juvix/Syntax/Concrete/ModuleIsTop.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Concrete.ModuleIsTop where
+module Juvix.Syntax.Concrete.ModuleIsTop where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data ModuleIsTop = ModuleTop | ModuleLocal
deriving stock (Eq, Ord, Show)
diff --git a/src/MiniJuvix/Syntax/Concrete/Name.hs b/src/Juvix/Syntax/Concrete/Name.hs
similarity index 94%
rename from src/MiniJuvix/Syntax/Concrete/Name.hs
rename to src/Juvix/Syntax/Concrete/Name.hs
index bc94d56b1..30c54842c 100644
--- a/src/MiniJuvix/Syntax/Concrete/Name.hs
+++ b/src/Juvix/Syntax/Concrete/Name.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Concrete.Name where
+module Juvix.Syntax.Concrete.Name where
import Data.List.NonEmpty.Extra qualified as NonEmpty
-import MiniJuvix.Prelude
+import Juvix.Prelude
import Prettyprinter
data Symbol = Symbol
@@ -78,7 +78,7 @@ instance HasLoc TopModulePath where
(x : _) -> getLoc x <> getLoc _modulePathName
topModulePathToFilePath :: FilePath -> TopModulePath -> FilePath
-topModulePathToFilePath = topModulePathToFilePath' (Just ".mjuvix")
+topModulePathToFilePath = topModulePathToFilePath' (Just ".juvix")
topModulePathToFilePath' ::
Maybe String -> FilePath -> TopModulePath -> FilePath
diff --git a/src/MiniJuvix/Syntax/Concrete/Parser.hs b/src/Juvix/Syntax/Concrete/Parser.hs
similarity index 95%
rename from src/MiniJuvix/Syntax/Concrete/Parser.hs
rename to src/Juvix/Syntax/Concrete/Parser.hs
index f655365a6..1a9ca9f6e 100644
--- a/src/MiniJuvix/Syntax/Concrete/Parser.hs
+++ b/src/Juvix/Syntax/Concrete/Parser.hs
@@ -1,23 +1,23 @@
-module MiniJuvix.Syntax.Concrete.Parser
- ( module MiniJuvix.Syntax.Concrete.Parser,
- module MiniJuvix.Syntax.Concrete.Parser.ParserResult,
- module MiniJuvix.Syntax.Concrete.Parser.InfoTable,
- module MiniJuvix.Syntax.Concrete.Parser.Error,
+module Juvix.Syntax.Concrete.Parser
+ ( module Juvix.Syntax.Concrete.Parser,
+ module Juvix.Syntax.Concrete.Parser.ParserResult,
+ module Juvix.Syntax.Concrete.Parser.InfoTable,
+ module Juvix.Syntax.Concrete.Parser.Error,
)
where
import Data.List.NonEmpty.Extra qualified as NonEmpty
import Data.Singletons
-import MiniJuvix.Pipeline.EntryPoint
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty (Pretty, prettyText)
-import MiniJuvix.Syntax.Concrete.Base qualified as P
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Lexer hiding (symbol)
-import MiniJuvix.Syntax.Concrete.Parser.Error
-import MiniJuvix.Syntax.Concrete.Parser.InfoTable
-import MiniJuvix.Syntax.Concrete.Parser.InfoTableBuilder
-import MiniJuvix.Syntax.Concrete.Parser.ParserResult
+import Juvix.Pipeline.EntryPoint
+import Juvix.Prelude
+import Juvix.Prelude.Pretty (Pretty, prettyText)
+import Juvix.Syntax.Concrete.Base qualified as P
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Lexer hiding (symbol)
+import Juvix.Syntax.Concrete.Parser.Error
+import Juvix.Syntax.Concrete.Parser.InfoTable
+import Juvix.Syntax.Concrete.Parser.InfoTableBuilder
+import Juvix.Syntax.Concrete.Parser.ParserResult
--------------------------------------------------------------------------------
-- Running the parser
@@ -239,7 +239,7 @@ expressionAtom =
<|> (AtomFunArrow <$ kwRightArrow)
<|> (AtomHole <$> hole)
<|> parens (AtomParens <$> parseExpressionAtoms)
- <|> (braces (AtomBraces <$> withLoc parseExpressionAtoms))
+ <|> braces (AtomBraces <$> withLoc parseExpressionAtoms)
parseExpressionAtoms ::
Members '[Reader ParserParams, InfoTableBuilder] r =>
diff --git a/src/Juvix/Syntax/Concrete/Parser/Base.hs b/src/Juvix/Syntax/Concrete/Parser/Base.hs
new file mode 100644
index 000000000..d9adece18
--- /dev/null
+++ b/src/Juvix/Syntax/Concrete/Parser/Base.hs
@@ -0,0 +1 @@
+module Juvix.Syntax.Concrete.Parser.Base where
diff --git a/src/MiniJuvix/Syntax/Concrete/Parser/Error.hs b/src/Juvix/Syntax/Concrete/Parser/Error.hs
similarity index 84%
rename from src/MiniJuvix/Syntax/Concrete/Parser/Error.hs
rename to src/Juvix/Syntax/Concrete/Parser/Error.hs
index a5e6e8b5d..014f284c1 100644
--- a/src/MiniJuvix/Syntax/Concrete/Parser/Error.hs
+++ b/src/Juvix/Syntax/Concrete/Parser/Error.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.Concrete.Parser.Error where
+module Juvix.Syntax.Concrete.Parser.Error where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Base (errorOffset)
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Base (errorOffset)
import Text.Megaparsec qualified as M
newtype ParserError = ParserError
diff --git a/src/MiniJuvix/Syntax/Concrete/Parser/InfoTable.hs b/src/Juvix/Syntax/Concrete/Parser/InfoTable.hs
similarity index 55%
rename from src/MiniJuvix/Syntax/Concrete/Parser/InfoTable.hs
rename to src/Juvix/Syntax/Concrete/Parser/InfoTable.hs
index 8b39a2f1a..2f4aaa774 100644
--- a/src/MiniJuvix/Syntax/Concrete/Parser/InfoTable.hs
+++ b/src/Juvix/Syntax/Concrete/Parser/InfoTable.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Concrete.Parser.InfoTable where
+module Juvix.Syntax.Concrete.Parser.InfoTable where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Parser.ParsedItem
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Parser.ParsedItem
newtype InfoTable = InfoTable
{ _infoParsedItems :: [ParsedItem]
diff --git a/src/MiniJuvix/Syntax/Concrete/Parser/InfoTableBuilder.hs b/src/Juvix/Syntax/Concrete/Parser/InfoTableBuilder.hs
similarity index 86%
rename from src/MiniJuvix/Syntax/Concrete/Parser/InfoTableBuilder.hs
rename to src/Juvix/Syntax/Concrete/Parser/InfoTableBuilder.hs
index 4dadd1a54..ff3f221ee 100644
--- a/src/MiniJuvix/Syntax/Concrete/Parser/InfoTableBuilder.hs
+++ b/src/Juvix/Syntax/Concrete/Parser/InfoTableBuilder.hs
@@ -1,4 +1,4 @@
-module MiniJuvix.Syntax.Concrete.Parser.InfoTableBuilder
+module Juvix.Syntax.Concrete.Parser.InfoTableBuilder
( InfoTableBuilder,
registerLiteral,
registerKeyword,
@@ -6,14 +6,14 @@ module MiniJuvix.Syntax.Concrete.Parser.InfoTableBuilder
mergeTable,
runInfoTableBuilder,
ignoreInfoTableBuilder,
- module MiniJuvix.Syntax.Concrete.Parser.InfoTable,
+ module Juvix.Syntax.Concrete.Parser.InfoTable,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.LiteralLoc
-import MiniJuvix.Syntax.Concrete.Parser.InfoTable
-import MiniJuvix.Syntax.Concrete.Parser.ParsedItem
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.LiteralLoc
+import Juvix.Syntax.Concrete.Parser.InfoTable
+import Juvix.Syntax.Concrete.Parser.ParsedItem
data InfoTableBuilder m a where
RegisterItem :: ParsedItem -> InfoTableBuilder m ()
diff --git a/src/MiniJuvix/Syntax/Concrete/Parser/ParsedItem.hs b/src/Juvix/Syntax/Concrete/Parser/ParsedItem.hs
similarity index 83%
rename from src/MiniJuvix/Syntax/Concrete/Parser/ParsedItem.hs
rename to src/Juvix/Syntax/Concrete/Parser/ParsedItem.hs
index 67845e69e..898d43c99 100644
--- a/src/MiniJuvix/Syntax/Concrete/Parser/ParsedItem.hs
+++ b/src/Juvix/Syntax/Concrete/Parser/ParsedItem.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Concrete.Parser.ParsedItem where
+module Juvix.Syntax.Concrete.Parser.ParsedItem where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data ParsedItem = ParsedItem
{ _parsedLoc :: Interval,
diff --git a/src/MiniJuvix/Syntax/Concrete/Parser/ParserResult.hs b/src/Juvix/Syntax/Concrete/Parser/ParserResult.hs
similarity index 50%
rename from src/MiniJuvix/Syntax/Concrete/Parser/ParserResult.hs
rename to src/Juvix/Syntax/Concrete/Parser/ParserResult.hs
index 663c9bb8a..252269805 100644
--- a/src/MiniJuvix/Syntax/Concrete/Parser/ParserResult.hs
+++ b/src/Juvix/Syntax/Concrete/Parser/ParserResult.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Syntax.Concrete.Parser.ParserResult where
+module Juvix.Syntax.Concrete.Parser.ParserResult where
-import MiniJuvix.Pipeline.EntryPoint
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Parser.InfoTable
+import Juvix.Pipeline.EntryPoint
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Parser.InfoTable
data ParserResult = ParserResult
{ _resultEntry :: EntryPoint,
diff --git a/src/MiniJuvix/Syntax/Concrete/PublicAnn.hs b/src/Juvix/Syntax/Concrete/PublicAnn.hs
similarity index 71%
rename from src/MiniJuvix/Syntax/Concrete/PublicAnn.hs
rename to src/Juvix/Syntax/Concrete/PublicAnn.hs
index e36252fc9..69785c484 100644
--- a/src/MiniJuvix/Syntax/Concrete/PublicAnn.hs
+++ b/src/Juvix/Syntax/Concrete/PublicAnn.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Concrete.PublicAnn where
+module Juvix.Syntax.Concrete.PublicAnn where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data PublicAnn
= -- | Explicit public annotation
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Error.hs b/src/Juvix/Syntax/Concrete/Scoped/Error.hs
similarity index 85%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Error.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Error.hs
index 64cde6f5f..5da8ab007 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Error.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Error.hs
@@ -1,13 +1,13 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Error
- ( module MiniJuvix.Syntax.Concrete.Scoped.Error.Types,
- module MiniJuvix.Syntax.Concrete.Scoped.Error,
- module MiniJuvix.Syntax.Concrete.Scoped.Error.Pretty,
+module Juvix.Syntax.Concrete.Scoped.Error
+ ( module Juvix.Syntax.Concrete.Scoped.Error.Types,
+ module Juvix.Syntax.Concrete.Scoped.Error,
+ module Juvix.Syntax.Concrete.Scoped.Error.Pretty,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Scoped.Error.Pretty
-import MiniJuvix.Syntax.Concrete.Scoped.Error.Types
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Scoped.Error.Pretty
+import Juvix.Syntax.Concrete.Scoped.Error.Types
data ScoperError
= ErrParser MegaParsecError
diff --git a/src/Juvix/Syntax/Concrete/Scoped/Error/Ann.hs b/src/Juvix/Syntax/Concrete/Scoped/Error/Ann.hs
new file mode 100644
index 000000000..3ad4e1a4f
--- /dev/null
+++ b/src/Juvix/Syntax/Concrete/Scoped/Error/Ann.hs
@@ -0,0 +1,7 @@
+module Juvix.Syntax.Concrete.Scoped.Error.Ann where
+
+import Juvix.Syntax.Concrete.Scoped.Pretty.Base qualified as P
+
+data Eann
+ = Highlight
+ | ScopedAnn P.Ann
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Pretty.hs b/src/Juvix/Syntax/Concrete/Scoped/Error/Pretty.hs
similarity index 68%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Error/Pretty.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Error/Pretty.hs
index 4a7f7d6ae..979e5c4ab 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Pretty.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Error/Pretty.hs
@@ -1,14 +1,14 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Error.Pretty
- ( module MiniJuvix.Syntax.Concrete.Scoped.Error.Pretty,
- module MiniJuvix.Syntax.Concrete.Scoped.Error.Ann,
+module Juvix.Syntax.Concrete.Scoped.Error.Pretty
+ ( module Juvix.Syntax.Concrete.Scoped.Error.Pretty,
+ module Juvix.Syntax.Concrete.Scoped.Error.Ann,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Scoped.Error.Ann
-import MiniJuvix.Syntax.Concrete.Scoped.Error.Pretty.Ansi qualified as Ansi
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base qualified as P
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Scoped.Error.Ann
+import Juvix.Syntax.Concrete.Scoped.Error.Pretty.Ansi qualified as Ansi
+import Juvix.Syntax.Concrete.Scoped.Pretty.Base qualified as P
import Text.EditDistance
newtype PPOutput = PPOutput (Doc Eann)
diff --git a/src/Juvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs b/src/Juvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs
new file mode 100644
index 000000000..8df693604
--- /dev/null
+++ b/src/Juvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs
@@ -0,0 +1,10 @@
+module Juvix.Syntax.Concrete.Scoped.Error.Pretty.Ansi where
+
+import Juvix.Syntax.Concrete.Scoped.Error.Ann
+import Juvix.Syntax.Concrete.Scoped.Pretty.Ansi qualified as S
+import Prettyprinter.Render.Terminal
+
+stylize :: Eann -> AnsiStyle
+stylize a = case a of
+ Highlight -> colorDull Red
+ ScopedAnn s -> S.stylize s
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Types.hs b/src/Juvix/Syntax/Concrete/Scoped/Error/Types.hs
similarity index 96%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Error/Types.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Error/Types.hs
index adc817bda..5ca9392a7 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Types.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Error/Types.hs
@@ -1,22 +1,22 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Error.Types
- ( module MiniJuvix.Syntax.Concrete.Language,
- module MiniJuvix.Syntax.Concrete.Scoped.Error.Types,
- module MiniJuvix.Syntax.Concrete.Scoped.Error.Ann,
+module Juvix.Syntax.Concrete.Scoped.Error.Types
+ ( module Juvix.Syntax.Concrete.Language,
+ module Juvix.Syntax.Concrete.Scoped.Error.Types,
+ module Juvix.Syntax.Concrete.Scoped.Error.Ann,
)
where
import Data.HashMap.Strict qualified as HashMap
import Data.HashSet qualified as HashSet
import Data.List.NonEmpty.Extra qualified as NonEmpty
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Language qualified as L
-import MiniJuvix.Syntax.Concrete.Parser.Error qualified as Parser
-import MiniJuvix.Syntax.Concrete.Scoped.Error.Ann
-import MiniJuvix.Syntax.Concrete.Scoped.Error.Pretty
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Scope
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Language qualified as L
+import Juvix.Syntax.Concrete.Parser.Error qualified as Parser
+import Juvix.Syntax.Concrete.Scoped.Error.Ann
+import Juvix.Syntax.Concrete.Scoped.Error.Pretty
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Scope
data MultipleDeclarations = MultipleDeclarations
{ _multipleDeclEntry :: SymbolEntry,
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Highlight.hs b/src/Juvix/Syntax/Concrete/Scoped/Highlight.hs
similarity index 90%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Highlight.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Highlight.hs
index a2cb45881..47f85d9dc 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Highlight.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Highlight.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Highlight where
+module Juvix.Syntax.Concrete.Scoped.Highlight where
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Parser.ParsedItem
-import MiniJuvix.Syntax.Concrete.Scoped.Name
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Parser.ParsedItem
+import Juvix.Syntax.Concrete.Scoped.Name
import Prettyprinter
import Prettyprinter.Render.Text
@@ -92,7 +92,7 @@ nameKindFace = \case
-- | Example instruction:
-- (add-text-properties 20 28
--- '(face minijuvix-highlight-constructor-face))
+-- '(face juvix-highlight-constructor-face))
instr :: Face -> Interval -> SExp
instr f i =
App [Symbol "add-text-properties", start, end, face]
@@ -114,7 +114,7 @@ instr f i =
FaceError -> Str.error
faceSymbol :: Text -> SExp
-faceSymbol faceSymbolStr = Symbol ("minijuvix-highlight-" <> faceSymbolStr <> "-face")
+faceSymbol faceSymbolStr = Symbol ("juvix-highlight-" <> faceSymbolStr <> "-face")
goParsedItem :: ParsedItem -> SExp
goParsedItem i = instr face (getLoc i)
@@ -137,7 +137,7 @@ gotoDefName (AName n) =
i = getLoc n
targetPos = succ (n ^. nameDefined . intervalStart . locOffset . unPos)
targetFile = n ^. nameDefined . intervalFile
- goto = Quote (App [Symbol "minijuvix-goto", gotoPair])
+ goto = Quote (App [Symbol "juvix-goto", gotoPair])
pos l = Int (succ (l ^. locOffset . unPos))
start = pos (i ^. intervalStart)
end = pos (i ^. intervalEnd)
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/InfoTable.hs b/src/Juvix/Syntax/Concrete/Scoped/InfoTable.hs
similarity index 88%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/InfoTable.hs
rename to src/Juvix/Syntax/Concrete/Scoped/InfoTable.hs
index 3999ad4f5..8c979a658 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/InfoTable.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/InfoTable.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.Concrete.Scoped.InfoTable where
+module Juvix.Syntax.Concrete.Scoped.InfoTable where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
newtype FunctionInfo = FunctionInfo
{ _functionInfoType :: Expression
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Name.hs b/src/Juvix/Syntax/Concrete/Scoped/Name.hs
similarity index 88%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Name.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Name.hs
index 455e1dc59..547f2b0d8 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Name.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Name.hs
@@ -1,17 +1,16 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Name
- ( module MiniJuvix.Syntax.Concrete.Scoped.Name,
- module MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind,
- module MiniJuvix.Syntax.NameId,
+module Juvix.Syntax.Concrete.Scoped.Name
+ ( module Juvix.Syntax.Concrete.Scoped.Name,
+ module Juvix.Syntax.Concrete.Scoped.Name.NameKind,
+ module Juvix.Syntax.NameId,
)
where
-import Lens.Micro.Platform
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Name qualified as C
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-import MiniJuvix.Syntax.Concrete.Scoped.VisibilityAnn
-import MiniJuvix.Syntax.Fixity qualified as C
-import MiniJuvix.Syntax.NameId
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Name qualified as C
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.Concrete.Scoped.VisibilityAnn
+import Juvix.Syntax.Fixity qualified as C
+import Juvix.Syntax.NameId
--------------------------------------------------------------------------------
-- Names
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Name/NameKind.hs b/src/Juvix/Syntax/Concrete/Scoped/Name/NameKind.hs
similarity index 94%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Name/NameKind.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Name/NameKind.hs
index c42d766a2..5e04a7eda 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Name/NameKind.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Name/NameKind.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind where
+module Juvix.Syntax.Concrete.Scoped.Name.NameKind where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
import Prettyprinter.Render.Terminal
data NameKind
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/NameRef.hs b/src/Juvix/Syntax/Concrete/Scoped/NameRef.hs
similarity index 94%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/NameRef.hs
rename to src/Juvix/Syntax/Concrete/Scoped/NameRef.hs
index 0adb19511..c90ea78e8 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/NameRef.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/NameRef.hs
@@ -1,10 +1,10 @@
{-# LANGUAGE UndecidableInstances #-}
-module MiniJuvix.Syntax.Concrete.Scoped.NameRef where
+module Juvix.Syntax.Concrete.Scoped.NameRef where
import Data.Kind qualified as GHC
-import MiniJuvix.Prelude hiding (show)
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Prelude hiding (show)
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
import Prelude (show)
type RefNameType :: S.IsConcrete -> GHC.Type
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty.hs b/src/Juvix/Syntax/Concrete/Scoped/Pretty.hs
similarity index 53%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Pretty.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Pretty.hs
index a574e3f81..e026c45be 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Pretty.hs
@@ -1,16 +1,16 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Pretty
- ( module MiniJuvix.Syntax.Concrete.Scoped.Pretty,
- module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base,
- module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Options,
+module Juvix.Syntax.Concrete.Scoped.Pretty
+ ( module Juvix.Syntax.Concrete.Scoped.Pretty,
+ module Juvix.Syntax.Concrete.Scoped.Pretty.Base,
+ module Juvix.Syntax.Concrete.Scoped.Pretty.Options,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Ann
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Ansi qualified as Ansi
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Options
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Scoped.Pretty.Ann
+import Juvix.Syntax.Concrete.Scoped.Pretty.Ansi qualified as Ansi
+import Juvix.Syntax.Concrete.Scoped.Pretty.Base
+import Juvix.Syntax.Concrete.Scoped.Pretty.Options
newtype PPOutput = PPOutput (Doc Ann)
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Ann.hs b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Ann.hs
similarity index 52%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Ann.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Pretty/Ann.hs
index f02f00f53..1f58d9dce 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Ann.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Ann.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Ann where
+module Juvix.Syntax.Concrete.Scoped.Pretty.Ann where
-import MiniJuvix.Syntax.Concrete.Language (TopModulePath)
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Language (TopModulePath)
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
data Ann
= AnnKind S.NameKind
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Ansi.hs b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Ansi.hs
similarity index 63%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Ansi.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Pretty/Ansi.hs
index 52819e425..89322b919 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Ansi.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Ansi.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Ansi where
+module Juvix.Syntax.Concrete.Scoped.Pretty.Ansi where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.Concrete.Scoped.Pretty.Base
import Prettyprinter.Render.Terminal
stylize :: Ann -> AnsiStyle
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Base.hs b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Base.hs
similarity index 97%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Base.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Pretty/Base.hs
index ff2d3299c..2b97a15f2 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Base.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Base.hs
@@ -1,20 +1,20 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base
- ( module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base,
- module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Ann,
- module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Options,
+module Juvix.Syntax.Concrete.Scoped.Pretty.Base
+ ( module Juvix.Syntax.Concrete.Scoped.Pretty.Base,
+ module Juvix.Syntax.Concrete.Scoped.Pretty.Ann,
+ module Juvix.Syntax.Concrete.Scoped.Pretty.Options,
)
where
import Data.List.NonEmpty.Extra qualified as NonEmpty
import Data.Text qualified as T
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty hiding (braces, parens)
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Scoped.Name (AbsModulePath)
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Ann
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Options
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Prelude.Pretty hiding (braces, parens)
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Scoped.Name (AbsModulePath)
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Pretty.Ann
+import Juvix.Syntax.Concrete.Scoped.Pretty.Options
doc :: PrettyCode c => Options -> c -> Doc Ann
doc opts =
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Html.hs b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Html.hs
similarity index 90%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Html.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Pretty/Html.hs
index 2d151906f..46187a296 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Html.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Html.hs
@@ -1,4 +1,4 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Html (genHtml, Theme (..)) where
+module Juvix.Syntax.Concrete.Scoped.Pretty.Html (genHtml, Theme (..)) where
import Data.ByteString qualified as BS
import Data.Text qualified as Text
@@ -6,13 +6,13 @@ import Data.Text.IO qualified as Text
import Data.Text.Lazy (toStrict)
import Data.Time.Clock
import Data.Time.Format
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base
-import MiniJuvix.Syntax.Concrete.Scoped.Utils
-import MiniJuvix.Utils.Paths
-import MiniJuvix.Utils.Version
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Pretty.Base
+import Juvix.Syntax.Concrete.Scoped.Utils
+import Juvix.Utils.Paths
+import Juvix.Utils.Version
import Prettyprinter
import Prettyprinter.Render.Util.SimpleDocTree
import Text.Blaze.Html
@@ -99,13 +99,13 @@ genModule opts printMetadata utc theme m =
infoFooter =
footer . pre $
toHtml ("Powered by " :: Text)
- <> (a ! Attr.href "https://heliaxdev.github.io/minijuvix" $ toHtml ("MiniJuvix CLI " :: Text))
+ <> (a ! Attr.href "https://anoma.github.io/juvix" $ toHtml ("Juvix CLI " :: Text))
<> (a ! Attr.href (textValue commitAddress) $ toHtml versionTag)
<> br
<> Html.span (toHtml $ ("Last modified on " :: String) <> formattedTime)
where
commitAddress :: Text
- commitAddress = "https://github.com/heliaxdev/minijuvix/commit/" <> shortHash
+ commitAddress = "https://github.com/anoma/juvix/commit/" <> shortHash
formattedTime = formatTime defaultTimeLocale "%Y-%m-%d %-H:%M %Z" utc
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Options.hs b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Options.hs
similarity index 76%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Options.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Pretty/Options.hs
index 4832172e9..918c619b4 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Pretty/Options.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Pretty/Options.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Pretty.Options where
+module Juvix.Syntax.Concrete.Scoped.Pretty.Options where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Options = Options
{ _optShowNameIds :: Bool,
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Scope.hs b/src/Juvix/Syntax/Concrete/Scoped/Scope.hs
similarity index 84%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Scope.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Scope.hs
index a9588fac3..d03042651 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Scope.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Scope.hs
@@ -1,13 +1,13 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Scope
- ( module MiniJuvix.Syntax.Concrete.Scoped.Scope,
- module MiniJuvix.Syntax.Concrete.Scoped.InfoTable,
+module Juvix.Syntax.Concrete.Scoped.Scope
+ ( module Juvix.Syntax.Concrete.Scoped.Scope,
+ module Juvix.Syntax.Concrete.Scoped.InfoTable,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Scoped.InfoTable
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Scoped.InfoTable
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
newtype LocalVariable = LocalVariable
{ _variableName :: S.Symbol
@@ -55,7 +55,7 @@ makeLenses ''ModulesCache
data ScopeParameters = ScopeParameters
{ -- | Root of the project.
_scopeRootPath :: FilePath,
- -- | Usually set to ".mjuvix".
+ -- | Usually set to ".juvix".
_scopeFileExtension :: String,
-- | Used for import cycle detection.
_scopeTopParents :: [Import 'Parsed]
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Scoper.hs b/src/Juvix/Syntax/Concrete/Scoped/Scoper.hs
similarity index 98%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Scoper.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Scoper.hs
index 6d283325d..d0f3d2705 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Scoper.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Scoper.hs
@@ -1,9 +1,9 @@
-- | Limitations:
-- 1. A symbol introduced by a type signature can only be used once per Module.
-module MiniJuvix.Syntax.Concrete.Scoped.Scoper
- ( module MiniJuvix.Syntax.Concrete.Scoped.Scoper,
- module MiniJuvix.Syntax.Concrete.Scoped.Scoper.ScoperResult,
- module MiniJuvix.Syntax.Concrete.Scoped.Error,
+module Juvix.Syntax.Concrete.Scoped.Scoper
+ ( module Juvix.Syntax.Concrete.Scoped.Scoper,
+ module Juvix.Syntax.Concrete.Scoped.Scoper.ScoperResult,
+ module Juvix.Syntax.Concrete.Scoped.Error,
)
where
@@ -11,23 +11,22 @@ import Control.Monad.Combinators.Expr qualified as P
import Data.HashMap.Strict qualified as HashMap
import Data.HashSet qualified as HashSet
import Data.List.NonEmpty qualified as NonEmpty
-import Lens.Micro.Platform
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Pipeline.EntryPoint
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Base qualified as P
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Name qualified as N
-import MiniJuvix.Syntax.Concrete.Parser (runModuleParser)
-import MiniJuvix.Syntax.Concrete.Parser qualified as Parser
-import MiniJuvix.Syntax.Concrete.Parser.InfoTableBuilder (mergeTable)
-import MiniJuvix.Syntax.Concrete.Parser.InfoTableBuilder qualified as Parser
-import MiniJuvix.Syntax.Concrete.Parser.ParserResult (ParserResult)
-import MiniJuvix.Syntax.Concrete.Scoped.Error
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Scope
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper.InfoTableBuilder
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper.ScoperResult
+import Juvix.Internal.NameIdGen
+import Juvix.Pipeline.EntryPoint
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Base qualified as P
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Name qualified as N
+import Juvix.Syntax.Concrete.Parser (runModuleParser)
+import Juvix.Syntax.Concrete.Parser qualified as Parser
+import Juvix.Syntax.Concrete.Parser.InfoTableBuilder (mergeTable)
+import Juvix.Syntax.Concrete.Parser.InfoTableBuilder qualified as Parser
+import Juvix.Syntax.Concrete.Parser.ParserResult (ParserResult)
+import Juvix.Syntax.Concrete.Scoped.Error
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Scope
+import Juvix.Syntax.Concrete.Scoped.Scoper.InfoTableBuilder
+import Juvix.Syntax.Concrete.Scoped.Scoper.ScoperResult
entryScoper ::
Members '[Error ScoperError, Files, NameIdGen] r =>
@@ -71,7 +70,7 @@ scopeCheck pr root modules =
scopeParameters =
ScopeParameters
{ _scopeRootPath = root,
- _scopeFileExtension = ".mjuvix",
+ _scopeFileExtension = ".juvix",
_scopeTopParents = mempty
}
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Scoper/InfoTableBuilder.hs b/src/Juvix/Syntax/Concrete/Scoped/Scoper/InfoTableBuilder.hs
similarity index 93%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Scoper/InfoTableBuilder.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Scoper/InfoTableBuilder.hs
index 7432fb947..8d480adf8 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Scoper/InfoTableBuilder.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Scoper/InfoTableBuilder.hs
@@ -1,10 +1,10 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Scoper.InfoTableBuilder where
+module Juvix.Syntax.Concrete.Scoped.Scoper.InfoTableBuilder where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Scope
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Scope
data InfoTableBuilder m a where
RegisterAxiom :: AxiomDef 'Scoped -> InfoTableBuilder m ()
diff --git a/src/Juvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs b/src/Juvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs
new file mode 100644
index 000000000..470c59bb7
--- /dev/null
+++ b/src/Juvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs
@@ -0,0 +1,15 @@
+module Juvix.Syntax.Concrete.Scoped.Scoper.ScoperResult where
+
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Parser qualified as Parser
+import Juvix.Syntax.Concrete.Scoped.InfoTable qualified as Scoped
+
+data ScoperResult = ScoperResult
+ { _resultParserResult :: Parser.ParserResult,
+ _resultParserTable :: Parser.InfoTable,
+ _resultScoperTable :: Scoped.InfoTable,
+ _resultModules :: NonEmpty (Module 'Scoped 'ModuleTop)
+ }
+
+makeLenses ''ScoperResult
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Utils.hs b/src/Juvix/Syntax/Concrete/Scoped/Utils.hs
similarity index 86%
rename from src/MiniJuvix/Syntax/Concrete/Scoped/Utils.hs
rename to src/Juvix/Syntax/Concrete/Scoped/Utils.hs
index d9c3418f0..239d9d207 100644
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Utils.hs
+++ b/src/Juvix/Syntax/Concrete/Scoped/Utils.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Utils where
+module Juvix.Syntax.Concrete.Scoped.Utils where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
data ScopedModule = forall t. MkScopedModule (SModuleIsTop t) (Module 'Scoped t)
diff --git a/src/Juvix/Syntax/Concrete/Scoped/VisibilityAnn.hs b/src/Juvix/Syntax/Concrete/Scoped/VisibilityAnn.hs
new file mode 100644
index 000000000..9235ed761
--- /dev/null
+++ b/src/Juvix/Syntax/Concrete/Scoped/VisibilityAnn.hs
@@ -0,0 +1,8 @@
+module Juvix.Syntax.Concrete.Scoped.VisibilityAnn where
+
+import Juvix.Prelude
+
+data VisibilityAnn
+ = VisPublic
+ | VisPrivate
+ deriving stock (Show, Eq, Ord)
diff --git a/src/MiniJuvix/Syntax/Fixity.hs b/src/Juvix/Syntax/Fixity.hs
similarity index 96%
rename from src/MiniJuvix/Syntax/Fixity.hs
rename to src/Juvix/Syntax/Fixity.hs
index 8637336bf..7c833d9b4 100644
--- a/src/MiniJuvix/Syntax/Fixity.hs
+++ b/src/Juvix/Syntax/Fixity.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Fixity where
+module Juvix.Syntax.Fixity where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Precedence
= PrecMinusOmega
diff --git a/src/MiniJuvix/Syntax/ForeignBlock.hs b/src/Juvix/Syntax/ForeignBlock.hs
similarity index 60%
rename from src/MiniJuvix/Syntax/ForeignBlock.hs
rename to src/Juvix/Syntax/ForeignBlock.hs
index 9d629944c..0158de192 100644
--- a/src/MiniJuvix/Syntax/ForeignBlock.hs
+++ b/src/Juvix/Syntax/ForeignBlock.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.ForeignBlock where
+module Juvix.Syntax.ForeignBlock where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Backends
+import Juvix.Prelude
+import Juvix.Syntax.Backends
data ForeignBlock = ForeignBlock
{ _foreignBackend :: Backend,
diff --git a/src/MiniJuvix/Syntax/Hole.hs b/src/Juvix/Syntax/Hole.hs
similarity index 82%
rename from src/MiniJuvix/Syntax/Hole.hs
rename to src/Juvix/Syntax/Hole.hs
index 54b944480..bad1d79fc 100644
--- a/src/MiniJuvix/Syntax/Hole.hs
+++ b/src/Juvix/Syntax/Hole.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Hole where
+module Juvix.Syntax.Hole where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.NameId
+import Juvix.Prelude
+import Juvix.Syntax.NameId
import Prettyprinter
data Hole = Hole
diff --git a/src/MiniJuvix/Syntax/IsImplicit.hs b/src/Juvix/Syntax/IsImplicit.hs
similarity index 62%
rename from src/MiniJuvix/Syntax/IsImplicit.hs
rename to src/Juvix/Syntax/IsImplicit.hs
index 55ef46dc4..fe33b0b9f 100644
--- a/src/MiniJuvix/Syntax/IsImplicit.hs
+++ b/src/Juvix/Syntax/IsImplicit.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.IsImplicit where
+module Juvix.Syntax.IsImplicit where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data IsImplicit = Explicit | Implicit
deriving stock (Show, Eq, Ord, Generic)
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker.hs b/src/Juvix/Syntax/MicroJuvix/ArityChecker.hs
similarity index 95%
rename from src/MiniJuvix/Syntax/MicroJuvix/ArityChecker.hs
rename to src/Juvix/Syntax/MicroJuvix/ArityChecker.hs
index 08a58a583..0bae63cd3 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker.hs
+++ b/src/Juvix/Syntax/MicroJuvix/ArityChecker.hs
@@ -1,19 +1,19 @@
-module MiniJuvix.Syntax.MicroJuvix.ArityChecker
- ( module MiniJuvix.Syntax.MicroJuvix.ArityChecker,
- module MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult,
- module MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error,
+module Juvix.Syntax.MicroJuvix.ArityChecker
+ ( module Juvix.Syntax.MicroJuvix.ArityChecker,
+ module Juvix.Syntax.MicroJuvix.MicroJuvixArityResult,
+ module Juvix.Syntax.MicroJuvix.ArityChecker.Error,
)
where
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Prelude hiding (fromEither)
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker.Arity
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker.LocalVars
-import MiniJuvix.Syntax.MicroJuvix.InfoTable
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult
+import Juvix.Internal.NameIdGen
+import Juvix.Prelude hiding (fromEither)
+import Juvix.Syntax.MicroJuvix.ArityChecker.Arity
+import Juvix.Syntax.MicroJuvix.ArityChecker.Error
+import Juvix.Syntax.MicroJuvix.ArityChecker.LocalVars
+import Juvix.Syntax.MicroJuvix.InfoTable
+import Juvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Syntax.MicroJuvix.MicroJuvixArityResult
+import Juvix.Syntax.MicroJuvix.MicroJuvixResult
entryMicroJuvixArity ::
Members '[Error ArityCheckerError, NameIdGen] r =>
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Arity.hs b/src/Juvix/Syntax/MicroJuvix/ArityChecker/Arity.hs
similarity index 91%
rename from src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Arity.hs
rename to src/Juvix/Syntax/MicroJuvix/ArityChecker/Arity.hs
index 9f2ee1a78..0d2c99470 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Arity.hs
+++ b/src/Juvix/Syntax/MicroJuvix/ArityChecker/Arity.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.MicroJuvix.ArityChecker.Arity where
+module Juvix.Syntax.MicroJuvix.ArityChecker.Arity where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Arity
= ArityUnit
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Error.hs b/src/Juvix/Syntax/MicroJuvix/ArityChecker/Error.hs
similarity index 75%
rename from src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Error.hs
rename to src/Juvix/Syntax/MicroJuvix/ArityChecker/Error.hs
index 185eca025..677b7900c 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Error.hs
+++ b/src/Juvix/Syntax/MicroJuvix/ArityChecker/Error.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error
- ( module MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error,
- module MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error.Types,
+module Juvix.Syntax.MicroJuvix.ArityChecker.Error
+ ( module Juvix.Syntax.MicroJuvix.ArityChecker.Error,
+ module Juvix.Syntax.MicroJuvix.ArityChecker.Error.Types,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error.Types
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.ArityChecker.Error.Types
data ArityCheckerError
= ErrWrongConstructorAppLength WrongConstructorAppLength
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Error/Types.hs b/src/Juvix/Syntax/MicroJuvix/ArityChecker/Error/Types.hs
similarity index 95%
rename from src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Error/Types.hs
rename to src/Juvix/Syntax/MicroJuvix/ArityChecker/Error/Types.hs
index 2b010f0e4..f62bed818 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/Error/Types.hs
+++ b/src/Juvix/Syntax/MicroJuvix/ArityChecker/Error/Types.hs
@@ -1,10 +1,10 @@
-module MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error.Types where
+module Juvix.Syntax.MicroJuvix.ArityChecker.Error.Types where
--- import MiniJuvix.Syntax.MicroJuvix.Error.Pretty
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.MicroJuvix.Error.Pretty
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
+-- import Juvix.Syntax.MicroJuvix.Error.Pretty
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.MicroJuvix.Error.Pretty
+import Juvix.Syntax.MicroJuvix.Language.Extra
data WrongConstructorAppLength = WrongConstructorAppLength
{ _wrongConstructorAppLength :: ConstructorApp,
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/LocalVars.hs b/src/Juvix/Syntax/MicroJuvix/ArityChecker/LocalVars.hs
similarity index 73%
rename from src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/LocalVars.hs
rename to src/Juvix/Syntax/MicroJuvix/ArityChecker/LocalVars.hs
index dfe50f208..eeb584d62 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/ArityChecker/LocalVars.hs
+++ b/src/Juvix/Syntax/MicroJuvix/ArityChecker/LocalVars.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Syntax.MicroJuvix.ArityChecker.LocalVars where
+module Juvix.Syntax.MicroJuvix.ArityChecker.LocalVars where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker.Arity
-import MiniJuvix.Syntax.MicroJuvix.Language
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.ArityChecker.Arity
+import Juvix.Syntax.MicroJuvix.Language
newtype LocalVars = LocalVars
{ _localArities :: HashMap VarName Arity
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Error.hs b/src/Juvix/Syntax/MicroJuvix/Error.hs
similarity index 69%
rename from src/MiniJuvix/Syntax/MicroJuvix/Error.hs
rename to src/Juvix/Syntax/MicroJuvix/Error.hs
index bed30f760..ac9ee79c2 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Error.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Error.hs
@@ -1,15 +1,15 @@
-module MiniJuvix.Syntax.MicroJuvix.Error
- ( module MiniJuvix.Syntax.MicroJuvix.Error,
- module MiniJuvix.Syntax.MicroJuvix.Error.Pretty,
- module MiniJuvix.Syntax.MicroJuvix.Error.Types,
- module MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error,
+module Juvix.Syntax.MicroJuvix.Error
+ ( module Juvix.Syntax.MicroJuvix.Error,
+ module Juvix.Syntax.MicroJuvix.Error.Pretty,
+ module Juvix.Syntax.MicroJuvix.Error.Types,
+ module Juvix.Syntax.MicroJuvix.ArityChecker.Error,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error
-import MiniJuvix.Syntax.MicroJuvix.Error.Pretty
-import MiniJuvix.Syntax.MicroJuvix.Error.Types
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.ArityChecker.Error
+import Juvix.Syntax.MicroJuvix.Error.Pretty
+import Juvix.Syntax.MicroJuvix.Error.Types
data TypeCheckerError
= ErrWrongConstructorType WrongConstructorType
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty.hs b/src/Juvix/Syntax/MicroJuvix/Error/Pretty.hs
similarity index 69%
rename from src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty.hs
rename to src/Juvix/Syntax/MicroJuvix/Error/Pretty.hs
index 04da692aa..14af4b1df 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Error/Pretty.hs
@@ -1,17 +1,17 @@
-module MiniJuvix.Syntax.MicroJuvix.Error.Pretty
- ( module MiniJuvix.Syntax.MicroJuvix.Error.Pretty,
- module MiniJuvix.Syntax.MicroJuvix.Error.Pretty.Ann,
- module MiniJuvix.Prelude.Pretty,
+module Juvix.Syntax.MicroJuvix.Error.Pretty
+ ( module Juvix.Syntax.MicroJuvix.Error.Pretty,
+ module Juvix.Syntax.MicroJuvix.Error.Pretty.Ann,
+ module Juvix.Prelude.Pretty,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Fixity
-import MiniJuvix.Syntax.MicroJuvix.Error.Pretty.Ann
-import MiniJuvix.Syntax.MicroJuvix.Error.Pretty.Ansi qualified as Ansi
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Base qualified as Micro
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Fixity
+import Juvix.Syntax.MicroJuvix.Error.Pretty.Ann
+import Juvix.Syntax.MicroJuvix.Error.Pretty.Ansi qualified as Ansi
+import Juvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Syntax.MicroJuvix.Pretty.Base qualified as Micro
ppCode :: Micro.PrettyCode c => c -> Doc Eann
ppCode = runPP . Micro.ppCode
diff --git a/src/Juvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs b/src/Juvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs
new file mode 100644
index 000000000..f06a66812
--- /dev/null
+++ b/src/Juvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs
@@ -0,0 +1,7 @@
+module Juvix.Syntax.MicroJuvix.Error.Pretty.Ann where
+
+import Juvix.Syntax.MicroJuvix.Pretty.Ann qualified as Micro
+
+data Eann
+ = Highlight
+ | MicroAnn Micro.Ann
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty/Ansi.hs b/src/Juvix/Syntax/MicroJuvix/Error/Pretty/Ansi.hs
similarity index 55%
rename from src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty/Ansi.hs
rename to src/Juvix/Syntax/MicroJuvix/Error/Pretty/Ansi.hs
index fe7e2df83..449a3b65a 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty/Ansi.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Error/Pretty/Ansi.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.MicroJuvix.Error.Pretty.Ansi where
+module Juvix.Syntax.MicroJuvix.Error.Pretty.Ansi where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Error.Pretty.Ann
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Ansi qualified as M
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Error.Pretty.Ann
+import Juvix.Syntax.MicroJuvix.Pretty.Ansi qualified as M
import Prettyprinter
import Prettyprinter.Render.Terminal
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Error/Types.hs b/src/Juvix/Syntax/MicroJuvix/Error/Types.hs
similarity index 97%
rename from src/MiniJuvix/Syntax/MicroJuvix/Error/Types.hs
rename to src/Juvix/Syntax/MicroJuvix/Error/Types.hs
index 90cfcede4..1a14f0d94 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Error/Types.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Error/Types.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Syntax.MicroJuvix.Error.Types where
+module Juvix.Syntax.MicroJuvix.Error.Types where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.MicroJuvix.Error.Pretty
-import MiniJuvix.Syntax.MicroJuvix.Language
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.MicroJuvix.Error.Pretty
+import Juvix.Syntax.MicroJuvix.Language
-- | the type of the constructor used in a pattern does
-- not match the type of the inductive being matched
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/InfoTable.hs b/src/Juvix/Syntax/MicroJuvix/InfoTable.hs
similarity index 97%
rename from src/MiniJuvix/Syntax/MicroJuvix/InfoTable.hs
rename to src/Juvix/Syntax/MicroJuvix/InfoTable.hs
index 88304d3c6..14897e633 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/InfoTable.hs
+++ b/src/Juvix/Syntax/MicroJuvix/InfoTable.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.MicroJuvix.InfoTable where
+module Juvix.Syntax.MicroJuvix.InfoTable where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Language.Extra
data ConstructorInfo = ConstructorInfo
{ _constructorInfoInductiveParameters :: [InductiveParameter],
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Language.hs b/src/Juvix/Syntax/MicroJuvix/Language.hs
similarity index 86%
rename from src/MiniJuvix/Syntax/MicroJuvix/Language.hs
rename to src/Juvix/Syntax/MicroJuvix/Language.hs
index e26c3d3ab..6697be371 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Language.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Language.hs
@@ -1,26 +1,26 @@
-module MiniJuvix.Syntax.MicroJuvix.Language
- ( module MiniJuvix.Syntax.MicroJuvix.Language,
- module MiniJuvix.Syntax.Abstract.Name,
- module MiniJuvix.Syntax.Concrete.Loc,
- module MiniJuvix.Syntax.IsImplicit,
- module MiniJuvix.Syntax.Universe,
- module MiniJuvix.Syntax.Hole,
- module MiniJuvix.Syntax.Wildcard,
- module MiniJuvix.Syntax.Concrete.LiteralLoc,
- module MiniJuvix.Syntax.Concrete.Builtins,
+module Juvix.Syntax.MicroJuvix.Language
+ ( module Juvix.Syntax.MicroJuvix.Language,
+ module Juvix.Syntax.Abstract.Name,
+ module Juvix.Syntax.Concrete.Loc,
+ module Juvix.Syntax.IsImplicit,
+ module Juvix.Syntax.Universe,
+ module Juvix.Syntax.Hole,
+ module Juvix.Syntax.Wildcard,
+ module Juvix.Syntax.Concrete.LiteralLoc,
+ module Juvix.Syntax.Concrete.Builtins,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Name
-import MiniJuvix.Syntax.Concrete.Builtins
-import MiniJuvix.Syntax.Concrete.LiteralLoc
-import MiniJuvix.Syntax.Concrete.Loc
-import MiniJuvix.Syntax.ForeignBlock
-import MiniJuvix.Syntax.Hole
-import MiniJuvix.Syntax.IsImplicit
-import MiniJuvix.Syntax.Universe hiding (smallUniverse)
-import MiniJuvix.Syntax.Wildcard
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Name
+import Juvix.Syntax.Concrete.Builtins
+import Juvix.Syntax.Concrete.LiteralLoc
+import Juvix.Syntax.Concrete.Loc
+import Juvix.Syntax.ForeignBlock
+import Juvix.Syntax.Hole
+import Juvix.Syntax.IsImplicit
+import Juvix.Syntax.Universe hiding (smallUniverse)
+import Juvix.Syntax.Wildcard
data Module = Module
{ _moduleName :: Name,
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Language/Extra.hs b/src/Juvix/Syntax/MicroJuvix/Language/Extra.hs
similarity index 98%
rename from src/MiniJuvix/Syntax/MicroJuvix/Language/Extra.hs
rename to src/Juvix/Syntax/MicroJuvix/Language/Extra.hs
index 38fcc273b..af0e2e0ff 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Language/Extra.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Language/Extra.hs
@@ -1,13 +1,13 @@
-module MiniJuvix.Syntax.MicroJuvix.Language.Extra
- ( module MiniJuvix.Syntax.MicroJuvix.Language.Extra,
- module MiniJuvix.Syntax.MicroJuvix.Language,
+module Juvix.Syntax.MicroJuvix.Language.Extra
+ ( module Juvix.Syntax.MicroJuvix.Language.Extra,
+ module Juvix.Syntax.MicroJuvix.Language,
)
where
import Data.HashMap.Strict qualified as HashMap
import Data.HashSet qualified as HashSet
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Language
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Language
data Caller
= CallerInductive InductiveName
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/LocalVars.hs b/src/Juvix/Syntax/MicroJuvix/LocalVars.hs
similarity index 77%
rename from src/MiniJuvix/Syntax/MicroJuvix/LocalVars.hs
rename to src/Juvix/Syntax/MicroJuvix/LocalVars.hs
index 99cdef60c..a831d143d 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/LocalVars.hs
+++ b/src/Juvix/Syntax/MicroJuvix/LocalVars.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.MicroJuvix.LocalVars where
+module Juvix.Syntax.MicroJuvix.LocalVars where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Language
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Language
data LocalVars = LocalVars
{ _localTypes :: HashMap VarName Expression,
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixArityResult.hs b/src/Juvix/Syntax/MicroJuvix/MicroJuvixArityResult.hs
similarity index 51%
rename from src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixArityResult.hs
rename to src/Juvix/Syntax/MicroJuvix/MicroJuvixArityResult.hs
index 7c463ffd8..e29d68b77 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixArityResult.hs
+++ b/src/Juvix/Syntax/MicroJuvix/MicroJuvixArityResult.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult
- ( module MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult,
+module Juvix.Syntax.MicroJuvix.MicroJuvixArityResult
+ ( module Juvix.Syntax.MicroJuvix.MicroJuvixArityResult,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Language
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult (MicroJuvixResult)
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Language
+import Juvix.Syntax.MicroJuvix.MicroJuvixResult (MicroJuvixResult)
data MicroJuvixArityResult = MicroJuvixArityResult
{ _resultMicroJuvixResult :: MicroJuvixResult,
diff --git a/src/Juvix/Syntax/MicroJuvix/MicroJuvixResult.hs b/src/Juvix/Syntax/MicroJuvix/MicroJuvixResult.hs
new file mode 100644
index 000000000..93afe8569
--- /dev/null
+++ b/src/Juvix/Syntax/MicroJuvix/MicroJuvixResult.hs
@@ -0,0 +1,18 @@
+module Juvix.Syntax.MicroJuvix.MicroJuvixResult
+ ( module Juvix.Syntax.MicroJuvix.MicroJuvixResult,
+ module Juvix.Syntax.MicroJuvix.InfoTable,
+ )
+where
+
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.AbstractResult qualified as Abstract
+import Juvix.Syntax.MicroJuvix.InfoTable
+import Juvix.Syntax.MicroJuvix.Language
+
+data MicroJuvixResult = MicroJuvixResult
+ { _resultAbstract :: Abstract.AbstractResult,
+ -- _resultTable :: InfoTable,
+ _resultModules :: NonEmpty Module
+ }
+
+makeLenses ''MicroJuvixResult
diff --git a/src/Juvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs b/src/Juvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs
new file mode 100644
index 000000000..a1f85b105
--- /dev/null
+++ b/src/Juvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs
@@ -0,0 +1,20 @@
+module Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult
+ ( module Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult,
+ module Juvix.Syntax.MicroJuvix.InfoTable,
+ )
+where
+
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.InfoTable
+import Juvix.Syntax.MicroJuvix.Language
+import Juvix.Syntax.MicroJuvix.MicroJuvixArityResult (MicroJuvixArityResult)
+
+data MicroJuvixTypedResult = MicroJuvixTypedResult
+ { _resultMicroJuvixArityResult :: MicroJuvixArityResult,
+ _resultModules :: NonEmpty Module
+ }
+
+makeLenses ''MicroJuvixTypedResult
+
+mainModule :: Lens' MicroJuvixTypedResult Module
+mainModule = resultModules . _head
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Pretty.hs b/src/Juvix/Syntax/MicroJuvix/Pretty.hs
similarity index 66%
rename from src/MiniJuvix/Syntax/MicroJuvix/Pretty.hs
rename to src/Juvix/Syntax/MicroJuvix/Pretty.hs
index 933ccbc91..4e34f9f14 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Pretty.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Pretty.hs
@@ -1,15 +1,15 @@
-module MiniJuvix.Syntax.MicroJuvix.Pretty
- ( module MiniJuvix.Syntax.MicroJuvix.Pretty,
- module MiniJuvix.Syntax.MicroJuvix.Pretty.Options,
+module Juvix.Syntax.MicroJuvix.Pretty
+ ( module Juvix.Syntax.MicroJuvix.Pretty,
+ module Juvix.Syntax.MicroJuvix.Pretty.Options,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Ann
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Ansi qualified as Ansi
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Base
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Options
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.MicroJuvix.Pretty.Ann
+import Juvix.Syntax.MicroJuvix.Pretty.Ansi qualified as Ansi
+import Juvix.Syntax.MicroJuvix.Pretty.Base
+import Juvix.Syntax.MicroJuvix.Pretty.Options
import Prettyprinter.Render.Terminal qualified as Ansi
newtype PPOutput = PPOutput (Doc Ann)
diff --git a/src/Juvix/Syntax/MicroJuvix/Pretty/Ann.hs b/src/Juvix/Syntax/MicroJuvix/Pretty/Ann.hs
new file mode 100644
index 000000000..f64acaf1d
--- /dev/null
+++ b/src/Juvix/Syntax/MicroJuvix/Pretty/Ann.hs
@@ -0,0 +1,9 @@
+module Juvix.Syntax.MicroJuvix.Pretty.Ann where
+
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+
+data Ann
+ = AnnKind NameKind
+ | AnnKeyword
+ | AnnLiteralString
+ | AnnLiteralInteger
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ansi.hs b/src/Juvix/Syntax/MicroJuvix/Pretty/Ansi.hs
similarity index 60%
rename from src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ansi.hs
rename to src/Juvix/Syntax/MicroJuvix/Pretty/Ansi.hs
index 9c1013ce0..57e87f4e7 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ansi.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Pretty/Ansi.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.MicroJuvix.Pretty.Ansi where
+module Juvix.Syntax.MicroJuvix.Pretty.Ansi where
-import MiniJuvix.Syntax.MicroJuvix.Language
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Base
+import Juvix.Syntax.MicroJuvix.Language
+import Juvix.Syntax.MicroJuvix.Pretty.Base
import Prettyprinter.Render.Terminal
stylize :: Ann -> AnsiStyle
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Base.hs b/src/Juvix/Syntax/MicroJuvix/Pretty/Base.hs
similarity index 94%
rename from src/MiniJuvix/Syntax/MicroJuvix/Pretty/Base.hs
rename to src/Juvix/Syntax/MicroJuvix/Pretty/Base.hs
index 799059ee7..32bd3170a 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Base.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Pretty/Base.hs
@@ -1,20 +1,20 @@
-module MiniJuvix.Syntax.MicroJuvix.Pretty.Base
- ( module MiniJuvix.Syntax.MicroJuvix.Pretty.Base,
- module MiniJuvix.Syntax.MicroJuvix.Pretty.Ann,
- module MiniJuvix.Syntax.MicroJuvix.Pretty.Options,
+module Juvix.Syntax.MicroJuvix.Pretty.Base
+ ( module Juvix.Syntax.MicroJuvix.Pretty.Base,
+ module Juvix.Syntax.MicroJuvix.Pretty.Ann,
+ module Juvix.Syntax.MicroJuvix.Pretty.Options,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Backends
-import MiniJuvix.Syntax.Fixity
-import MiniJuvix.Syntax.ForeignBlock
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Ann
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Options
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Backends
+import Juvix.Syntax.Fixity
+import Juvix.Syntax.ForeignBlock
+import Juvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Syntax.MicroJuvix.Pretty.Ann
+import Juvix.Syntax.MicroJuvix.Pretty.Options
doc :: PrettyCode c => Options -> c -> Doc Ann
doc opts =
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Options.hs b/src/Juvix/Syntax/MicroJuvix/Pretty/Options.hs
similarity index 72%
rename from src/MiniJuvix/Syntax/MonoJuvix/Pretty/Options.hs
rename to src/Juvix/Syntax/MicroJuvix/Pretty/Options.hs
index 823e1b802..0c64c6006 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Options.hs
+++ b/src/Juvix/Syntax/MicroJuvix/Pretty/Options.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.MonoJuvix.Pretty.Options where
+module Juvix.Syntax.MicroJuvix.Pretty.Options where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Options = Options
{ _optIndent :: Int,
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/TypeChecker.hs b/src/Juvix/Syntax/MicroJuvix/TypeChecker.hs
similarity index 95%
rename from src/MiniJuvix/Syntax/MicroJuvix/TypeChecker.hs
rename to src/Juvix/Syntax/MicroJuvix/TypeChecker.hs
index 010a2b250..c41c3a940 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/TypeChecker.hs
+++ b/src/Juvix/Syntax/MicroJuvix/TypeChecker.hs
@@ -1,20 +1,20 @@
-module MiniJuvix.Syntax.MicroJuvix.TypeChecker
- ( module MiniJuvix.Syntax.MicroJuvix.TypeChecker,
- module MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult,
- module MiniJuvix.Syntax.MicroJuvix.Error,
+module Juvix.Syntax.MicroJuvix.TypeChecker
+ ( module Juvix.Syntax.MicroJuvix.TypeChecker,
+ module Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult,
+ module Juvix.Syntax.MicroJuvix.Error,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Prelude hiding (fromEither)
-import MiniJuvix.Syntax.MicroJuvix.Error
-import MiniJuvix.Syntax.MicroJuvix.InfoTable
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
-import MiniJuvix.Syntax.MicroJuvix.LocalVars
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult
-import MiniJuvix.Syntax.MicroJuvix.TypeChecker.Inference
+import Juvix.Internal.NameIdGen
+import Juvix.Prelude hiding (fromEither)
+import Juvix.Syntax.MicroJuvix.Error
+import Juvix.Syntax.MicroJuvix.InfoTable
+import Juvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Syntax.MicroJuvix.LocalVars
+import Juvix.Syntax.MicroJuvix.MicroJuvixArityResult
+import Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult
+import Juvix.Syntax.MicroJuvix.TypeChecker.Inference
entryMicroJuvixTyped ::
Members '[Error TypeCheckerError, NameIdGen] r =>
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/TypeChecker/Inference.hs b/src/Juvix/Syntax/MicroJuvix/TypeChecker/Inference.hs
similarity index 96%
rename from src/MiniJuvix/Syntax/MicroJuvix/TypeChecker/Inference.hs
rename to src/Juvix/Syntax/MicroJuvix/TypeChecker/Inference.hs
index a2704b1ca..7f8303aac 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/TypeChecker/Inference.hs
+++ b/src/Juvix/Syntax/MicroJuvix/TypeChecker/Inference.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Syntax.MicroJuvix.TypeChecker.Inference where
+module Juvix.Syntax.MicroJuvix.TypeChecker.Inference where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude hiding (fromEither)
-import MiniJuvix.Syntax.MicroJuvix.Error
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Prelude hiding (fromEither)
+import Juvix.Syntax.MicroJuvix.Error
+import Juvix.Syntax.MicroJuvix.Language.Extra
data MetavarState
= Fresh
diff --git a/src/MiniJuvix/Syntax/MiniC/Language.hs b/src/Juvix/Syntax/MiniC/Language.hs
similarity index 98%
rename from src/MiniJuvix/Syntax/MiniC/Language.hs
rename to src/Juvix/Syntax/MiniC/Language.hs
index 0b5bef7f6..268b7cbce 100644
--- a/src/MiniJuvix/Syntax/MiniC/Language.hs
+++ b/src/Juvix/Syntax/MiniC/Language.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.MiniC.Language where
+module Juvix.Syntax.MiniC.Language where
-import MiniJuvix.Prelude hiding (Enum)
+import Juvix.Prelude hiding (Enum)
newtype CCodeUnit = CCodeUnit
{ _ccodeCode :: [CCode]
@@ -87,7 +87,7 @@ data DeclType
| DeclTypeDef DeclType
| DeclEnum Enum
| DeclFunPtr FunPtr
- | DeclMiniJuvixClosure
+ | DeclJuvixClosure
| BoolType
deriving stock (Show, Eq)
diff --git a/src/MiniJuvix/Syntax/MiniC/Serialization.hs b/src/Juvix/Syntax/MiniC/Serialization.hs
similarity index 96%
rename from src/MiniJuvix/Syntax/MiniC/Serialization.hs
rename to src/Juvix/Syntax/MiniC/Serialization.hs
index 033c5fb76..c5f9c786d 100644
--- a/src/MiniJuvix/Syntax/MiniC/Serialization.hs
+++ b/src/Juvix/Syntax/MiniC/Serialization.hs
@@ -1,12 +1,12 @@
-module MiniJuvix.Syntax.MiniC.Serialization where
+module Juvix.Syntax.MiniC.Serialization where
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Syntax.MiniC.Language
import Language.C qualified as C
import Language.C.Data.Ident qualified as C
import Language.C.Pretty qualified as P
import Language.C.Syntax
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MiniC.Language
import Text.PrettyPrint.HughesPJ qualified as HP
encAngles :: HP.Doc -> HP.Doc
@@ -171,7 +171,7 @@ mkDeclSpecifier = \case
DeclTypeDef typ -> CStorageSpec (CTypedef C.undefNode) : mkDeclSpecifier typ
DeclStructUnion StructUnion {..} -> mkStructUnionTypeSpec _structUnionTag _structUnionName _structMembers
DeclEnum Enum {..} -> mkEnumSpec _enumName _enumMembers
- DeclMiniJuvixClosure -> mkTypeDefTypeSpec Str.minijuvixFunctionT
+ DeclJuvixClosure -> mkTypeDefTypeSpec Str.juvixFunctionT
BoolType -> [CTypeSpec (CBoolType C.undefNode)]
DeclFunPtr {} -> []
diff --git a/src/MiniJuvix/Syntax/MiniHaskell/Language.hs b/src/Juvix/Syntax/MiniHaskell/Language.hs
similarity index 89%
rename from src/MiniJuvix/Syntax/MiniHaskell/Language.hs
rename to src/Juvix/Syntax/MiniHaskell/Language.hs
index 45818676d..ab333d408 100644
--- a/src/MiniJuvix/Syntax/MiniHaskell/Language.hs
+++ b/src/Juvix/Syntax/MiniHaskell/Language.hs
@@ -1,15 +1,15 @@
-module MiniJuvix.Syntax.MiniHaskell.Language
- ( module MiniJuvix.Syntax.MiniHaskell.Language,
- module MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind,
- module MiniJuvix.Syntax.NameId,
+module Juvix.Syntax.MiniHaskell.Language
+ ( module Juvix.Syntax.MiniHaskell.Language,
+ module Juvix.Syntax.Concrete.Scoped.Name.NameKind,
+ module Juvix.Syntax.NameId,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language qualified as C
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-import MiniJuvix.Syntax.Fixity
-import MiniJuvix.Syntax.NameId
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Language qualified as C
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.Fixity
+import Juvix.Syntax.NameId
type FunctionName = Name
diff --git a/src/Juvix/Syntax/MiniHaskell/MiniHaskellResult.hs b/src/Juvix/Syntax/MiniHaskell/MiniHaskellResult.hs
new file mode 100644
index 000000000..423ef47f1
--- /dev/null
+++ b/src/Juvix/Syntax/MiniHaskell/MiniHaskellResult.hs
@@ -0,0 +1,12 @@
+module Juvix.Syntax.MiniHaskell.MiniHaskellResult where
+
+import Juvix.Prelude
+import Juvix.Syntax.MiniHaskell.Language
+import Juvix.Syntax.MonoJuvix.MonoJuvixResult qualified as Mono
+
+data MiniHaskellResult = MiniHaskellResult
+ { _resultMonoJuvix :: Mono.MonoJuvixResult,
+ _resultModules :: NonEmpty Module
+ }
+
+makeLenses ''MiniHaskellResult
diff --git a/src/MiniJuvix/Syntax/MiniHaskell/Pretty.hs b/src/Juvix/Syntax/MiniHaskell/Pretty.hs
similarity index 61%
rename from src/MiniJuvix/Syntax/MiniHaskell/Pretty.hs
rename to src/Juvix/Syntax/MiniHaskell/Pretty.hs
index 06f7372b7..8eb3f843f 100644
--- a/src/MiniJuvix/Syntax/MiniHaskell/Pretty.hs
+++ b/src/Juvix/Syntax/MiniHaskell/Pretty.hs
@@ -1,14 +1,14 @@
-module MiniJuvix.Syntax.MiniHaskell.Pretty
- ( module MiniJuvix.Syntax.MiniHaskell.Pretty,
- module MiniJuvix.Syntax.MiniHaskell.Pretty.Options,
+module Juvix.Syntax.MiniHaskell.Pretty
+ ( module Juvix.Syntax.MiniHaskell.Pretty,
+ module Juvix.Syntax.MiniHaskell.Pretty.Options,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.MiniHaskell.Pretty.Ansi qualified as Ansi
-import MiniJuvix.Syntax.MiniHaskell.Pretty.Base
-import MiniJuvix.Syntax.MiniHaskell.Pretty.Options
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.MiniHaskell.Pretty.Ansi qualified as Ansi
+import Juvix.Syntax.MiniHaskell.Pretty.Base
+import Juvix.Syntax.MiniHaskell.Pretty.Options
newtype PPOutput = PPOutput (Doc Ann)
diff --git a/src/Juvix/Syntax/MiniHaskell/Pretty/Ann.hs b/src/Juvix/Syntax/MiniHaskell/Pretty/Ann.hs
new file mode 100644
index 000000000..d6d6a355a
--- /dev/null
+++ b/src/Juvix/Syntax/MiniHaskell/Pretty/Ann.hs
@@ -0,0 +1,9 @@
+module Juvix.Syntax.MiniHaskell.Pretty.Ann where
+
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+
+data Ann
+ = AnnKind NameKind
+ | AnnKeyword
+ | AnnLiteralString
+ | AnnLiteralInteger
diff --git a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Ansi.hs b/src/Juvix/Syntax/MiniHaskell/Pretty/Ansi.hs
similarity index 60%
rename from src/MiniJuvix/Syntax/MiniHaskell/Pretty/Ansi.hs
rename to src/Juvix/Syntax/MiniHaskell/Pretty/Ansi.hs
index 67ce2d401..9d6a5fc3d 100644
--- a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Ansi.hs
+++ b/src/Juvix/Syntax/MiniHaskell/Pretty/Ansi.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.MiniHaskell.Pretty.Ansi where
+module Juvix.Syntax.MiniHaskell.Pretty.Ansi where
-import MiniJuvix.Syntax.MiniHaskell.Language
-import MiniJuvix.Syntax.MiniHaskell.Pretty.Ann
+import Juvix.Syntax.MiniHaskell.Language
+import Juvix.Syntax.MiniHaskell.Pretty.Ann
import Prettyprinter.Render.Terminal
stylize :: Ann -> AnsiStyle
diff --git a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Base.hs b/src/Juvix/Syntax/MiniHaskell/Pretty/Base.hs
similarity index 90%
rename from src/MiniJuvix/Syntax/MiniHaskell/Pretty/Base.hs
rename to src/Juvix/Syntax/MiniHaskell/Pretty/Base.hs
index dbd7836ca..af9ba5709 100644
--- a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Base.hs
+++ b/src/Juvix/Syntax/MiniHaskell/Pretty/Base.hs
@@ -1,18 +1,18 @@
-module MiniJuvix.Syntax.MiniHaskell.Pretty.Base
- ( module MiniJuvix.Syntax.MiniHaskell.Pretty.Base,
- module MiniJuvix.Syntax.MiniHaskell.Pretty.Ann,
- module MiniJuvix.Syntax.MiniHaskell.Pretty.Options,
+module Juvix.Syntax.MiniHaskell.Pretty.Base
+ ( module Juvix.Syntax.MiniHaskell.Pretty.Base,
+ module Juvix.Syntax.MiniHaskell.Pretty.Ann,
+ module Juvix.Syntax.MiniHaskell.Pretty.Options,
)
where
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty qualified as PP
-import MiniJuvix.Syntax.Concrete.LiteralLoc
-import MiniJuvix.Syntax.Fixity
-import MiniJuvix.Syntax.MiniHaskell.Language
-import MiniJuvix.Syntax.MiniHaskell.Pretty.Ann
-import MiniJuvix.Syntax.MiniHaskell.Pretty.Options
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Prelude.Pretty qualified as PP
+import Juvix.Syntax.Concrete.LiteralLoc
+import Juvix.Syntax.Fixity
+import Juvix.Syntax.MiniHaskell.Language
+import Juvix.Syntax.MiniHaskell.Pretty.Ann
+import Juvix.Syntax.MiniHaskell.Pretty.Options
import Prettyprinter
doc :: PrettyCode c => Options -> c -> Doc Ann
diff --git a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Options.hs b/src/Juvix/Syntax/MiniHaskell/Pretty/Options.hs
similarity index 65%
rename from src/MiniJuvix/Syntax/MiniHaskell/Pretty/Options.hs
rename to src/Juvix/Syntax/MiniHaskell/Pretty/Options.hs
index 861d7e896..b00eb4cb2 100644
--- a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Options.hs
+++ b/src/Juvix/Syntax/MiniHaskell/Pretty/Options.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.MiniHaskell.Pretty.Options where
+module Juvix.Syntax.MiniHaskell.Pretty.Options where
-import MiniJuvix.Prelude
+import Juvix.Prelude
newtype Options = Options
{ _optIndent :: Int
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/InfoTable.hs b/src/Juvix/Syntax/MonoJuvix/InfoTable.hs
similarity index 96%
rename from src/MiniJuvix/Syntax/MonoJuvix/InfoTable.hs
rename to src/Juvix/Syntax/MonoJuvix/InfoTable.hs
index 0165d628e..b2386da11 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/InfoTable.hs
+++ b/src/Juvix/Syntax/MonoJuvix/InfoTable.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Syntax.MonoJuvix.InfoTable where
+module Juvix.Syntax.MonoJuvix.InfoTable where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MonoJuvix.Language
+import Juvix.Prelude
+import Juvix.Syntax.MonoJuvix.Language
data ConstructorInfo = ConstructorInfo
{ _constructorInfoArgs :: [Type],
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Language.hs b/src/Juvix/Syntax/MonoJuvix/Language.hs
similarity index 84%
rename from src/MiniJuvix/Syntax/MonoJuvix/Language.hs
rename to src/Juvix/Syntax/MonoJuvix/Language.hs
index 60c675b87..1fb002e1e 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/Language.hs
+++ b/src/Juvix/Syntax/MonoJuvix/Language.hs
@@ -1,19 +1,19 @@
-module MiniJuvix.Syntax.MonoJuvix.Language
- ( module MiniJuvix.Syntax.MonoJuvix.Language,
- module MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind,
- module MiniJuvix.Syntax.Concrete.Scoped.Name,
- module MiniJuvix.Syntax.Abstract.Name,
- module MiniJuvix.Syntax.Concrete.Builtins,
+module Juvix.Syntax.MonoJuvix.Language
+ ( module Juvix.Syntax.MonoJuvix.Language,
+ module Juvix.Syntax.Concrete.Scoped.Name.NameKind,
+ module Juvix.Syntax.Concrete.Scoped.Name,
+ module Juvix.Syntax.Abstract.Name,
+ module Juvix.Syntax.Concrete.Builtins,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Name
-import MiniJuvix.Syntax.Concrete.Builtins
-import MiniJuvix.Syntax.Concrete.Language qualified as C
-import MiniJuvix.Syntax.Concrete.Scoped.Name (NameId (..))
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-import MiniJuvix.Syntax.ForeignBlock
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Name
+import Juvix.Syntax.Concrete.Builtins
+import Juvix.Syntax.Concrete.Language qualified as C
+import Juvix.Syntax.Concrete.Scoped.Name (NameId (..))
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.ForeignBlock
data Module = Module
{ _moduleName :: Name,
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Language/Extra.hs b/src/Juvix/Syntax/MonoJuvix/Language/Extra.hs
similarity index 50%
rename from src/MiniJuvix/Syntax/MonoJuvix/Language/Extra.hs
rename to src/Juvix/Syntax/MonoJuvix/Language/Extra.hs
index 2f1609d84..189cc2cce 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/Language/Extra.hs
+++ b/src/Juvix/Syntax/MonoJuvix/Language/Extra.hs
@@ -1,10 +1,10 @@
-module MiniJuvix.Syntax.MonoJuvix.Language.Extra
- ( module MiniJuvix.Syntax.MonoJuvix.Language.Extra,
- module MiniJuvix.Syntax.MonoJuvix.Language,
+module Juvix.Syntax.MonoJuvix.Language.Extra
+ ( module Juvix.Syntax.MonoJuvix.Language.Extra,
+ module Juvix.Syntax.MonoJuvix.Language,
)
where
-import MiniJuvix.Syntax.MonoJuvix.Language
+import Juvix.Syntax.MonoJuvix.Language
foldApplication :: Expression -> [Expression] -> Expression
foldApplication f args = case args of
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/LocalVars.hs b/src/Juvix/Syntax/MonoJuvix/LocalVars.hs
similarity index 54%
rename from src/MiniJuvix/Syntax/MonoJuvix/LocalVars.hs
rename to src/Juvix/Syntax/MonoJuvix/LocalVars.hs
index 2b16306e3..ad6179105 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/LocalVars.hs
+++ b/src/Juvix/Syntax/MonoJuvix/LocalVars.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.MonoJuvix.LocalVars where
+module Juvix.Syntax.MonoJuvix.LocalVars where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MonoJuvix.Language
+import Juvix.Prelude
+import Juvix.Syntax.MonoJuvix.Language
newtype LocalVars = LocalVars
{ _localTypes :: HashMap VarName Type
diff --git a/src/Juvix/Syntax/MonoJuvix/MonoJuvixResult.hs b/src/Juvix/Syntax/MonoJuvix/MonoJuvixResult.hs
new file mode 100644
index 000000000..0a69c9c85
--- /dev/null
+++ b/src/Juvix/Syntax/MonoJuvix/MonoJuvixResult.hs
@@ -0,0 +1,40 @@
+module Juvix.Syntax.MonoJuvix.MonoJuvixResult
+ ( module Juvix.Syntax.MonoJuvix.MonoJuvixResult,
+ module Juvix.Syntax.MonoJuvix.InfoTable,
+ )
+where
+
+import Data.HashMap.Strict qualified as HashMap
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.AbstractResult qualified as Abstract
+import Juvix.Syntax.Concrete.Scoped.InfoTable qualified as Scoper
+import Juvix.Syntax.Concrete.Scoped.Name qualified as Scoper
+import Juvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
+import Juvix.Syntax.MicroJuvix.MicroJuvixArityResult qualified as Micro
+import Juvix.Syntax.MicroJuvix.MicroJuvixResult qualified as Micro
+import Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult qualified as Micro
+import Juvix.Syntax.MonoJuvix.InfoTable
+import Juvix.Syntax.MonoJuvix.Language
+
+type CompileInfoTable = HashMap Scoper.NameId Scoper.CompileInfo
+
+data MonoJuvixResult = MonoJuvixResult
+ { _resultMicroTyped :: Micro.MicroJuvixTypedResult,
+ _resultModules :: NonEmpty Module
+ }
+
+makeLenses ''MonoJuvixResult
+
+compileInfoTable :: MonoJuvixResult -> CompileInfoTable
+compileInfoTable r =
+ HashMap.mapKeys
+ (^. Scoper.nameId)
+ ( r
+ ^. resultMicroTyped
+ . Micro.resultMicroJuvixArityResult
+ . Micro.resultMicroJuvixResult
+ . Micro.resultAbstract
+ . Abstract.resultScoper
+ . Scoper.resultScoperTable
+ . Scoper.infoCompilationRules
+ )
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Pretty.hs b/src/Juvix/Syntax/MonoJuvix/Pretty.hs
similarity index 59%
rename from src/MiniJuvix/Syntax/MonoJuvix/Pretty.hs
rename to src/Juvix/Syntax/MonoJuvix/Pretty.hs
index 5e0ff3b1a..3ca88c3be 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/Pretty.hs
+++ b/src/Juvix/Syntax/MonoJuvix/Pretty.hs
@@ -1,15 +1,15 @@
-module MiniJuvix.Syntax.MonoJuvix.Pretty
- ( module MiniJuvix.Syntax.MonoJuvix.Pretty,
- module MiniJuvix.Syntax.MonoJuvix.Pretty.Options,
+module Juvix.Syntax.MonoJuvix.Pretty
+ ( module Juvix.Syntax.MonoJuvix.Pretty,
+ module Juvix.Syntax.MonoJuvix.Pretty.Options,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Ann
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Ansi qualified as Ansi
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Base
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Options
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.MonoJuvix.Pretty.Ann
+import Juvix.Syntax.MonoJuvix.Pretty.Ansi qualified as Ansi
+import Juvix.Syntax.MonoJuvix.Pretty.Base
+import Juvix.Syntax.MonoJuvix.Pretty.Options
newtype PPOutput = PPOutput (Doc Ann)
diff --git a/src/Juvix/Syntax/MonoJuvix/Pretty/Ann.hs b/src/Juvix/Syntax/MonoJuvix/Pretty/Ann.hs
new file mode 100644
index 000000000..d99626765
--- /dev/null
+++ b/src/Juvix/Syntax/MonoJuvix/Pretty/Ann.hs
@@ -0,0 +1,9 @@
+module Juvix.Syntax.MonoJuvix.Pretty.Ann where
+
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+
+data Ann
+ = AnnKind NameKind
+ | AnnKeyword
+ | AnnLiteralString
+ | AnnLiteralInteger
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ansi.hs b/src/Juvix/Syntax/MonoJuvix/Pretty/Ansi.hs
similarity index 79%
rename from src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ansi.hs
rename to src/Juvix/Syntax/MonoJuvix/Pretty/Ansi.hs
index e9b2e0982..482429007 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ansi.hs
+++ b/src/Juvix/Syntax/MonoJuvix/Pretty/Ansi.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Syntax.MonoJuvix.Pretty.Ansi where
+module Juvix.Syntax.MonoJuvix.Pretty.Ansi where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MonoJuvix.Language
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Ann
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Base
+import Juvix.Prelude
+import Juvix.Syntax.MonoJuvix.Language
+import Juvix.Syntax.MonoJuvix.Pretty.Ann
+import Juvix.Syntax.MonoJuvix.Pretty.Base
import Prettyprinter
import Prettyprinter.Render.Terminal
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Base.hs b/src/Juvix/Syntax/MonoJuvix/Pretty/Base.hs
similarity index 93%
rename from src/MiniJuvix/Syntax/MonoJuvix/Pretty/Base.hs
rename to src/Juvix/Syntax/MonoJuvix/Pretty/Base.hs
index 1fd1b36e2..5d30dcd55 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Base.hs
+++ b/src/Juvix/Syntax/MonoJuvix/Pretty/Base.hs
@@ -1,18 +1,18 @@
-module MiniJuvix.Syntax.MonoJuvix.Pretty.Base
- ( module MiniJuvix.Syntax.MonoJuvix.Pretty.Base,
- module MiniJuvix.Syntax.MonoJuvix.Pretty.Options,
+module Juvix.Syntax.MonoJuvix.Pretty.Base
+ ( module Juvix.Syntax.MonoJuvix.Pretty.Base,
+ module Juvix.Syntax.MonoJuvix.Pretty.Options,
)
where
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Backends
-import MiniJuvix.Syntax.Fixity
-import MiniJuvix.Syntax.ForeignBlock
-import MiniJuvix.Syntax.MonoJuvix.Language
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Ann
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Options
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Backends
+import Juvix.Syntax.Fixity
+import Juvix.Syntax.ForeignBlock
+import Juvix.Syntax.MonoJuvix.Language
+import Juvix.Syntax.MonoJuvix.Pretty.Ann
+import Juvix.Syntax.MonoJuvix.Pretty.Options
docStream :: PrettyCode c => Options -> c -> SimpleDocStream Ann
docStream opts = layoutPretty defaultLayoutOptions . doc opts
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Options.hs b/src/Juvix/Syntax/MonoJuvix/Pretty/Options.hs
similarity index 72%
rename from src/MiniJuvix/Syntax/MicroJuvix/Pretty/Options.hs
rename to src/Juvix/Syntax/MonoJuvix/Pretty/Options.hs
index aad94b3e5..9ceefa13c 100644
--- a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Options.hs
+++ b/src/Juvix/Syntax/MonoJuvix/Pretty/Options.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.MicroJuvix.Pretty.Options where
+module Juvix.Syntax.MonoJuvix.Pretty.Options where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Options = Options
{ _optIndent :: Int,
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Text.hs b/src/Juvix/Syntax/MonoJuvix/Pretty/Text.hs
similarity index 82%
rename from src/MiniJuvix/Syntax/MonoJuvix/Pretty/Text.hs
rename to src/Juvix/Syntax/MonoJuvix/Pretty/Text.hs
index 54c164cc1..26d8836b0 100644
--- a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Text.hs
+++ b/src/Juvix/Syntax/MonoJuvix/Pretty/Text.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.MonoJuvix.Pretty.Text where
+module Juvix.Syntax.MonoJuvix.Pretty.Text where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MonoJuvix.Pretty.Base
+import Juvix.Prelude
+import Juvix.Syntax.MonoJuvix.Pretty.Base
import Prettyprinter.Render.Text
printPrettyCodeDefault :: PrettyCode c => c -> IO ()
diff --git a/src/MiniJuvix/Syntax/NameId.hs b/src/Juvix/Syntax/NameId.hs
similarity index 78%
rename from src/MiniJuvix/Syntax/NameId.hs
rename to src/Juvix/Syntax/NameId.hs
index a9795149d..bf2cb0456 100644
--- a/src/MiniJuvix/Syntax/NameId.hs
+++ b/src/Juvix/Syntax/NameId.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.NameId where
+module Juvix.Syntax.NameId where
-import MiniJuvix.Prelude
+import Juvix.Prelude
import Prettyprinter
newtype NameId = NameId
diff --git a/src/MiniJuvix/Syntax/Universe.hs b/src/Juvix/Syntax/Universe.hs
similarity index 92%
rename from src/MiniJuvix/Syntax/Universe.hs
rename to src/Juvix/Syntax/Universe.hs
index 089817e27..f9f2629c6 100644
--- a/src/MiniJuvix/Syntax/Universe.hs
+++ b/src/Juvix/Syntax/Universe.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Syntax.Universe where
+module Juvix.Syntax.Universe where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Fixity
+import Juvix.Prelude
+import Juvix.Syntax.Fixity
data Universe = Universe
{ _universeLevel :: Maybe Natural,
diff --git a/src/MiniJuvix/Syntax/Usage.hs b/src/Juvix/Syntax/Usage.hs
similarity index 59%
rename from src/MiniJuvix/Syntax/Usage.hs
rename to src/Juvix/Syntax/Usage.hs
index 6c2cb45cd..9cd462493 100644
--- a/src/MiniJuvix/Syntax/Usage.hs
+++ b/src/Juvix/Syntax/Usage.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Usage where
+module Juvix.Syntax.Usage where
-import MiniJuvix.Prelude
+import Juvix.Prelude
data Usage
= UsageNone
diff --git a/src/MiniJuvix/Syntax/Wildcard.hs b/src/Juvix/Syntax/Wildcard.hs
similarity index 86%
rename from src/MiniJuvix/Syntax/Wildcard.hs
rename to src/Juvix/Syntax/Wildcard.hs
index b31edaad5..1f485025e 100644
--- a/src/MiniJuvix/Syntax/Wildcard.hs
+++ b/src/Juvix/Syntax/Wildcard.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Syntax.Wildcard where
+module Juvix.Syntax.Wildcard where
-import MiniJuvix.Prelude
+import Juvix.Prelude
import Prettyprinter
newtype Wildcard = Wildcard
diff --git a/src/Juvix/Termination.hs b/src/Juvix/Termination.hs
new file mode 100644
index 000000000..9c0ebd39b
--- /dev/null
+++ b/src/Juvix/Termination.hs
@@ -0,0 +1,12 @@
+module Juvix.Termination
+ ( module Juvix.Termination.Checker,
+ module Juvix.Termination.Types,
+ module Juvix.Termination.Error,
+ module Juvix.Termination.LexOrder,
+ )
+where
+
+import Juvix.Termination.Checker
+import Juvix.Termination.Error
+import Juvix.Termination.LexOrder
+import Juvix.Termination.Types
diff --git a/src/MiniJuvix/Termination/Checker.hs b/src/Juvix/Termination/Checker.hs
similarity index 88%
rename from src/MiniJuvix/Termination/Checker.hs
rename to src/Juvix/Termination/Checker.hs
index c29ec0ef6..0d9576a7f 100644
--- a/src/MiniJuvix/Termination/Checker.hs
+++ b/src/Juvix/Termination/Checker.hs
@@ -1,18 +1,18 @@
-module MiniJuvix.Termination.Checker
- ( module MiniJuvix.Termination.Checker,
- module MiniJuvix.Termination.FunctionCall,
- module MiniJuvix.Termination.Error,
+module Juvix.Termination.Checker
+ ( module Juvix.Termination.Checker,
+ module Juvix.Termination.FunctionCall,
+ module Juvix.Termination.Error,
)
where
import Data.HashMap.Internal.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.InfoTable as Abstract
-import MiniJuvix.Syntax.Abstract.Language as Abstract
-import MiniJuvix.Termination.Error
-import MiniJuvix.Termination.FunctionCall
-import MiniJuvix.Termination.LexOrder
-import MiniJuvix.Termination.Types
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.InfoTable as Abstract
+import Juvix.Syntax.Abstract.Language as Abstract
+import Juvix.Termination.Error
+import Juvix.Termination.FunctionCall
+import Juvix.Termination.LexOrder
+import Juvix.Termination.Types
checkTermination ::
Members '[Error TerminationError] r =>
diff --git a/src/Juvix/Termination/Error.hs b/src/Juvix/Termination/Error.hs
new file mode 100644
index 000000000..1ad9bf487
--- /dev/null
+++ b/src/Juvix/Termination/Error.hs
@@ -0,0 +1,19 @@
+module Juvix.Termination.Error
+ ( module Juvix.Termination.Error,
+ module Juvix.Termination.Error.Pretty,
+ module Juvix.Termination.Error.Types,
+ )
+where
+
+import Juvix.Prelude
+import Juvix.Termination.Error.Pretty
+import Juvix.Termination.Error.Types
+
+newtype TerminationError
+ = ErrNoLexOrder NoLexOrder
+ deriving stock (Show)
+
+instance ToGenericError TerminationError where
+ genericError :: TerminationError -> GenericError
+ genericError = \case
+ ErrNoLexOrder e -> genericError e
diff --git a/src/MiniJuvix/Termination/Error/Pretty.hs b/src/Juvix/Termination/Error/Pretty.hs
similarity index 67%
rename from src/MiniJuvix/Termination/Error/Pretty.hs
rename to src/Juvix/Termination/Error/Pretty.hs
index bb01badf8..e3d8e7938 100644
--- a/src/MiniJuvix/Termination/Error/Pretty.hs
+++ b/src/Juvix/Termination/Error/Pretty.hs
@@ -1,13 +1,13 @@
-module MiniJuvix.Termination.Error.Pretty
- ( module MiniJuvix.Termination.Error.Pretty,
- module MiniJuvix.Termination.Error.Pretty.Ann,
+module Juvix.Termination.Error.Pretty
+ ( module Juvix.Termination.Error.Pretty,
+ module Juvix.Termination.Error.Pretty.Ann,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Termination.Error.Pretty.Ann
-import MiniJuvix.Termination.Error.Pretty.Ansi qualified as Ansi
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Termination.Error.Pretty.Ann
+import Juvix.Termination.Error.Pretty.Ansi qualified as Ansi
newtype PPOutput = PPOutput (Doc Eann)
diff --git a/src/Juvix/Termination/Error/Pretty/Ann.hs b/src/Juvix/Termination/Error/Pretty/Ann.hs
new file mode 100644
index 000000000..eb808093a
--- /dev/null
+++ b/src/Juvix/Termination/Error/Pretty/Ann.hs
@@ -0,0 +1,7 @@
+module Juvix.Termination.Error.Pretty.Ann where
+
+import Juvix.Syntax.Abstract.Pretty.Ann
+
+data Eann
+ = Highlight
+ | AbstractAnn Ann
diff --git a/src/MiniJuvix/Termination/Error/Pretty/Ansi.hs b/src/Juvix/Termination/Error/Pretty/Ansi.hs
similarity index 53%
rename from src/MiniJuvix/Termination/Error/Pretty/Ansi.hs
rename to src/Juvix/Termination/Error/Pretty/Ansi.hs
index c4435e072..c161494a7 100644
--- a/src/MiniJuvix/Termination/Error/Pretty/Ansi.hs
+++ b/src/Juvix/Termination/Error/Pretty/Ansi.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Termination.Error.Pretty.Ansi
- ( module MiniJuvix.Termination.Error.Pretty.Ansi,
+module Juvix.Termination.Error.Pretty.Ansi
+ ( module Juvix.Termination.Error.Pretty.Ansi,
)
where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Pretty.Ansi qualified as M
-import MiniJuvix.Termination.Error.Pretty.Ann
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Pretty.Ansi qualified as M
+import Juvix.Termination.Error.Pretty.Ann
import Prettyprinter
import Prettyprinter.Render.Terminal
diff --git a/src/MiniJuvix/Termination/Error/Types.hs b/src/Juvix/Termination/Error/Types.hs
similarity index 73%
rename from src/MiniJuvix/Termination/Error/Types.hs
rename to src/Juvix/Termination/Error/Types.hs
index 9d192a72c..588995ff4 100644
--- a/src/MiniJuvix/Termination/Error/Types.hs
+++ b/src/Juvix/Termination/Error/Types.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Termination.Error.Types where
+module Juvix.Termination.Error.Types where
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Abstract.Language
-import MiniJuvix.Termination.Error.Pretty
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Abstract.Language
+import Juvix.Termination.Error.Pretty
newtype NoLexOrder = NoLexOrder
{ _noLexOrderFun :: Name
diff --git a/src/MiniJuvix/Termination/FunctionCall.hs b/src/Juvix/Termination/FunctionCall.hs
similarity index 92%
rename from src/MiniJuvix/Termination/FunctionCall.hs
rename to src/Juvix/Termination/FunctionCall.hs
index e84e9ab4e..9c99fac02 100644
--- a/src/MiniJuvix/Termination/FunctionCall.hs
+++ b/src/Juvix/Termination/FunctionCall.hs
@@ -1,12 +1,12 @@
-module MiniJuvix.Termination.FunctionCall
- ( module MiniJuvix.Termination.FunctionCall,
+module Juvix.Termination.FunctionCall
+ ( module Juvix.Termination.FunctionCall,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language.Extra
-import MiniJuvix.Termination.Types
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language.Extra
+import Juvix.Termination.Types
viewCall ::
forall r.
diff --git a/src/MiniJuvix/Termination/LexOrder.hs b/src/Juvix/Termination/LexOrder.hs
similarity index 96%
rename from src/MiniJuvix/Termination/LexOrder.hs
rename to src/Juvix/Termination/LexOrder.hs
index 7ec981b21..ed6cfc11b 100644
--- a/src/MiniJuvix/Termination/LexOrder.hs
+++ b/src/Juvix/Termination/LexOrder.hs
@@ -1,13 +1,13 @@
-module MiniJuvix.Termination.LexOrder
- ( module MiniJuvix.Termination.LexOrder,
+module Juvix.Termination.LexOrder
+ ( module Juvix.Termination.LexOrder,
)
where
import Data.HashMap.Strict qualified as HashMap
import Data.HashSet qualified as HashSet
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language.Extra
-import MiniJuvix.Termination.Types
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language.Extra
+import Juvix.Termination.Types
fromEdgeList :: [Edge] -> Graph
fromEdgeList l = HashMap.fromList [((e ^. edgeFrom, e ^. edgeTo), e) | e <- l]
diff --git a/src/Juvix/Termination/Types.hs b/src/Juvix/Termination/Types.hs
new file mode 100644
index 000000000..0dde95d92
--- /dev/null
+++ b/src/Juvix/Termination/Types.hs
@@ -0,0 +1,12 @@
+module Juvix.Termination.Types
+ ( module Juvix.Termination.Types.FunctionCall,
+ module Juvix.Termination.Types.Graph,
+ module Juvix.Termination.Types.SizeInfo,
+ module Juvix.Termination.Types.SizeRelation,
+ )
+where
+
+import Juvix.Termination.Types.FunctionCall
+import Juvix.Termination.Types.Graph
+import Juvix.Termination.Types.SizeInfo
+import Juvix.Termination.Types.SizeRelation
diff --git a/src/MiniJuvix/Termination/Types/FunctionCall.hs b/src/Juvix/Termination/Types/FunctionCall.hs
similarity index 91%
rename from src/MiniJuvix/Termination/Types/FunctionCall.hs
rename to src/Juvix/Termination/Types/FunctionCall.hs
index 6e4cbdfbc..7d7f65299 100644
--- a/src/MiniJuvix/Termination/Types/FunctionCall.hs
+++ b/src/Juvix/Termination/Types/FunctionCall.hs
@@ -1,10 +1,10 @@
-module MiniJuvix.Termination.Types.FunctionCall (module MiniJuvix.Termination.Types.FunctionCall) where
+module Juvix.Termination.Types.FunctionCall (module Juvix.Termination.Types.FunctionCall) where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language
-import MiniJuvix.Syntax.Abstract.Pretty.Base
-import MiniJuvix.Termination.Types.SizeRelation
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language
+import Juvix.Syntax.Abstract.Pretty.Base
+import Juvix.Termination.Types.SizeRelation
import Prettyprinter as PP
newtype CallMap = CallMap
diff --git a/src/MiniJuvix/Termination/Types/Graph.hs b/src/Juvix/Termination/Types/Graph.hs
similarity index 86%
rename from src/MiniJuvix/Termination/Types/Graph.hs
rename to src/Juvix/Termination/Types/Graph.hs
index a5b2b40d8..c209ab3b1 100644
--- a/src/MiniJuvix/Termination/Types/Graph.hs
+++ b/src/Juvix/Termination/Types/Graph.hs
@@ -1,15 +1,15 @@
-module MiniJuvix.Termination.Types.Graph
- ( module MiniJuvix.Termination.Types.Graph,
+module Juvix.Termination.Types.Graph
+ ( module Juvix.Termination.Types.Graph,
)
where
import Data.HashSet qualified as HashSet
-import MiniJuvix.Prelude
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Abstract.Language.Extra
-import MiniJuvix.Syntax.Abstract.Pretty.Base
-import MiniJuvix.Termination.Types.FunctionCall
-import MiniJuvix.Termination.Types.SizeRelation
+import Juvix.Prelude
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Abstract.Language.Extra
+import Juvix.Syntax.Abstract.Pretty.Base
+import Juvix.Termination.Types.FunctionCall
+import Juvix.Termination.Types.SizeRelation
import Prettyprinter as PP
type Graph = HashMap (FunctionName, FunctionName) Edge
diff --git a/src/MiniJuvix/Termination/Types/SizeInfo.hs b/src/Juvix/Termination/Types/SizeInfo.hs
similarity index 85%
rename from src/MiniJuvix/Termination/Types/SizeInfo.hs
rename to src/Juvix/Termination/Types/SizeInfo.hs
index f4c086b57..05e7ec5c5 100644
--- a/src/MiniJuvix/Termination/Types/SizeInfo.hs
+++ b/src/Juvix/Termination/Types/SizeInfo.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Termination.Types.SizeInfo where
+module Juvix.Termination.Types.SizeInfo where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.Language.Extra
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.Language.Extra
-- | i = SizeInfo [v] ⇔ v is smaller than argument i of the caller function.
-- Indexes are 0 based
diff --git a/src/MiniJuvix/Termination/Types/SizeRelation.hs b/src/Juvix/Termination/Types/SizeRelation.hs
similarity index 93%
rename from src/MiniJuvix/Termination/Types/SizeRelation.hs
rename to src/Juvix/Termination/Types/SizeRelation.hs
index 882f9d44b..418c9a4a4 100644
--- a/src/MiniJuvix/Termination/Types/SizeRelation.hs
+++ b/src/Juvix/Termination/Types/SizeRelation.hs
@@ -1,7 +1,7 @@
-module MiniJuvix.Termination.Types.SizeRelation where
+module Juvix.Termination.Types.SizeRelation where
import Data.Semiring
-import MiniJuvix.Prelude
+import Juvix.Prelude
import Prettyprinter
data Rel
diff --git a/src/MiniJuvix/Translation/AbstractToMicroJuvix.hs b/src/Juvix/Translation/AbstractToMicroJuvix.hs
similarity index 93%
rename from src/MiniJuvix/Translation/AbstractToMicroJuvix.hs
rename to src/Juvix/Translation/AbstractToMicroJuvix.hs
index b97ae8939..d48b58ba6 100644
--- a/src/MiniJuvix/Translation/AbstractToMicroJuvix.hs
+++ b/src/Juvix/Translation/AbstractToMicroJuvix.hs
@@ -1,21 +1,21 @@
-module MiniJuvix.Translation.AbstractToMicroJuvix
- ( module MiniJuvix.Translation.AbstractToMicroJuvix,
- module MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult,
- module MiniJuvix.Termination.Checker,
+module Juvix.Translation.AbstractToMicroJuvix
+ ( module Juvix.Translation.AbstractToMicroJuvix,
+ module Juvix.Syntax.MicroJuvix.MicroJuvixResult,
+ module Juvix.Termination.Checker,
)
where
import Data.HashSet qualified as HashSet
-import MiniJuvix.Pipeline.EntryPoint qualified as E
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.AbstractResult qualified as Abstract
-import MiniJuvix.Syntax.Abstract.Language qualified as Abstract
-import MiniJuvix.Syntax.MicroJuvix.Error
-import MiniJuvix.Syntax.MicroJuvix.Language
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult
-import MiniJuvix.Syntax.Usage
-import MiniJuvix.Termination.Checker
+import Juvix.Pipeline.EntryPoint qualified as E
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.AbstractResult qualified as Abstract
+import Juvix.Syntax.Abstract.Language qualified as Abstract
+import Juvix.Syntax.MicroJuvix.Error
+import Juvix.Syntax.MicroJuvix.Language
+import Juvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Syntax.MicroJuvix.MicroJuvixResult
+import Juvix.Syntax.Usage
+import Juvix.Termination.Checker
newtype TranslationState = TranslationState
{ -- | Top modules are supposed to be included at most once.
@@ -31,21 +31,21 @@ iniState =
makeLenses ''TranslationState
entryMicroJuvix ::
- Members '[Error MiniJuvixError] r =>
+ Members '[Error JuvixError] r =>
Abstract.AbstractResult ->
Sem r MicroJuvixResult
entryMicroJuvix abstractResults = do
unless
noTerminationOption
( mapError
- (MiniJuvixError @TerminationError)
+ (JuvixError @TerminationError)
(checkTermination topModule infoTable)
)
_resultModules' <-
evalState
iniState
( mapM
- (mapError (MiniJuvixError @TypeCheckerError) . goModule)
+ (mapError (JuvixError @TypeCheckerError) . goModule)
(abstractResults ^. Abstract.resultModules)
)
return
diff --git a/src/MiniJuvix/Translation/MicroJuvixToMonoJuvix.hs b/src/Juvix/Translation/MicroJuvixToMonoJuvix.hs
similarity index 95%
rename from src/MiniJuvix/Translation/MicroJuvixToMonoJuvix.hs
rename to src/Juvix/Translation/MicroJuvixToMonoJuvix.hs
index a46e98122..77b6a3862 100644
--- a/src/MiniJuvix/Translation/MicroJuvixToMonoJuvix.hs
+++ b/src/Juvix/Translation/MicroJuvixToMonoJuvix.hs
@@ -1,22 +1,22 @@
-module MiniJuvix.Translation.MicroJuvixToMonoJuvix
- ( module MiniJuvix.Translation.MicroJuvixToMonoJuvix,
- module MiniJuvix.Translation.MicroJuvixToMonoJuvix.TypePropagation,
- module MiniJuvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder,
- module MiniJuvix.Syntax.MonoJuvix.MonoJuvixResult,
+module Juvix.Translation.MicroJuvixToMonoJuvix
+ ( module Juvix.Translation.MicroJuvixToMonoJuvix,
+ module Juvix.Translation.MicroJuvixToMonoJuvix.TypePropagation,
+ module Juvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder,
+ module Juvix.Syntax.MonoJuvix.MonoJuvixResult,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.InfoTable qualified as Micro
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra (mkConcreteType')
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra qualified as Micro
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult qualified as Micro
-import MiniJuvix.Syntax.MonoJuvix.Language.Extra
-import MiniJuvix.Syntax.MonoJuvix.MonoJuvixResult
-import MiniJuvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder
-import MiniJuvix.Translation.MicroJuvixToMonoJuvix.TypePropagation
+import Juvix.Internal.NameIdGen
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.InfoTable qualified as Micro
+import Juvix.Syntax.MicroJuvix.Language.Extra (mkConcreteType')
+import Juvix.Syntax.MicroJuvix.Language.Extra qualified as Micro
+import Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult qualified as Micro
+import Juvix.Syntax.MonoJuvix.Language.Extra
+import Juvix.Syntax.MonoJuvix.MonoJuvixResult
+import Juvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder
+import Juvix.Translation.MicroJuvixToMonoJuvix.TypePropagation
data PolyIden
= PolyFunctionIden Micro.FunctionName
diff --git a/src/MiniJuvix/Translation/MicroJuvixToMonoJuvix/TypeCallsMapBuilder.hs b/src/Juvix/Translation/MicroJuvixToMonoJuvix/TypeCallsMapBuilder.hs
similarity index 95%
rename from src/MiniJuvix/Translation/MicroJuvixToMonoJuvix/TypeCallsMapBuilder.hs
rename to src/Juvix/Translation/MicroJuvixToMonoJuvix/TypeCallsMapBuilder.hs
index 66c85af20..8643fa32f 100644
--- a/src/MiniJuvix/Translation/MicroJuvixToMonoJuvix/TypeCallsMapBuilder.hs
+++ b/src/Juvix/Translation/MicroJuvixToMonoJuvix/TypeCallsMapBuilder.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder (buildTypeCallMap) where
+module Juvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder (buildTypeCallMap) where
import Data.HashMap.Strict qualified as HashMap
import Data.HashSet qualified as HashSet
import Data.List.NonEmpty qualified as NonEmpty
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult
buildTypeCallMap :: MicroJuvixTypedResult -> TypeCallsMap
buildTypeCallMap r =
diff --git a/src/MiniJuvix/Translation/MicroJuvixToMonoJuvix/TypePropagation.hs b/src/Juvix/Translation/MicroJuvixToMonoJuvix/TypePropagation.hs
similarity index 91%
rename from src/MiniJuvix/Translation/MicroJuvixToMonoJuvix/TypePropagation.hs
rename to src/Juvix/Translation/MicroJuvixToMonoJuvix/TypePropagation.hs
index 1016701a9..2c6c4d576 100644
--- a/src/MiniJuvix/Translation/MicroJuvixToMonoJuvix/TypePropagation.hs
+++ b/src/Juvix/Translation/MicroJuvixToMonoJuvix/TypePropagation.hs
@@ -1,10 +1,10 @@
-module MiniJuvix.Translation.MicroJuvixToMonoJuvix.TypePropagation (collectTypeCalls) where
+module Juvix.Translation.MicroJuvixToMonoJuvix.TypePropagation (collectTypeCalls) where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Language.Extra
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult
-import MiniJuvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Language.Extra
+import Juvix.Syntax.MicroJuvix.MicroJuvixTypedResult
+import Juvix.Translation.MicroJuvixToMonoJuvix.TypeCallsMapBuilder
collectTypeCalls :: MicroJuvixTypedResult -> TypeCalls
collectTypeCalls res = run (execState emptyCalls (runReader typesTable (runReader infoTable goTopLevel)))
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniC.hs b/src/Juvix/Translation/MonoJuvixToMiniC.hs
similarity index 96%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniC.hs
rename to src/Juvix/Translation/MonoJuvixToMiniC.hs
index 28ec424c3..dca45db2c 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniC.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniC.hs
@@ -1,26 +1,26 @@
-module MiniJuvix.Translation.MonoJuvixToMiniC
- ( module MiniJuvix.Translation.MonoJuvixToMiniC,
- module MiniJuvix.Translation.MonoJuvixToMiniC.Types,
+module Juvix.Translation.MonoJuvixToMiniC
+ ( module Juvix.Translation.MonoJuvixToMiniC,
+ module Juvix.Translation.MonoJuvixToMiniC.Types,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Builtins
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Backends
-import MiniJuvix.Syntax.Concrete.Language qualified as C
-import MiniJuvix.Syntax.Concrete.Scoped.InfoTable qualified as S
-import MiniJuvix.Syntax.ForeignBlock
-import MiniJuvix.Syntax.MiniC.Language
-import MiniJuvix.Syntax.MiniC.Serialization
-import MiniJuvix.Syntax.MonoJuvix.Language qualified as Mono
-import MiniJuvix.Syntax.NameId
-import MiniJuvix.Translation.MicroJuvixToMonoJuvix qualified as Mono
-import MiniJuvix.Translation.MonoJuvixToMiniC.Base
-import MiniJuvix.Translation.MonoJuvixToMiniC.BuiltinTable
-import MiniJuvix.Translation.MonoJuvixToMiniC.Closure
-import MiniJuvix.Translation.MonoJuvixToMiniC.Types
+import Juvix.Builtins
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Syntax.Backends
+import Juvix.Syntax.Concrete.Language qualified as C
+import Juvix.Syntax.Concrete.Scoped.InfoTable qualified as S
+import Juvix.Syntax.ForeignBlock
+import Juvix.Syntax.MiniC.Language
+import Juvix.Syntax.MiniC.Serialization
+import Juvix.Syntax.MonoJuvix.Language qualified as Mono
+import Juvix.Syntax.NameId
+import Juvix.Translation.MicroJuvixToMonoJuvix qualified as Mono
+import Juvix.Translation.MonoJuvixToMiniC.Base
+import Juvix.Translation.MonoJuvixToMiniC.BuiltinTable
+import Juvix.Translation.MonoJuvixToMiniC.Closure
+import Juvix.Translation.MonoJuvixToMiniC.Types
entryMiniC :: forall r. Member Builtins r => Mono.MonoJuvixResult -> Sem r MiniCResult
entryMiniC i = MiniCResult . serialize <$> cunitResult
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniC/Base.hs b/src/Juvix/Translation/MonoJuvixToMiniC/Base.hs
similarity index 89%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniC/Base.hs
rename to src/Juvix/Translation/MonoJuvixToMiniC/Base.hs
index 381c77389..3fa93fb62 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniC/Base.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniC/Base.hs
@@ -1,23 +1,23 @@
-module MiniJuvix.Translation.MonoJuvixToMiniC.Base
- ( module MiniJuvix.Translation.MonoJuvixToMiniC.Base,
- module MiniJuvix.Translation.MonoJuvixToMiniC.Types,
- module MiniJuvix.Translation.MonoJuvixToMiniC.CNames,
- module MiniJuvix.Translation.MonoJuvixToMiniC.CBuilder,
+module Juvix.Translation.MonoJuvixToMiniC.Base
+ ( module Juvix.Translation.MonoJuvixToMiniC.Base,
+ module Juvix.Translation.MonoJuvixToMiniC.Types,
+ module Juvix.Translation.MonoJuvixToMiniC.CNames,
+ module Juvix.Translation.MonoJuvixToMiniC.CBuilder,
)
where
import Data.HashMap.Strict qualified as HashMap
import Data.Text qualified as T
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.Language qualified as Micro
-import MiniJuvix.Syntax.MiniC.Language
-import MiniJuvix.Syntax.MonoJuvix.Language qualified as Mono
-import MiniJuvix.Translation.MicroJuvixToMonoJuvix qualified as Mono
-import MiniJuvix.Translation.MonoJuvixToMiniC.BuiltinTable
-import MiniJuvix.Translation.MonoJuvixToMiniC.CBuilder
-import MiniJuvix.Translation.MonoJuvixToMiniC.CNames
-import MiniJuvix.Translation.MonoJuvixToMiniC.Types
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Syntax.MicroJuvix.Language qualified as Micro
+import Juvix.Syntax.MiniC.Language
+import Juvix.Syntax.MonoJuvix.Language qualified as Mono
+import Juvix.Translation.MicroJuvixToMonoJuvix qualified as Mono
+import Juvix.Translation.MonoJuvixToMiniC.BuiltinTable
+import Juvix.Translation.MonoJuvixToMiniC.CBuilder
+import Juvix.Translation.MonoJuvixToMiniC.CNames
+import Juvix.Translation.MonoJuvixToMiniC.Types
unsupported :: Text -> a
unsupported msg = error (msg <> " Mono to C: not yet supported")
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniC/BuiltinTable.hs b/src/Juvix/Translation/MonoJuvixToMiniC/BuiltinTable.hs
similarity index 81%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniC/BuiltinTable.hs
rename to src/Juvix/Translation/MonoJuvixToMiniC/BuiltinTable.hs
index df4d28666..318c722fd 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniC/BuiltinTable.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniC/BuiltinTable.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Translation.MonoJuvixToMiniC.BuiltinTable where
+module Juvix.Translation.MonoJuvixToMiniC.BuiltinTable where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Builtins
-import MiniJuvix.Translation.MonoJuvixToMiniC.CNames
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Builtins
+import Juvix.Translation.MonoJuvixToMiniC.CNames
builtinConstructorName :: BuiltinConstructor -> Maybe Text
builtinConstructorName = \case
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniC/CBuilder.hs b/src/Juvix/Translation/MonoJuvixToMiniC/CBuilder.hs
similarity index 86%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniC/CBuilder.hs
rename to src/Juvix/Translation/MonoJuvixToMiniC/CBuilder.hs
index d961a6776..3f51d9f2b 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniC/CBuilder.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniC/CBuilder.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Translation.MonoJuvixToMiniC.CBuilder where
+module Juvix.Translation.MonoJuvixToMiniC.CBuilder where
-import MiniJuvix.Internal.Strings qualified as Str
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MiniC.Language
-import MiniJuvix.Translation.MonoJuvixToMiniC.CNames
+import Juvix.Internal.Strings qualified as Str
+import Juvix.Prelude
+import Juvix.Syntax.MiniC.Language
+import Juvix.Translation.MonoJuvixToMiniC.CNames
namedArgs :: (Text -> Text) -> [CDeclType] -> [Declaration]
namedArgs prefix = zipWith namedCDecl argLabels
@@ -24,7 +24,7 @@ namedCDecl :: Text -> CDeclType -> Declaration
namedCDecl n CDeclType {..} = namedDecl n _typeIsPtr _typeDeclType
declFunctionType :: DeclType
-declFunctionType = DeclTypeDefType Str.minijuvixFunctionT
+declFunctionType = DeclTypeDefType Str.juvixFunctionT
declFunctionPtrType :: CDeclType
declFunctionPtrType =
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniC/CNames.hs b/src/Juvix/Translation/MonoJuvixToMiniC/CNames.hs
similarity index 94%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniC/CNames.hs
rename to src/Juvix/Translation/MonoJuvixToMiniC/CNames.hs
index 90c296738..034c48f93 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniC/CNames.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniC/CNames.hs
@@ -1,6 +1,6 @@
-module MiniJuvix.Translation.MonoJuvixToMiniC.CNames where
+module Juvix.Translation.MonoJuvixToMiniC.CNames where
-import MiniJuvix.Prelude
+import Juvix.Prelude
primPrefix :: Text -> Text
primPrefix = ("prim_" <>)
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniC/Closure.hs b/src/Juvix/Translation/MonoJuvixToMiniC/Closure.hs
similarity index 96%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniC/Closure.hs
rename to src/Juvix/Translation/MonoJuvixToMiniC/Closure.hs
index cde67969f..121e4b1f6 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniC/Closure.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniC/Closure.hs
@@ -1,11 +1,11 @@
-module MiniJuvix.Translation.MonoJuvixToMiniC.Closure where
+module Juvix.Translation.MonoJuvixToMiniC.Closure where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Builtins (IsBuiltin (toBuiltinPrim))
-import MiniJuvix.Syntax.MiniC.Language
-import MiniJuvix.Syntax.MonoJuvix.InfoTable qualified as Mono
-import MiniJuvix.Syntax.MonoJuvix.Language qualified as Mono
-import MiniJuvix.Translation.MonoJuvixToMiniC.Base
+import Juvix.Prelude
+import Juvix.Syntax.Concrete.Builtins (IsBuiltin (toBuiltinPrim))
+import Juvix.Syntax.MiniC.Language
+import Juvix.Syntax.MonoJuvix.InfoTable qualified as Mono
+import Juvix.Syntax.MonoJuvix.Language qualified as Mono
+import Juvix.Translation.MonoJuvixToMiniC.Base
genClosures ::
forall r.
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniC/Types.hs b/src/Juvix/Translation/MonoJuvixToMiniC/Types.hs
similarity index 81%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniC/Types.hs
rename to src/Juvix/Translation/MonoJuvixToMiniC/Types.hs
index 1d128a5e9..b05ea844e 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniC/Types.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniC/Types.hs
@@ -1,9 +1,9 @@
-module MiniJuvix.Translation.MonoJuvixToMiniC.Types where
+module Juvix.Translation.MonoJuvixToMiniC.Types where
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MiniC.Language
-import MiniJuvix.Syntax.MonoJuvix.Language qualified as Mono
-import MiniJuvix.Translation.MonoJuvixToMiniC.BuiltinTable
+import Juvix.Prelude
+import Juvix.Syntax.MiniC.Language
+import Juvix.Syntax.MonoJuvix.Language qualified as Mono
+import Juvix.Translation.MonoJuvixToMiniC.BuiltinTable
newtype MiniCResult = MiniCResult
{ _resultCCode :: Text
diff --git a/src/MiniJuvix/Translation/MonoJuvixToMiniHaskell.hs b/src/Juvix/Translation/MonoJuvixToMiniHaskell.hs
similarity index 92%
rename from src/MiniJuvix/Translation/MonoJuvixToMiniHaskell.hs
rename to src/Juvix/Translation/MonoJuvixToMiniHaskell.hs
index 9b0c54df5..e16292840 100644
--- a/src/MiniJuvix/Translation/MonoJuvixToMiniHaskell.hs
+++ b/src/Juvix/Translation/MonoJuvixToMiniHaskell.hs
@@ -1,19 +1,19 @@
-module MiniJuvix.Translation.MonoJuvixToMiniHaskell
- ( module MiniJuvix.Translation.MonoJuvixToMiniHaskell,
- module MiniJuvix.Syntax.MiniHaskell.MiniHaskellResult,
+module Juvix.Translation.MonoJuvixToMiniHaskell
+ ( module Juvix.Translation.MonoJuvixToMiniHaskell,
+ module Juvix.Syntax.MiniHaskell.MiniHaskellResult,
)
where
import Data.HashMap.Strict qualified as HashMap
import Data.Text qualified as Text
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Backends
-import MiniJuvix.Syntax.Concrete.Scoped.InfoTable qualified as S
-import MiniJuvix.Syntax.ForeignBlock
-import MiniJuvix.Syntax.MiniHaskell.Language
-import MiniJuvix.Syntax.MiniHaskell.MiniHaskellResult
-import MiniJuvix.Syntax.MonoJuvix.Language qualified as Mono
-import MiniJuvix.Syntax.MonoJuvix.MonoJuvixResult qualified as Mono
+import Juvix.Prelude
+import Juvix.Syntax.Backends
+import Juvix.Syntax.Concrete.Scoped.InfoTable qualified as S
+import Juvix.Syntax.ForeignBlock
+import Juvix.Syntax.MiniHaskell.Language
+import Juvix.Syntax.MiniHaskell.MiniHaskellResult
+import Juvix.Syntax.MonoJuvix.Language qualified as Mono
+import Juvix.Syntax.MonoJuvix.MonoJuvixResult qualified as Mono
import Prettyprinter
entryMiniHaskell ::
diff --git a/src/MiniJuvix/Translation/ScopedToAbstract.hs b/src/Juvix/Translation/ScopedToAbstract.hs
similarity index 95%
rename from src/MiniJuvix/Translation/ScopedToAbstract.hs
rename to src/Juvix/Translation/ScopedToAbstract.hs
index c12832a96..351a1990c 100644
--- a/src/MiniJuvix/Translation/ScopedToAbstract.hs
+++ b/src/Juvix/Translation/ScopedToAbstract.hs
@@ -1,21 +1,21 @@
-module MiniJuvix.Translation.ScopedToAbstract
- ( module MiniJuvix.Translation.ScopedToAbstract,
- module MiniJuvix.Syntax.Abstract.AbstractResult,
+module Juvix.Translation.ScopedToAbstract
+ ( module Juvix.Translation.ScopedToAbstract,
+ module Juvix.Syntax.Abstract.AbstractResult,
)
where
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Builtins
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.AbstractResult
-import MiniJuvix.Syntax.Abstract.InfoTableBuilder
-import MiniJuvix.Syntax.Abstract.Language qualified as Abstract
-import MiniJuvix.Syntax.Concrete.Language qualified as Concrete
-import MiniJuvix.Syntax.Concrete.Scoped.Error
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as S
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
+import Juvix.Builtins
+import Juvix.Internal.NameIdGen
+import Juvix.Prelude
+import Juvix.Syntax.Abstract.AbstractResult
+import Juvix.Syntax.Abstract.InfoTableBuilder
+import Juvix.Syntax.Abstract.Language qualified as Abstract
+import Juvix.Syntax.Concrete.Language qualified as Concrete
+import Juvix.Syntax.Concrete.Scoped.Error
+import Juvix.Syntax.Concrete.Scoped.Name qualified as S
+import Juvix.Syntax.Concrete.Scoped.Name.NameKind
+import Juvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
newtype ModulesCache = ModulesCache
{_cachedModules :: HashMap S.NameId Abstract.TopModule}
diff --git a/src/MiniJuvix/Utils/Paths.hs b/src/Juvix/Utils/Paths.hs
similarity index 72%
rename from src/MiniJuvix/Utils/Paths.hs
rename to src/Juvix/Utils/Paths.hs
index 6adb70ceb..877064f01 100644
--- a/src/MiniJuvix/Utils/Paths.hs
+++ b/src/Juvix/Utils/Paths.hs
@@ -1,8 +1,8 @@
-module MiniJuvix.Utils.Paths where
+module Juvix.Utils.Paths where
import Data.FileEmbed qualified as FE
+import Juvix.Prelude
import Language.Haskell.TH.Syntax
-import MiniJuvix.Prelude
assetsDir :: Q Exp
assetsDir = FE.makeRelativeToProject "assets" >>= FE.embedDir
diff --git a/src/MiniJuvix/Utils/Version.hs b/src/Juvix/Utils/Version.hs
similarity index 90%
rename from src/MiniJuvix/Utils/Version.hs
rename to src/Juvix/Utils/Version.hs
index 12e95a2cb..efbea6aac 100644
--- a/src/MiniJuvix/Utils/Version.hs
+++ b/src/Juvix/Utils/Version.hs
@@ -1,4 +1,4 @@
-module MiniJuvix.Utils.Version
+module Juvix.Utils.Version
( branch,
commit,
commitDate,
@@ -15,14 +15,14 @@ where
import Data.Version (showVersion)
import Development.GitRev (gitBranch, gitCommitDate, gitHash)
-import MiniJuvix.Prelude hiding (Doc)
-import Paths_minijuvix qualified
+import Juvix.Prelude hiding (Doc)
+import Paths_juvix qualified
import Prettyprinter as PP
import Prettyprinter.Render.Text (renderIO)
import System.Environment (getProgName)
versionDoc :: Text
-versionDoc = pack (showVersion Paths_minijuvix.version)
+versionDoc = pack (showVersion Paths_juvix.version)
branch :: Text
branch = pack $(gitBranch)
diff --git a/src/MiniJuvix/Builtins.hs b/src/MiniJuvix/Builtins.hs
deleted file mode 100644
index 95aedf0e6..000000000
--- a/src/MiniJuvix/Builtins.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-module MiniJuvix.Builtins
- ( module MiniJuvix.Builtins.Effect,
- module MiniJuvix.Builtins.Natural,
- module MiniJuvix.Builtins.IO,
- )
-where
-
-import MiniJuvix.Builtins.Effect
-import MiniJuvix.Builtins.IO
-import MiniJuvix.Builtins.Natural
diff --git a/src/MiniJuvix/Pipeline.hs b/src/MiniJuvix/Pipeline.hs
deleted file mode 100644
index 53285e831..000000000
--- a/src/MiniJuvix/Pipeline.hs
+++ /dev/null
@@ -1,154 +0,0 @@
-module MiniJuvix.Pipeline
- ( module MiniJuvix.Pipeline,
- module MiniJuvix.Pipeline.EntryPoint,
- )
-where
-
-import MiniJuvix.Builtins
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Pipeline.EntryPoint
-import MiniJuvix.Pipeline.Setup qualified as Setup
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.AbstractResult qualified as Abstract
-import MiniJuvix.Syntax.Concrete.Parser qualified as Parser
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker qualified as MicroJuvix
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult qualified as MicroJuvix
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult qualified as MicroJuvix
-import MiniJuvix.Syntax.MicroJuvix.TypeChecker qualified as MicroJuvix
-import MiniJuvix.Translation.AbstractToMicroJuvix qualified as MicroJuvix
-import MiniJuvix.Translation.MicroJuvixToMonoJuvix qualified as MonoJuvix
-import MiniJuvix.Translation.MonoJuvixToMiniC qualified as MiniC
-import MiniJuvix.Translation.MonoJuvixToMiniHaskell qualified as MiniHaskell
-import MiniJuvix.Translation.ScopedToAbstract qualified as Abstract
-
-type PipelineEff = '[Files, NameIdGen, Builtins, Error MiniJuvixError, Embed IO]
-
-runIOEither :: Sem PipelineEff a -> IO (Either MiniJuvixError a)
-runIOEither = runM . runError . runBuiltins . runNameIdGen . mapError (MiniJuvixError @FilesError) . runFilesIO
-
-runIO :: Sem PipelineEff a -> IO a
-runIO = runIOEither >=> mayThrow
- where
- mayThrow :: Either MiniJuvixError r -> IO r
- mayThrow = \case
- Left err -> printErrorAnsiSafe err >> exitFailure
- Right r -> return r
-
---------------------------------------------------------------------------------
-
-upToSetup ::
- Member Files r =>
- EntryPoint ->
- Sem r EntryPoint
-upToSetup = Setup.entrySetup
-
-upToParsing ::
- Members '[Files, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r Parser.ParserResult
-upToParsing = upToSetup >=> pipelineParser
-
-upToScoping ::
- Members '[Files, NameIdGen, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r Scoper.ScoperResult
-upToScoping = upToParsing >=> pipelineScoper
-
-upToAbstract ::
- Members '[Files, NameIdGen, Builtins, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r Abstract.AbstractResult
-upToAbstract = upToScoping >=> pipelineAbstract
-
-upToMicroJuvix ::
- Members '[Files, NameIdGen, Builtins, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r MicroJuvix.MicroJuvixResult
-upToMicroJuvix = upToAbstract >=> pipelineMicroJuvix
-
-upToMicroJuvixArity ::
- Members '[Files, NameIdGen, Builtins, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r MicroJuvix.MicroJuvixArityResult
-upToMicroJuvixArity = upToMicroJuvix >=> pipelineMicroJuvixArity
-
-upToMicroJuvixTyped ::
- Members '[Files, NameIdGen, Builtins, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r MicroJuvix.MicroJuvixTypedResult
-upToMicroJuvixTyped = upToMicroJuvixArity >=> pipelineMicroJuvixTyped
-
-upToMonoJuvix ::
- Members '[Files, NameIdGen, Builtins, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r MonoJuvix.MonoJuvixResult
-upToMonoJuvix = upToMicroJuvixTyped >=> pipelineMonoJuvix
-
-upToMiniHaskell ::
- Members '[Files, NameIdGen, Builtins, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r MiniHaskell.MiniHaskellResult
-upToMiniHaskell = upToMonoJuvix >=> pipelineMiniHaskell
-
-upToMiniC ::
- Members '[Files, NameIdGen, Builtins, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r MiniC.MiniCResult
-upToMiniC = upToMonoJuvix >=> pipelineMiniC
-
---------------------------------------------------------------------------------
-
-pipelineParser ::
- Members '[Files, Error MiniJuvixError] r =>
- EntryPoint ->
- Sem r Parser.ParserResult
-pipelineParser = mapError (MiniJuvixError @Parser.ParserError) . Parser.entryParser
-
-pipelineScoper ::
- Members '[Files, NameIdGen, Error MiniJuvixError] r =>
- Parser.ParserResult ->
- Sem r Scoper.ScoperResult
-pipelineScoper = mapError (MiniJuvixError @Scoper.ScoperError) . Scoper.entryScoper
-
-pipelineAbstract ::
- Members '[Error MiniJuvixError, Builtins, NameIdGen] r =>
- Scoper.ScoperResult ->
- Sem r Abstract.AbstractResult
-pipelineAbstract = mapError (MiniJuvixError @Scoper.ScoperError) . Abstract.entryAbstract
-
-pipelineMicroJuvix ::
- Members '[Error MiniJuvixError] r =>
- Abstract.AbstractResult ->
- Sem r MicroJuvix.MicroJuvixResult
-pipelineMicroJuvix = MicroJuvix.entryMicroJuvix
-
-pipelineMicroJuvixArity ::
- Members '[Error MiniJuvixError, NameIdGen] r =>
- MicroJuvix.MicroJuvixResult ->
- Sem r MicroJuvix.MicroJuvixArityResult
-pipelineMicroJuvixArity = mapError (MiniJuvixError @MicroJuvix.ArityCheckerError) . MicroJuvix.entryMicroJuvixArity
-
-pipelineMicroJuvixTyped ::
- Members '[Files, NameIdGen, Error MiniJuvixError] r =>
- MicroJuvix.MicroJuvixArityResult ->
- Sem r MicroJuvix.MicroJuvixTypedResult
-pipelineMicroJuvixTyped =
- mapError (MiniJuvixError @MicroJuvix.TypeCheckerError) . MicroJuvix.entryMicroJuvixTyped
-
-pipelineMonoJuvix ::
- Members '[Files, NameIdGen] r =>
- MicroJuvix.MicroJuvixTypedResult ->
- Sem r MonoJuvix.MonoJuvixResult
-pipelineMonoJuvix = MonoJuvix.entryMonoJuvix
-
-pipelineMiniHaskell ::
- MonoJuvix.MonoJuvixResult ->
- Sem r MiniHaskell.MiniHaskellResult
-pipelineMiniHaskell = MiniHaskell.entryMiniHaskell
-
-pipelineMiniC ::
- Member Builtins r =>
- MonoJuvix.MonoJuvixResult ->
- Sem r MiniC.MiniCResult
-pipelineMiniC = MiniC.entryMiniC
diff --git a/src/MiniJuvix/Prelude.hs b/src/MiniJuvix/Prelude.hs
deleted file mode 100644
index 98944b065..000000000
--- a/src/MiniJuvix/Prelude.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module MiniJuvix.Prelude
- ( module MiniJuvix.Prelude.Base,
- module MiniJuvix.Prelude.Error,
- module MiniJuvix.Prelude.Files,
- module MiniJuvix.Prelude.Lens,
- )
-where
-
-import MiniJuvix.Prelude.Base
-import MiniJuvix.Prelude.Error
-import MiniJuvix.Prelude.Files
-import MiniJuvix.Prelude.Lens
diff --git a/src/MiniJuvix/Prelude/Error.hs b/src/MiniJuvix/Prelude/Error.hs
deleted file mode 100644
index 45f944c25..000000000
--- a/src/MiniJuvix/Prelude/Error.hs
+++ /dev/null
@@ -1,21 +0,0 @@
--- | Generic class of errors generated by the minijuvix compiler. Inspired by
--- Control.Exception
-module MiniJuvix.Prelude.Error
- ( module MiniJuvix.Prelude.Error,
- module MiniJuvix.Syntax.Concrete.Loc,
- module MiniJuvix.Prelude.Error.GenericError,
- )
-where
-
-import MiniJuvix.Prelude.Base
-import MiniJuvix.Prelude.Error.GenericError
-import MiniJuvix.Syntax.Concrete.Loc
-
-data MiniJuvixError
- = forall a. (ToGenericError a, Typeable a) => MiniJuvixError a
-
-instance ToGenericError MiniJuvixError where
- genericError (MiniJuvixError e) = genericError e
-
-fromMiniJuvixError :: Typeable a => MiniJuvixError -> Maybe a
-fromMiniJuvixError (MiniJuvixError e) = cast e
diff --git a/src/MiniJuvix/Syntax/Abstract/AbstractResult.hs b/src/MiniJuvix/Syntax/Abstract/AbstractResult.hs
deleted file mode 100644
index c71b40387..000000000
--- a/src/MiniJuvix/Syntax/Abstract/AbstractResult.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-module MiniJuvix.Syntax.Abstract.AbstractResult
- ( module MiniJuvix.Syntax.Abstract.AbstractResult,
- module MiniJuvix.Syntax.Abstract.InfoTable,
- )
-where
-
-import MiniJuvix.Pipeline.EntryPoint qualified as E
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.InfoTable
-import MiniJuvix.Syntax.Abstract.Language
-import MiniJuvix.Syntax.Concrete.Parser.ParserResult
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper.ScoperResult
-
-data AbstractResult = AbstractResult
- { _resultScoper :: ScoperResult,
- _resultTable :: InfoTable,
- _resultModules :: NonEmpty TopModule
- }
-
-makeLenses ''AbstractResult
-
-abstractResultEntryPoint :: Lens' AbstractResult E.EntryPoint
-abstractResultEntryPoint = resultScoper . resultParserResult . resultEntry
diff --git a/src/MiniJuvix/Syntax/Concrete/Parser/Base.hs b/src/MiniJuvix/Syntax/Concrete/Parser/Base.hs
deleted file mode 100644
index fe6d0eda2..000000000
--- a/src/MiniJuvix/Syntax/Concrete/Parser/Base.hs
+++ /dev/null
@@ -1 +0,0 @@
-module MiniJuvix.Syntax.Concrete.Parser.Base where
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Ann.hs b/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Ann.hs
deleted file mode 100644
index 7d1dadb74..000000000
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Ann.hs
+++ /dev/null
@@ -1,7 +0,0 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Error.Ann where
-
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Base qualified as P
-
-data Eann
- = Highlight
- | ScopedAnn P.Ann
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs b/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs
deleted file mode 100644
index dbb4312e2..000000000
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Error.Pretty.Ansi where
-
-import MiniJuvix.Syntax.Concrete.Scoped.Error.Ann
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty.Ansi qualified as S
-import Prettyprinter.Render.Terminal
-
-stylize :: Eann -> AnsiStyle
-stylize a = case a of
- Highlight -> colorDull Red
- ScopedAnn s -> S.stylize s
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs b/src/MiniJuvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs
deleted file mode 100644
index 8c3465eb0..000000000
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-module MiniJuvix.Syntax.Concrete.Scoped.Scoper.ScoperResult where
-
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Concrete.Language
-import MiniJuvix.Syntax.Concrete.Parser qualified as Parser
-import MiniJuvix.Syntax.Concrete.Scoped.InfoTable qualified as Scoped
-
-data ScoperResult = ScoperResult
- { _resultParserResult :: Parser.ParserResult,
- _resultParserTable :: Parser.InfoTable,
- _resultScoperTable :: Scoped.InfoTable,
- _resultModules :: NonEmpty (Module 'Scoped 'ModuleTop)
- }
-
-makeLenses ''ScoperResult
diff --git a/src/MiniJuvix/Syntax/Concrete/Scoped/VisibilityAnn.hs b/src/MiniJuvix/Syntax/Concrete/Scoped/VisibilityAnn.hs
deleted file mode 100644
index c538a29d3..000000000
--- a/src/MiniJuvix/Syntax/Concrete/Scoped/VisibilityAnn.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-module MiniJuvix.Syntax.Concrete.Scoped.VisibilityAnn where
-
-import MiniJuvix.Prelude
-
-data VisibilityAnn
- = VisPublic
- | VisPrivate
- deriving stock (Show, Eq, Ord)
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs b/src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs
deleted file mode 100644
index c4d48c828..000000000
--- a/src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs
+++ /dev/null
@@ -1,7 +0,0 @@
-module MiniJuvix.Syntax.MicroJuvix.Error.Pretty.Ann where
-
-import MiniJuvix.Syntax.MicroJuvix.Pretty.Ann qualified as Micro
-
-data Eann
- = Highlight
- | MicroAnn Micro.Ann
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixResult.hs b/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixResult.hs
deleted file mode 100644
index 39cb01628..000000000
--- a/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixResult.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-module MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult
- ( module MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult,
- module MiniJuvix.Syntax.MicroJuvix.InfoTable,
- )
-where
-
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.AbstractResult qualified as Abstract
-import MiniJuvix.Syntax.MicroJuvix.InfoTable
-import MiniJuvix.Syntax.MicroJuvix.Language
-
-data MicroJuvixResult = MicroJuvixResult
- { _resultAbstract :: Abstract.AbstractResult,
- -- _resultTable :: InfoTable,
- _resultModules :: NonEmpty Module
- }
-
-makeLenses ''MicroJuvixResult
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs b/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs
deleted file mode 100644
index f4617e73f..000000000
--- a/src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-module MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult
- ( module MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult,
- module MiniJuvix.Syntax.MicroJuvix.InfoTable,
- )
-where
-
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MicroJuvix.InfoTable
-import MiniJuvix.Syntax.MicroJuvix.Language
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult (MicroJuvixArityResult)
-
-data MicroJuvixTypedResult = MicroJuvixTypedResult
- { _resultMicroJuvixArityResult :: MicroJuvixArityResult,
- _resultModules :: NonEmpty Module
- }
-
-makeLenses ''MicroJuvixTypedResult
-
-mainModule :: Lens' MicroJuvixTypedResult Module
-mainModule = resultModules . _head
diff --git a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ann.hs b/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ann.hs
deleted file mode 100644
index 5371bb6a6..000000000
--- a/src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ann.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-module MiniJuvix.Syntax.MicroJuvix.Pretty.Ann where
-
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-
-data Ann
- = AnnKind NameKind
- | AnnKeyword
- | AnnLiteralString
- | AnnLiteralInteger
diff --git a/src/MiniJuvix/Syntax/MiniHaskell/MiniHaskellResult.hs b/src/MiniJuvix/Syntax/MiniHaskell/MiniHaskellResult.hs
deleted file mode 100644
index d8a9e5bb4..000000000
--- a/src/MiniJuvix/Syntax/MiniHaskell/MiniHaskellResult.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module MiniJuvix.Syntax.MiniHaskell.MiniHaskellResult where
-
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.MiniHaskell.Language
-import MiniJuvix.Syntax.MonoJuvix.MonoJuvixResult qualified as Mono
-
-data MiniHaskellResult = MiniHaskellResult
- { _resultMonoJuvix :: Mono.MonoJuvixResult,
- _resultModules :: NonEmpty Module
- }
-
-makeLenses ''MiniHaskellResult
diff --git a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Ann.hs b/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Ann.hs
deleted file mode 100644
index 2932a42df..000000000
--- a/src/MiniJuvix/Syntax/MiniHaskell/Pretty/Ann.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-module MiniJuvix.Syntax.MiniHaskell.Pretty.Ann where
-
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-
-data Ann
- = AnnKind NameKind
- | AnnKeyword
- | AnnLiteralString
- | AnnLiteralInteger
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/MonoJuvixResult.hs b/src/MiniJuvix/Syntax/MonoJuvix/MonoJuvixResult.hs
deleted file mode 100644
index 7bf7794c1..000000000
--- a/src/MiniJuvix/Syntax/MonoJuvix/MonoJuvixResult.hs
+++ /dev/null
@@ -1,40 +0,0 @@
-module MiniJuvix.Syntax.MonoJuvix.MonoJuvixResult
- ( module MiniJuvix.Syntax.MonoJuvix.MonoJuvixResult,
- module MiniJuvix.Syntax.MonoJuvix.InfoTable,
- )
-where
-
-import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Prelude
-import MiniJuvix.Syntax.Abstract.AbstractResult qualified as Abstract
-import MiniJuvix.Syntax.Concrete.Scoped.InfoTable qualified as Scoper
-import MiniJuvix.Syntax.Concrete.Scoped.Name qualified as Scoper
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixArityResult qualified as Micro
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixResult qualified as Micro
-import MiniJuvix.Syntax.MicroJuvix.MicroJuvixTypedResult qualified as Micro
-import MiniJuvix.Syntax.MonoJuvix.InfoTable
-import MiniJuvix.Syntax.MonoJuvix.Language
-
-type CompileInfoTable = HashMap Scoper.NameId Scoper.CompileInfo
-
-data MonoJuvixResult = MonoJuvixResult
- { _resultMicroTyped :: Micro.MicroJuvixTypedResult,
- _resultModules :: NonEmpty Module
- }
-
-makeLenses ''MonoJuvixResult
-
-compileInfoTable :: MonoJuvixResult -> CompileInfoTable
-compileInfoTable r =
- HashMap.mapKeys
- (^. Scoper.nameId)
- ( r
- ^. resultMicroTyped
- . Micro.resultMicroJuvixArityResult
- . Micro.resultMicroJuvixResult
- . Micro.resultAbstract
- . Abstract.resultScoper
- . Scoper.resultScoperTable
- . Scoper.infoCompilationRules
- )
diff --git a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ann.hs b/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ann.hs
deleted file mode 100644
index 3b5d44185..000000000
--- a/src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ann.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-module MiniJuvix.Syntax.MonoJuvix.Pretty.Ann where
-
-import MiniJuvix.Syntax.Concrete.Scoped.Name.NameKind
-
-data Ann
- = AnnKind NameKind
- | AnnKeyword
- | AnnLiteralString
- | AnnLiteralInteger
diff --git a/src/MiniJuvix/Termination.hs b/src/MiniJuvix/Termination.hs
deleted file mode 100644
index d7241d15b..000000000
--- a/src/MiniJuvix/Termination.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module MiniJuvix.Termination
- ( module MiniJuvix.Termination.Checker,
- module MiniJuvix.Termination.Types,
- module MiniJuvix.Termination.Error,
- module MiniJuvix.Termination.LexOrder,
- )
-where
-
-import MiniJuvix.Termination.Checker
-import MiniJuvix.Termination.Error
-import MiniJuvix.Termination.LexOrder
-import MiniJuvix.Termination.Types
diff --git a/src/MiniJuvix/Termination/Error.hs b/src/MiniJuvix/Termination/Error.hs
deleted file mode 100644
index 738234c5d..000000000
--- a/src/MiniJuvix/Termination/Error.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-module MiniJuvix.Termination.Error
- ( module MiniJuvix.Termination.Error,
- module MiniJuvix.Termination.Error.Pretty,
- module MiniJuvix.Termination.Error.Types,
- )
-where
-
-import MiniJuvix.Prelude
-import MiniJuvix.Termination.Error.Pretty
-import MiniJuvix.Termination.Error.Types
-
-newtype TerminationError
- = ErrNoLexOrder NoLexOrder
- deriving stock (Show)
-
-instance ToGenericError TerminationError where
- genericError :: TerminationError -> GenericError
- genericError = \case
- ErrNoLexOrder e -> genericError e
diff --git a/src/MiniJuvix/Termination/Error/Pretty/Ann.hs b/src/MiniJuvix/Termination/Error/Pretty/Ann.hs
deleted file mode 100644
index 76a6333b1..000000000
--- a/src/MiniJuvix/Termination/Error/Pretty/Ann.hs
+++ /dev/null
@@ -1,7 +0,0 @@
-module MiniJuvix.Termination.Error.Pretty.Ann where
-
-import MiniJuvix.Syntax.Abstract.Pretty.Ann
-
-data Eann
- = Highlight
- | AbstractAnn Ann
diff --git a/src/MiniJuvix/Termination/Types.hs b/src/MiniJuvix/Termination/Types.hs
deleted file mode 100644
index 8ac383e56..000000000
--- a/src/MiniJuvix/Termination/Types.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module MiniJuvix.Termination.Types
- ( module MiniJuvix.Termination.Types.FunctionCall,
- module MiniJuvix.Termination.Types.Graph,
- module MiniJuvix.Termination.Types.SizeInfo,
- module MiniJuvix.Termination.Types.SizeRelation,
- )
-where
-
-import MiniJuvix.Termination.Types.FunctionCall
-import MiniJuvix.Termination.Types.Graph
-import MiniJuvix.Termination.Types.SizeInfo
-import MiniJuvix.Termination.Types.SizeRelation
diff --git a/test/Arity/Negative.hs b/test/Arity/Negative.hs
index a04f28883..97b6ba67c 100644
--- a/test/Arity/Negative.hs
+++ b/test/Arity/Negative.hs
@@ -1,8 +1,8 @@
module Arity.Negative (allTests) where
import Base
-import MiniJuvix.Pipeline
-import MiniJuvix.Syntax.MicroJuvix.ArityChecker.Error
+import Juvix.Pipeline
+import Juvix.Syntax.MicroJuvix.ArityChecker.Error
type FailMsg = String
@@ -22,7 +22,7 @@ testDescr NegTest {..} =
_testAssertion = Single $ do
let entryPoint = defaultEntryPoint _file
result <- runIOEither (upToMicroJuvixArity entryPoint)
- case mapLeft fromMiniJuvixError result of
+ case mapLeft fromJuvixError result of
Left (Just tyError) -> whenJust (_checkErr tyError) assertFailure
Left Nothing -> assertFailure "The arity checker did not find an error."
Right _ -> assertFailure "An error ocurred but it was not in the arity checker."
@@ -45,42 +45,42 @@ tests =
[ NegTest
"Too many arguments in expression"
"MicroJuvix"
- "TooManyArguments.mjuvix"
+ "TooManyArguments.juvix"
$ \case
ErrTooManyArguments {} -> Nothing
_ -> wrongError,
NegTest
"Pattern match a function type"
"MicroJuvix"
- "FunctionPattern.mjuvix"
+ "FunctionPattern.juvix"
$ \case
ErrPatternFunction {} -> Nothing
_ -> wrongError,
NegTest
"Function type (* → *) application"
"MicroJuvix"
- "FunctionApplied.mjuvix"
+ "FunctionApplied.juvix"
$ \case
ErrFunctionApplied {} -> Nothing
_ -> wrongError,
NegTest
"Expected explicit pattern"
"MicroJuvix"
- "ExpectedExplicitPattern.mjuvix"
+ "ExpectedExplicitPattern.juvix"
$ \case
ErrExpectedExplicitPattern {} -> Nothing
_ -> wrongError,
NegTest
"Expected explicit argument"
"MicroJuvix"
- "ExpectedExplicitArgument.mjuvix"
+ "ExpectedExplicitArgument.juvix"
$ \case
ErrExpectedExplicitArgument {} -> Nothing
_ -> wrongError,
NegTest
"Function clause with two many patterns in the lhs"
"MicroJuvix"
- "LhsTooManyPatterns.mjuvix"
+ "LhsTooManyPatterns.juvix"
$ \case
ErrLhsTooManyPatterns {} -> Nothing
_ -> wrongError
diff --git a/test/BackendC/Base.hs b/test/BackendC/Base.hs
index 89bc5d631..8119d9f35 100644
--- a/test/BackendC/Base.hs
+++ b/test/BackendC/Base.hs
@@ -3,8 +3,8 @@ module BackendC.Base where
import Base
import Data.FileEmbed
import Data.Text.IO qualified as TIO
-import MiniJuvix.Pipeline
-import MiniJuvix.Translation.MonoJuvixToMiniC as MiniC
+import Juvix.Pipeline
+import Juvix.Translation.MonoJuvixToMiniC as MiniC
import System.IO.Extra (withTempDir)
import System.Process qualified as P
diff --git a/test/BackendC/Examples.hs b/test/BackendC/Examples.hs
index 3574f6160..50499ba83 100644
--- a/test/BackendC/Examples.hs
+++ b/test/BackendC/Examples.hs
@@ -36,6 +36,6 @@ allTests =
tests :: [ExampleTest]
tests =
- [ ExampleTest "Validity Predicate example" "ValidityPredicates" "Tests.mjuvix" "ValidityPredicates" "" StdlibExclude,
- ExampleTest "MiniTicTacToe example" "MiniTicTacToe" "MiniTicTacToe.mjuvix" "MiniTicTacToe" "aaa\n0\n10\n1\n2\n3\n3\n4\n5\n6\n7\n8\n9\n" StdlibInclude
+ [ ExampleTest "Validity Predicate example" "ValidityPredicates" "Tests.juvix" "ValidityPredicates" "" StdlibExclude,
+ ExampleTest "MiniTicTacToe example" "MiniTicTacToe" "MiniTicTacToe.juvix" "MiniTicTacToe" "aaa\n0\n10\n1\n2\n3\n3\n4\n5\n6\n7\n8\n9\n" StdlibInclude
]
diff --git a/test/BackendC/Positive.hs b/test/BackendC/Positive.hs
index 9738001a2..9c39222de 100644
--- a/test/BackendC/Positive.hs
+++ b/test/BackendC/Positive.hs
@@ -15,7 +15,7 @@ root :: FilePath
root = "tests/positive/MiniC"
mainFile :: FilePath
-mainFile = "Input.mjuvix"
+mainFile = "Input.juvix"
expectedFile :: FilePath
expectedFile = "expected.golden"
diff --git a/test/Base.hs b/test/Base.hs
index 264e1f5c5..c70c10279 100644
--- a/test/Base.hs
+++ b/test/Base.hs
@@ -1,14 +1,14 @@
module Base
( module Test.Tasty,
module Test.Tasty.HUnit,
- module MiniJuvix.Prelude,
+ module Juvix.Prelude,
module Base,
)
where
import Data.Algorithm.Diff
import Data.Algorithm.DiffOutput
-import MiniJuvix.Prelude
+import Juvix.Prelude
import System.Environment (lookupEnv)
import Test.Tasty
import Test.Tasty.HUnit
diff --git a/test/Main.hs b/test/Main.hs
index c5982d36b..d780db06a 100644
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -11,13 +11,13 @@ import TypeCheck qualified
slowTests :: TestTree
slowTests =
testGroup
- "MiniJuvix slow tests"
+ "Juvix slow tests"
[BackendC.allTests]
fastTests :: TestTree
fastTests =
testGroup
- "MiniJuvix fast tests"
+ "Juvix fast tests"
[ Scope.allTests,
Termination.allTests,
Arity.allTests,
@@ -27,4 +27,4 @@ fastTests =
main :: IO ()
main = do
- defaultMain (testGroup "MiniJuvix tests" [fastTests, slowTests])
+ defaultMain (testGroup "Juvix tests" [fastTests, slowTests])
diff --git a/test/MonoJuvix/Positive.hs b/test/MonoJuvix/Positive.hs
index 0715d73cd..9b8183273 100644
--- a/test/MonoJuvix/Positive.hs
+++ b/test/MonoJuvix/Positive.hs
@@ -1,7 +1,7 @@
module MonoJuvix.Positive where
import Base
-import MiniJuvix.Pipeline
+import Juvix.Pipeline
data PosTest = PosTest
{ _name :: String,
@@ -34,13 +34,13 @@ tests =
[ PosTest
"General example"
"."
- "Polymorphism.mjuvix",
+ "Polymorphism.juvix",
PosTest
"Polymorphic Simple Fungible Token"
"FullExamples"
- "SimpleFungibleTokenImplicit.mjuvix",
+ "SimpleFungibleTokenImplicit.juvix",
PosTest
"Polymorphism and higher rank functions with explicit holes"
"."
- "PolymorphismHoles.mjuvix"
+ "PolymorphismHoles.juvix"
]
diff --git a/test/Scope/Negative.hs b/test/Scope/Negative.hs
index f6883b567..e108293d9 100644
--- a/test/Scope/Negative.hs
+++ b/test/Scope/Negative.hs
@@ -1,8 +1,8 @@
module Scope.Negative (allTests) where
import Base
-import MiniJuvix.Pipeline
-import MiniJuvix.Syntax.Concrete.Scoped.Error
+import Juvix.Pipeline
+import Juvix.Syntax.Concrete.Scoped.Error
type FailMsg = String
@@ -25,7 +25,7 @@ testDescr NegTest {..} =
_testAssertion = Single $ do
let entryPoint = defaultEntryPoint _file
res <- runIOEither (upToAbstract entryPoint)
- case mapLeft fromMiniJuvixError res of
+ case mapLeft fromJuvixError res of
Left (Just err) -> whenJust (_checkErr err) assertFailure
Left Nothing -> assertFailure "The scope checker did not find an error."
Right _ -> assertFailure "An error ocurred but it was not in the scoper."
@@ -47,168 +47,168 @@ scoperErrorTests =
[ NegTest
"Not in scope"
"."
- "NotInScope.mjuvix"
+ "NotInScope.juvix"
$ \case
ErrSymNotInScope {} -> Nothing
_ -> wrongError,
NegTest
"Qualified not in scope"
"."
- "QualSymNotInScope.mjuvix"
+ "QualSymNotInScope.juvix"
$ \case
ErrQualSymNotInScope {} -> Nothing
_ -> wrongError,
NegTest
"Multiple declarations"
"."
- "MultipleDeclarations.mjuvix"
+ "MultipleDeclarations.juvix"
$ \case
ErrMultipleDeclarations {} -> Nothing
_ -> wrongError,
NegTest
"Import cycle"
"ImportCycle"
- "A.mjuvix"
+ "A.juvix"
$ \case
ErrImportCycle {} -> Nothing
_ -> wrongError,
NegTest
"Binding group conflict (function clause)"
"BindGroupConflict"
- "Clause.mjuvix"
+ "Clause.juvix"
$ \case
ErrBindGroup {} -> Nothing
_ -> wrongError,
NegTest
"Binding group conflict (lambda clause)"
"BindGroupConflict"
- "Lambda.mjuvix"
+ "Lambda.juvix"
$ \case
ErrBindGroup {} -> Nothing
_ -> wrongError,
NegTest
"Infix error (expression)"
"."
- "InfixError.mjuvix"
+ "InfixError.juvix"
$ \case
ErrInfixParser {} -> Nothing
_ -> wrongError,
NegTest
"Infix error (pattern)"
"."
- "InfixErrorP.mjuvix"
+ "InfixErrorP.juvix"
$ \case
ErrInfixPattern {} -> Nothing
_ -> wrongError,
NegTest
"Duplicate fixity declaration"
"."
- "DuplicateFixity.mjuvix"
+ "DuplicateFixity.juvix"
$ \case
ErrDuplicateFixity {} -> Nothing
_ -> wrongError,
NegTest
"Multiple export conflict"
"."
- "MultipleExportConflict.mjuvix"
+ "MultipleExportConflict.juvix"
$ \case
ErrMultipleExport {} -> Nothing
_ -> wrongError,
NegTest
"Module not in scope"
"."
- "ModuleNotInScope.mjuvix"
+ "ModuleNotInScope.juvix"
$ \case
ErrModuleNotInScope {} -> Nothing
_ -> wrongError,
NegTest
"Unused operator syntax definition"
"."
- "UnusedOperatorDef.mjuvix"
+ "UnusedOperatorDef.juvix"
$ \case
ErrUnusedOperatorDef {} -> Nothing
_ -> wrongError,
NegTest
"Ambiguous symbol"
"."
- "AmbiguousSymbol.mjuvix"
+ "AmbiguousSymbol.juvix"
$ \case
ErrAmbiguousSym {} -> Nothing
_ -> wrongError,
NegTest
"Lacks function clause"
"."
- "LacksFunctionClause.mjuvix"
+ "LacksFunctionClause.juvix"
$ \case
ErrLacksFunctionClause {} -> Nothing
_ -> wrongError,
NegTest
"Incorrect top module path"
"."
- "WrongModuleName.mjuvix"
+ "WrongModuleName.juvix"
$ \case
ErrWrongTopModuleName {} -> Nothing
_ -> wrongError,
NegTest
"Ambiguous export"
"."
- "AmbiguousExport.mjuvix"
+ "AmbiguousExport.juvix"
$ \case
ErrMultipleExport {} -> Nothing
_ -> wrongError,
NegTest
"Ambiguous nested modules"
"."
- "AmbiguousModule.mjuvix"
+ "AmbiguousModule.juvix"
$ \case
ErrAmbiguousModuleSym {} -> Nothing
_ -> wrongError,
NegTest
"Ambiguous nested constructors"
"."
- "AmbiguousConstructor.mjuvix"
+ "AmbiguousConstructor.juvix"
$ \case
ErrAmbiguousSym {} -> Nothing
_ -> wrongError,
NegTest
"Wrong location of a compile block"
"CompileBlocks"
- "WrongLocationCompileBlock.mjuvix"
+ "WrongLocationCompileBlock.juvix"
$ \case
ErrWrongLocationCompileBlock {} -> Nothing
_ -> wrongError,
NegTest
"Implicit argument on the left of an application"
"."
- "AppLeftImplicit.mjuvix"
+ "AppLeftImplicit.juvix"
$ \case
ErrAppLeftImplicit {} -> Nothing
_ -> wrongError,
NegTest
"Multiple compile blocks for the same name"
"CompileBlocks"
- "MultipleCompileBlockSameName.mjuvix"
+ "MultipleCompileBlockSameName.juvix"
$ \case
ErrMultipleCompileBlockSameName {} -> Nothing
_ -> wrongError,
NegTest
"Multiple rules for a backend inside a compile block"
"CompileBlocks"
- "MultipleCompileRuleSameBackend.mjuvix"
+ "MultipleCompileRuleSameBackend.juvix"
$ \case
ErrMultipleCompileRuleSameBackend {} -> Nothing
_ -> wrongError,
NegTest
"issue 230"
"230"
- "Prod.mjuvix"
+ "Prod.juvix"
$ \case
ErrQualSymNotInScope {} -> Nothing
_ -> wrongError,
NegTest
"Compile block for a unsupported kind of expression"
"CompileBlocks"
- "WrongKindExpressionCompileBlock.mjuvix"
+ "WrongKindExpressionCompileBlock.juvix"
$ \case
ErrWrongKindExpressionCompileBlock {} -> Nothing
_ -> wrongError
@@ -219,13 +219,13 @@ filesErrorTests =
[ NegTest
"A module that conflicts with a module in the stdlib"
"StdlibConflict"
- "Stdlib/Data/Bool.mjuvix"
+ "Stdlib/Data/Bool.juvix"
$ \case
FilesError {} -> Nothing,
NegTest
"Importing a module that conflicts with a module in the stdlib"
"StdlibConflict"
- "Input.mjuvix"
+ "Input.juvix"
$ \case
FilesError {} -> Nothing
]
diff --git a/test/Scope/Positive.hs b/test/Scope/Positive.hs
index 146b0b79f..24f703c0f 100644
--- a/test/Scope/Positive.hs
+++ b/test/Scope/Positive.hs
@@ -2,14 +2,14 @@ module Scope.Positive where
import Base
import Data.HashMap.Strict qualified as HashMap
-import MiniJuvix.Internal.NameIdGen
-import MiniJuvix.Pipeline
-import MiniJuvix.Pipeline.Setup
-import MiniJuvix.Prelude.Pretty
-import MiniJuvix.Syntax.Concrete.Parser qualified as Parser
-import MiniJuvix.Syntax.Concrete.Scoped.Pretty qualified as M
-import MiniJuvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
-import MiniJuvix.Syntax.Concrete.Scoped.Utils
+import Juvix.Internal.NameIdGen
+import Juvix.Pipeline
+import Juvix.Pipeline.Setup
+import Juvix.Prelude.Pretty
+import Juvix.Syntax.Concrete.Parser qualified as Parser
+import Juvix.Syntax.Concrete.Scoped.Pretty qualified as M
+import Juvix.Syntax.Concrete.Scoped.Scoper qualified as Scoper
+import Juvix.Syntax.Concrete.Scoped.Utils
data PosTest = PosTest
{ _name :: String,
@@ -80,18 +80,18 @@ testDescr PosTest {..} =
step "Parsing pretty scoped"
let fs2 = unionStdlib (HashMap.singleton entryFile scopedPretty)
p' :: Parser.ParserResult <-
- (runM . runErrorIO @MiniJuvixError . runNameIdGen . runFilesPure fs2)
+ (runM . runErrorIO @JuvixError . runNameIdGen . runFilesPure fs2)
(upToParsing entryPoint)
step "Parsing pretty parsed"
let fs3 = unionStdlib (HashMap.singleton entryFile parsedPretty)
parsedPretty' :: Parser.ParserResult <-
- (runM . runErrorIO @MiniJuvixError . runNameIdGen . runFilesPure fs3)
+ (runM . runErrorIO @JuvixError . runNameIdGen . runFilesPure fs3)
(upToParsing entryPoint)
step "Scoping the scoped"
s' :: Scoper.ScoperResult <-
- (runM . runErrorIO @MiniJuvixError . runNameIdGen . runFilesPure fs)
+ (runM . runErrorIO @JuvixError . runNameIdGen . runFilesPure fs)
(upToScoping entryPoint)
step "Checks"
@@ -119,85 +119,85 @@ tests =
"Inductive"
"."
StdlibInclude
- "Inductive.mjuvix",
+ "Inductive.juvix",
PosTest
"Imports and qualified names"
"Imports"
StdlibInclude
- "A.mjuvix",
+ "A.juvix",
PosTest
"Data.Bool from the stdlib"
"StdlibList"
StdlibExclude
- "Data/Bool.mjuvix",
+ "Data/Bool.juvix",
PosTest
"Data.Nat from the stdlib"
"StdlibList"
StdlibExclude
- "Data/Nat.mjuvix",
+ "Data/Nat.juvix",
PosTest
"Data.Ord from the stdlib"
"StdlibList"
StdlibExclude
- "Data/Ord.mjuvix",
+ "Data/Ord.juvix",
PosTest
"Data.Product from the stdlib"
"StdlibList"
StdlibExclude
- "Data/Product.mjuvix",
+ "Data/Product.juvix",
PosTest
"Data.List and friends from the stdlib"
"StdlibList"
StdlibExclude
- "Data/List.mjuvix",
+ "Data/List.juvix",
PosTest
"Operators (+)"
"."
StdlibExclude
- "Operators.mjuvix",
+ "Operators.juvix",
PosTest
"Literals"
"."
StdlibExclude
- "Literals.mjuvix",
+ "Literals.juvix",
PosTest
"Axiom with backends"
"."
StdlibExclude
- "Axiom.mjuvix",
+ "Axiom.juvix",
PosTest
"Foreign block parsing"
"."
StdlibExclude
- "Foreign.mjuvix",
+ "Foreign.juvix",
PosTest
"Multiple modules non-ambiguous symbol - same file"
"QualifiedSymbol"
StdlibExclude
- "M.mjuvix",
+ "M.juvix",
PosTest
"Multiple modules non-ambiguous symbol"
"QualifiedSymbol2"
StdlibExclude
- "N.mjuvix",
+ "N.juvix",
PosTest
"Multiple modules constructor non-ambiguous symbol"
"QualifiedConstructor"
StdlibExclude
- "M.mjuvix",
+ "M.juvix",
PosTest
"Parsing"
"."
StdlibExclude
- "Parsing.mjuvix",
+ "Parsing.juvix",
PosTest
"open overrides open public"
"."
StdlibExclude
- "ShadowPublicOpen.mjuvix",
+ "ShadowPublicOpen.juvix",
PosTest
"Import embedded standard library"
"StdlibImport"
StdlibInclude
- "StdlibImport.mjuvix"
+ "StdlibImport.juvix"
]
diff --git a/test/Termination/Negative.hs b/test/Termination/Negative.hs
index c00747585..b65dc023d 100644
--- a/test/Termination/Negative.hs
+++ b/test/Termination/Negative.hs
@@ -1,8 +1,8 @@
module Termination.Negative (module Termination.Negative) where
import Base
-import MiniJuvix.Pipeline
-import MiniJuvix.Termination
+import Juvix.Pipeline
+import Juvix.Termination
type FailMsg = String
@@ -22,7 +22,7 @@ testDescr NegTest {..} =
_testAssertion = Single $ do
let entryPoint = (defaultEntryPoint _file) {_entryPointNoStdlib = True}
result <- runIOEither (upToMicroJuvix entryPoint)
- case mapLeft fromMiniJuvixError result of
+ case mapLeft fromJuvixError result of
Left (Just lexError) -> whenJust (_checkErr lexError) assertFailure
Left Nothing -> assertFailure "The termination checker did not find an error."
Right _ -> assertFailure "An error ocurred but it was not by the termination checker."
@@ -42,43 +42,43 @@ tests =
[ NegTest
"Mutual recursive functions non terminating"
"."
- "Mutual.mjuvix"
+ "Mutual.juvix"
$ \case
ErrNoLexOrder {} -> Nothing,
NegTest
"Another mutual block non terminating"
"."
- "Ord.mjuvix"
+ "Ord.juvix"
$ \case
ErrNoLexOrder {} -> Nothing,
NegTest
"Only one function, f, marked terminating in a mutual block"
"."
- "TerminatingF.mjuvix"
+ "TerminatingF.juvix"
$ \case
ErrNoLexOrder {} -> Nothing,
NegTest
"Only one function, g, marked terminating in a mutual block"
"."
- "TerminatingG.mjuvix"
+ "TerminatingG.juvix"
$ \case
ErrNoLexOrder {} -> Nothing,
NegTest
"f x := f x is not terminating"
"."
- "ToEmpty.mjuvix"
+ "ToEmpty.juvix"
$ \case
ErrNoLexOrder {} -> Nothing,
NegTest
"Tree"
"."
- "Data/Tree.mjuvix"
+ "Data/Tree.juvix"
$ \case
ErrNoLexOrder {} -> Nothing,
NegTest
"Quicksort is not terminating"
"."
- "Data/QuickSort.mjuvix"
+ "Data/QuickSort.juvix"
$ \case
ErrNoLexOrder {} -> Nothing
]
diff --git a/test/Termination/Positive.hs b/test/Termination/Positive.hs
index d6a442acc..10b9d2102 100644
--- a/test/Termination/Positive.hs
+++ b/test/Termination/Positive.hs
@@ -1,7 +1,7 @@
module Termination.Positive where
import Base
-import MiniJuvix.Pipeline
+import Juvix.Pipeline
import Termination.Negative qualified as N
data PosTest = PosTest
@@ -46,15 +46,15 @@ testDescrFlag N.NegTest {..} =
tests :: [PosTest]
tests =
- [ PosTest "Ackerman nice def. is terminating" "." "Ack.mjuvix",
- PosTest "Recursive functions on Lists" "." "Data/List.mjuvix"
+ [ PosTest "Ackerman nice def. is terminating" "." "Ack.juvix",
+ PosTest "Recursive functions on Lists" "." "Data/List.juvix"
]
testsWithKeyword :: [PosTest]
testsWithKeyword =
- [ PosTest "terminating added to fx:=fx" "." "ToEmpty.mjuvix",
- PosTest "terminating for all functions in the mutual block" "." "Mutual.mjuvix",
- PosTest "Undefined is terminating by assumption" "." "Undefined.mjuvix"
+ [ PosTest "terminating added to fx:=fx" "." "ToEmpty.juvix",
+ PosTest "terminating for all functions in the mutual block" "." "Mutual.juvix",
+ PosTest "Undefined is terminating by assumption" "." "Undefined.juvix"
]
negTests :: [N.NegTest]
diff --git a/test/TypeCheck/Negative.hs b/test/TypeCheck/Negative.hs
index d5712101d..3e1f89243 100644
--- a/test/TypeCheck/Negative.hs
+++ b/test/TypeCheck/Negative.hs
@@ -1,8 +1,8 @@
module TypeCheck.Negative (allTests) where
import Base
-import MiniJuvix.Pipeline
-import MiniJuvix.Syntax.MicroJuvix.Error
+import Juvix.Pipeline
+import Juvix.Syntax.MicroJuvix.Error
type FailMsg = String
@@ -22,7 +22,7 @@ testDescr NegTest {..} =
_testAssertion = Single $ do
let entryPoint = defaultEntryPoint _file
result <- runIOEither (upToMicroJuvixTyped entryPoint)
- case mapLeft fromMiniJuvixError result of
+ case mapLeft fromJuvixError result of
Left (Just tyError) -> whenJust (_checkErr tyError) assertFailure
Left Nothing -> assertFailure "The type checker did not find an error."
Right _ -> assertFailure "An error ocurred but it was not in the type checker."
@@ -45,56 +45,56 @@ tests =
[ NegTest
"Constructor in pattern type error"
"MicroJuvix"
- "PatternConstructor.mjuvix"
+ "PatternConstructor.juvix"
$ \case
ErrWrongConstructorType {} -> Nothing
_ -> wrongError,
NegTest
"Type vs inferred type mismatch"
"MicroJuvix"
- "WrongType.mjuvix"
+ "WrongType.juvix"
$ \case
ErrWrongType {} -> Nothing
_ -> wrongError,
NegTest
"Function application with non-function type"
"MicroJuvix"
- "ExpectedFunctionType.mjuvix"
+ "ExpectedFunctionType.juvix"
$ \case
ErrExpectedFunctionType {} -> Nothing
_ -> wrongError,
NegTest
"Unsolved hole"
"MicroJuvix"
- "UnsolvedMeta.mjuvix"
+ "UnsolvedMeta.juvix"
$ \case
ErrUnsolvedMeta {} -> Nothing
_ -> wrongError,
NegTest
"Multiple type errors are captured"
"MicroJuvix"
- "MultiWrongType.mjuvix"
+ "MultiWrongType.juvix"
$ \case
ErrWrongType {} -> Nothing
_ -> wrongError,
NegTest
"Wrong return type name for a constructor of a simple data type"
"MicroJuvix"
- "WrongReturnType.mjuvix"
+ "WrongReturnType.juvix"
$ \case
ErrWrongReturnType {} -> Nothing
_ -> wrongError,
NegTest
"Too few arguments for the return type of a constructor"
"MicroJuvix"
- "WrongReturnTypeTooFewArguments.mjuvix"
+ "WrongReturnTypeTooFewArguments.juvix"
$ \case
ErrWrongReturnType {} -> Nothing
_ -> wrongError,
NegTest
"Too many arguments for the return type of a constructor"
"MicroJuvix"
- "WrongReturnTypeTooManyArguments.mjuvix"
+ "WrongReturnTypeTooManyArguments.juvix"
$ \case
ErrWrongReturnType {} -> Nothing
_ -> wrongError
diff --git a/test/TypeCheck/Positive.hs b/test/TypeCheck/Positive.hs
index 2e2a91643..5dde0e2e9 100644
--- a/test/TypeCheck/Positive.hs
+++ b/test/TypeCheck/Positive.hs
@@ -1,7 +1,7 @@
module TypeCheck.Positive where
import Base
-import MiniJuvix.Pipeline
+import Juvix.Pipeline
data PosTest = PosTest
{ _name :: String,
@@ -34,65 +34,65 @@ tests =
[ PosTest
"Simple"
"MicroJuvix"
- "Simple.mjuvix",
+ "Simple.juvix",
PosTest
"Literal String matches any type"
"MicroJuvix"
- "LiteralString.mjuvix",
+ "LiteralString.juvix",
PosTest
"Box type"
"MicroJuvix"
- "Box.mjuvix",
+ "Box.juvix",
PosTest
"Literal Int matches any type"
"MicroJuvix"
- "LiteralInt.mjuvix",
+ "LiteralInt.juvix",
PosTest
"GHC backend Hello World"
"MiniHaskell"
- "HelloWorld.mjuvix",
+ "HelloWorld.juvix",
PosTest
"PolySimpleFungibleToken"
"FullExamples"
- "SimpleFungibleTokenImplicit.mjuvix",
+ "SimpleFungibleTokenImplicit.juvix",
PosTest
"GHC backend MonoSimpleFungibleToken"
"FullExamples"
- "MonoSimpleFungibleToken.mjuvix",
+ "MonoSimpleFungibleToken.juvix",
PosTest
"Axiom"
"."
- "Axiom.mjuvix",
+ "Axiom.juvix",
PosTest
"Inductive"
"."
- "Inductive.mjuvix",
+ "Inductive.juvix",
PosTest
"Operators"
"."
- "Operators.mjuvix",
+ "Operators.juvix",
PosTest
"Holes in type signature"
"MicroJuvix"
- "HoleInSignature.mjuvix",
+ "HoleInSignature.juvix",
PosTest
"Polymorphism and higher rank functions"
"."
- "Polymorphism.mjuvix",
+ "Polymorphism.juvix",
PosTest
"Polymorphism and higher rank functions with explicit holes"
"."
- "PolymorphismHoles.mjuvix",
+ "PolymorphismHoles.juvix",
PosTest
"Implicit arguments"
"MicroJuvix"
- "Implicit.mjuvix",
+ "Implicit.juvix",
PosTest
"Import a builtin multiple times"
"BuiltinsMultiImport"
- "Input.mjuvix",
+ "Input.juvix",
PosTest
"open import a builtin multiple times"
"BuiltinsMultiOpenImport"
- "Input.mjuvix"
+ "Input.juvix"
]
diff --git a/tests/CLI/Commands/compile.test b/tests/CLI/Commands/compile.test
index 2adf79c2c..d07cff540 100644
--- a/tests/CLI/Commands/compile.test
+++ b/tests/CLI/Commands/compile.test
@@ -1,8 +1,8 @@
-$ minijuvix compile --help
-> /Usage\: minijuvix compile \[\-t\|\-\-target TARGET\] \[\-r\|\-\-runtime RUNTIME\]
- \[\-o\|\-\-output OUTPUT_FILE\] \[MINIJUVIX_FILE\].*/
+$ juvix compile --help
+> /Usage: juvix compile \[\-t\|\-\-target TARGET\] \[\-r\|\-\-runtime RUNTIME\]
+ \[\-o\|\-\-output OUTPUT_FILE\] \[JUVIX_FILE\].*/
>= 0
-$ cd tests/positive/MiniC/HelloWorld && minijuvix compile Input.mjuvix -o hello.wasm
+$ cd tests/positive/MiniC/HelloWorld && juvix compile Input.juvix -o hello.wasm
>
>= 0
diff --git a/tests/CLI/Commands/html.test b/tests/CLI/Commands/html.test
index 04df229a5..77eab0833 100644
--- a/tests/CLI/Commands/html.test
+++ b/tests/CLI/Commands/html.test
@@ -1,16 +1,16 @@
-$ minijuvix html
+$ juvix html
> /Provide.*/
>= 1
-$ cd examples/milestone/Lib/ && minijuvix html --no-stdlib Prelude.mjuvix && cat html/Prelude.html
+$ cd examples/milestone/ValidityPredicates/ && juvix html --no-stdlib SimpleFungibleToken.juvix && cat html/SimpleFungibleToken.html
> /.*/
>= 0
-$ rm -rf examples/html && minijuvix html --no-stdlib examples/milestone/Lib/Prelude.mjuvix --output-dir=./../../html && [ -d examples/html/assets ] && [ -f examples/html/Prelude.html ]
+$ rm -rf examples/html && juvix html --no-stdlib examples/milestone/ValidityPredicates/SimpleFungibleToken.juvix --output-dir=./../../html && [ -d examples/html/assets ] && [ -f examples/html/SimpleFungibleToken.html ]
>
-Writing Prelude.html
+Writing SimpleFungibleToken.html
>= 0
-$ rm -rf examples/html && minijuvix html --no-stdlib examples/milestone/Lib/Prelude.mjuvix --recursive --output-dir=./../../html && (ls examples/html | wc -l) && cd examples/html && [ -f Data.String.html ] && [ -f Data.Maybe.html ] && [ -f Data.Int.html ] && [ -f System.IO.html ] && [ -f Data.List.html ] && [ -f Data.Pair.html ] && [ -f Data.Bool.html ] && [ -f Prelude.html ] && [ -f assets/highlight.js ] && [ -f assets/source-ayu-light.css ] && [ -f assets/source-nord.css ]
+$ rm -rf examples/html && juvix html --no-stdlib examples/milestone/ValidityPredicates/SimpleFungibleToken.juvix --recursive --output-dir=./../../html && (ls examples/html | wc -l) && cd examples/html && [ -f Data.String.html ] && [ -f Data.Maybe.html ] && [ -f Data.Int.html ] && [ -f System.IO.html ] && [ -f Data.List.html ] && [ -f Data.Nat.html ] && [ -f Data.Pair.html ] && [ -f Data.Bool.html ] && [ -f Prelude.html ]&& [ -f Anoma.Base.html ] && [ -f SimpleFungibleToken.html ] && [ -f assets/highlight.js ] && [ -f assets/source-ayu-light.css ] && [ -f assets/source-nord.css ]
> /Writing.*/
>= 0
diff --git a/tests/CLI/Commands/microjuvix.test b/tests/CLI/Commands/microjuvix.test
index b76856118..fc66dac40 100644
--- a/tests/CLI/Commands/microjuvix.test
+++ b/tests/CLI/Commands/microjuvix.test
@@ -1,37 +1,37 @@
-$ minijuvix microjuvix
->2 /Usage: minijuvix microjuvix .*/
+$ juvix microjuvix
+>2 /Usage: juvix microjuvix .*/
>= 1
-$ minijuvix microjuvix --help
-> /Usage: minijuvix microjuvix COMMAND \[MINIJUVIX_FILE\].*/
+$ juvix microjuvix --help
+> /Usage: juvix microjuvix COMMAND \[JUVIX_FILE\].*/
>= 0
-$ minijuvix microjuvix pretty
+$ juvix microjuvix pretty
> /Provide.*/
>= 1
-$ minijuvix microjuvix typecheck
+$ juvix microjuvix typecheck
> /Provide.*/
>= 1
-$ minijuvix microjuvix typecheck tests/positive/MicroJuvix/Simple.mjuvix
+$ juvix microjuvix typecheck tests/positive/MicroJuvix/Simple.juvix
>
Well done! It type checks
>= 0
-$ minijuvix --only-errors microjuvix typecheck tests/positive/MicroJuvix/Simple.mjuvix
+$ juvix --only-errors microjuvix typecheck tests/positive/MicroJuvix/Simple.juvix
>
>= 0
-$ minijuvix microjuvix typecheck --only-errors tests/positive/MicroJuvix/Simple.mjuvix
+$ juvix microjuvix typecheck --only-errors tests/positive/MicroJuvix/Simple.juvix
>
>= 0
-$ minijuvix microjuvix typecheck tests/positive/MicroJuvix/Simple.mjuvix --only-errors
+$ juvix microjuvix typecheck tests/positive/MicroJuvix/Simple.juvix --only-errors
>
>= 0
-$ minijuvix microjuvix typecheck tests/negative/MicroJuvix/MultiWrongType.mjuvix --no-colors
->2 /(.+)\/([^\/]+)\.mjuvix\:11\:7\-8\: error.*
+$ juvix microjuvix typecheck tests/negative/MicroJuvix/MultiWrongType.juvix --no-colors
+>2 /(.+)\/([^\/]+)\.juvix\:11\:7\-8\: error.*
.*/
>= 1
diff --git a/tests/CLI/Commands/minic.test b/tests/CLI/Commands/minic.test
index 6f8f08da9..defbc85ca 100644
--- a/tests/CLI/Commands/minic.test
+++ b/tests/CLI/Commands/minic.test
@@ -1,3 +1,3 @@
-$ minijuvix minic
+$ juvix minic
> /Provide.*/
>= 1
diff --git a/tests/CLI/Commands/minihaskell.test b/tests/CLI/Commands/minihaskell.test
index a6882a804..2f8dd7df5 100644
--- a/tests/CLI/Commands/minihaskell.test
+++ b/tests/CLI/Commands/minihaskell.test
@@ -1,3 +1,3 @@
-$ minijuvix minihaskell
+$ juvix minihaskell
> /Provide.*/
>= 1
diff --git a/tests/CLI/Commands/monojuvix.test b/tests/CLI/Commands/monojuvix.test
index 359407853..b8d175765 100644
--- a/tests/CLI/Commands/monojuvix.test
+++ b/tests/CLI/Commands/monojuvix.test
@@ -1,3 +1,3 @@
-$ minijuvix monojuvix
+$ juvix monojuvix
> /Provide.*/
>= 1
diff --git a/tests/CLI/Commands/parse.test b/tests/CLI/Commands/parse.test
index 72d08669b..6f60ba07b 100644
--- a/tests/CLI/Commands/parse.test
+++ b/tests/CLI/Commands/parse.test
@@ -1,14 +1,14 @@
-$ minijuvix parse
+$ juvix parse
> /Provide.*/
>= 1
-$ minijuvix parse tests/positive/Axiom.mjuvix
+$ juvix parse tests/positive/Axiom.juvix
> /Module
*/
>2
>= 0
-$ minijuvix parse tests/positive/Axiom.mjuvix --no-pretty-show
+$ juvix parse tests/positive/Axiom.juvix --no-pretty-show
> /Module \{.*/
>2
>= 0
diff --git a/tests/CLI/Commands/root.test b/tests/CLI/Commands/root.test
index ef7463052..5702b1b7c 100644
--- a/tests/CLI/Commands/root.test
+++ b/tests/CLI/Commands/root.test
@@ -1,3 +1,3 @@
-$ minijuvix root
+$ juvix root
> /(.+)\/([^\/]+)/
>= 0
diff --git a/tests/CLI/Commands/scope.test b/tests/CLI/Commands/scope.test
index 2e294692d..a224f3ff2 100644
--- a/tests/CLI/Commands/scope.test
+++ b/tests/CLI/Commands/scope.test
@@ -1,3 +1,3 @@
-$ minijuvix scope
+$ juvix scope
> /Provide.*/
>= 1
diff --git a/tests/CLI/Commands/termination.test b/tests/CLI/Commands/termination.test
index cfe8fec96..693d60d00 100644
--- a/tests/CLI/Commands/termination.test
+++ b/tests/CLI/Commands/termination.test
@@ -1,24 +1,23 @@
-$ minijuvix termination
->2 /Usage\: minijuvix termination COMMAND \[MINIJUVIX_FILE\].*/
+$ juvix termination
+>2 /Usage\: juvix termination COMMAND \[JUVIX_FILE\].*/
>= 1
-$ minijuvix termination calls
+$ juvix termination calls
> /Provide.*/
>2
>=1
-$ minijuvix termination graph
+$ juvix termination graph
> /Provide.*/
>2
>= 1
-$ minijuvix termination calls --help
-> /Usage\: minijuvix termination calls \[MINIJUVIX_FILE\]
- \[\-f\|\-\-function fun1 fun2 ...\]
- \[\-d\|\-\-show\-decreasing\-args ARG\].*/
+$ juvix termination calls --help
+> /Usage\: juvix termination calls \[JUVIX_FILE\] \[\-f\|\-\-function fun1 fun2 ...\]
+ \[\-d\|\-\-show\-decreasing\-args ARG\].*/
>= 0
-$ minijuvix termination graph --help
-> /Usage\: minijuvix termination graph \[MINIJUVIX_FILE\] \[\-f\|\-\-function ARG\].*/
+$ juvix termination graph --help
+> /Usage\: juvix termination graph \[JUVIX_FILE\] \[\-f\|\-\-function ARG\].*/
>= 0
diff --git a/tests/CLI/help.test b/tests/CLI/help.test
index a717ce45f..c3d3af91f 100644
--- a/tests/CLI/help.test
+++ b/tests/CLI/help.test
@@ -1,13 +1,10 @@
-$ minijuvix --help
-> /.*
-Usage\: minijuvix \(\(\-v\|\-\-version\) \| \(\-h\|\-\-help\) \| \[\-\-no\-colors\] \[\-\-show\-name\-ids\]
- \[\-\-only\-errors\] \[\-\-no\-termination\] \[\-\-no\-stdlib\] COMMAND\)
-.*
-/
+$ juvix --help
+> /Usage: juvix \(\(\-v\|\-\-version\) \| \(\-h\|\-\-help\) \| \[\-\-no\-colors\] \[\-\-show\-name\-ids\]
+ \[\-\-only\-errors\] \[\-\-no\-termination\] \[\-\-no\-stdlib\] COMMAND\).*/
>= 0
-$ minijuvix --help --other
+$ juvix --help --other
>2 /Invalid option `--other'
*/
>= 1
diff --git a/tests/CLI/version.test b/tests/CLI/version.test
index e2eefac54..b32637867 100644
--- a/tests/CLI/version.test
+++ b/tests/CLI/version.test
@@ -1,5 +1,5 @@
-$ minijuvix --version
-> /Minijuvix version 0.2.0-([a-f0-9]{7})
+$ juvix --version
+> /Juvix version 0.2.1-([a-f0-9]{7})
Branch: .*
Commit: .*
Date: .*
diff --git a/tests/negative/230/Foo.mjuvix b/tests/negative/230/Foo.juvix
similarity index 100%
rename from tests/negative/230/Foo.mjuvix
rename to tests/negative/230/Foo.juvix
diff --git a/tests/negative/230/Foo/Data/Bool.mjuvix b/tests/negative/230/Foo/Data/Bool.juvix
similarity index 100%
rename from tests/negative/230/Foo/Data/Bool.mjuvix
rename to tests/negative/230/Foo/Data/Bool.juvix
diff --git a/tests/negative/230/Prod.mjuvix b/tests/negative/230/Prod.juvix
similarity index 100%
rename from tests/negative/230/Prod.mjuvix
rename to tests/negative/230/Prod.juvix
diff --git a/examples/milestone/ValidityPredicates/minijuvix.yaml b/tests/negative/230/juvix.yaml
similarity index 100%
rename from examples/milestone/ValidityPredicates/minijuvix.yaml
rename to tests/negative/230/juvix.yaml
diff --git a/tests/negative/AmbiguousConstructor.mjuvix b/tests/negative/AmbiguousConstructor.juvix
similarity index 100%
rename from tests/negative/AmbiguousConstructor.mjuvix
rename to tests/negative/AmbiguousConstructor.juvix
diff --git a/tests/negative/AmbiguousExport.mjuvix b/tests/negative/AmbiguousExport.juvix
similarity index 100%
rename from tests/negative/AmbiguousExport.mjuvix
rename to tests/negative/AmbiguousExport.juvix
diff --git a/tests/negative/AmbiguousModule.mjuvix b/tests/negative/AmbiguousModule.juvix
similarity index 100%
rename from tests/negative/AmbiguousModule.mjuvix
rename to tests/negative/AmbiguousModule.juvix
diff --git a/tests/negative/AmbiguousSymbol.mjuvix b/tests/negative/AmbiguousSymbol.juvix
similarity index 100%
rename from tests/negative/AmbiguousSymbol.mjuvix
rename to tests/negative/AmbiguousSymbol.juvix
diff --git a/tests/negative/AppLeftImplicit.mjuvix b/tests/negative/AppLeftImplicit.juvix
similarity index 100%
rename from tests/negative/AppLeftImplicit.mjuvix
rename to tests/negative/AppLeftImplicit.juvix
diff --git a/tests/negative/BindGroupConflict/Clause.mjuvix b/tests/negative/BindGroupConflict/Clause.juvix
similarity index 100%
rename from tests/negative/BindGroupConflict/Clause.mjuvix
rename to tests/negative/BindGroupConflict/Clause.juvix
diff --git a/tests/negative/BindGroupConflict/Lambda.mjuvix b/tests/negative/BindGroupConflict/Lambda.juvix
similarity index 100%
rename from tests/negative/BindGroupConflict/Lambda.mjuvix
rename to tests/negative/BindGroupConflict/Lambda.juvix
diff --git a/tests/negative/230/minijuvix.yaml b/tests/negative/BindGroupConflict/juvix.yaml
similarity index 100%
rename from tests/negative/230/minijuvix.yaml
rename to tests/negative/BindGroupConflict/juvix.yaml
diff --git a/tests/negative/CompileBlocks/MultipleCompileBlockSameName.mjuvix b/tests/negative/CompileBlocks/MultipleCompileBlockSameName.juvix
similarity index 100%
rename from tests/negative/CompileBlocks/MultipleCompileBlockSameName.mjuvix
rename to tests/negative/CompileBlocks/MultipleCompileBlockSameName.juvix
diff --git a/tests/negative/CompileBlocks/MultipleCompileRuleSameBackend.mjuvix b/tests/negative/CompileBlocks/MultipleCompileRuleSameBackend.juvix
similarity index 100%
rename from tests/negative/CompileBlocks/MultipleCompileRuleSameBackend.mjuvix
rename to tests/negative/CompileBlocks/MultipleCompileRuleSameBackend.juvix
diff --git a/tests/negative/CompileBlocks/Sample/Definitions.mjuvix b/tests/negative/CompileBlocks/Sample/Definitions.juvix
similarity index 100%
rename from tests/negative/CompileBlocks/Sample/Definitions.mjuvix
rename to tests/negative/CompileBlocks/Sample/Definitions.juvix
diff --git a/tests/negative/CompileBlocks/WrongKindExpressionCompileBlock.mjuvix b/tests/negative/CompileBlocks/WrongKindExpressionCompileBlock.juvix
similarity index 100%
rename from tests/negative/CompileBlocks/WrongKindExpressionCompileBlock.mjuvix
rename to tests/negative/CompileBlocks/WrongKindExpressionCompileBlock.juvix
diff --git a/tests/negative/CompileBlocks/WrongLocationCompileBlock.mjuvix b/tests/negative/CompileBlocks/WrongLocationCompileBlock.juvix
similarity index 100%
rename from tests/negative/CompileBlocks/WrongLocationCompileBlock.mjuvix
rename to tests/negative/CompileBlocks/WrongLocationCompileBlock.juvix
diff --git a/tests/negative/BindGroupConflict/minijuvix.yaml b/tests/negative/CompileBlocks/juvix.yaml
similarity index 100%
rename from tests/negative/BindGroupConflict/minijuvix.yaml
rename to tests/negative/CompileBlocks/juvix.yaml
diff --git a/tests/negative/DuplicateFixity.mjuvix b/tests/negative/DuplicateFixity.juvix
similarity index 100%
rename from tests/negative/DuplicateFixity.mjuvix
rename to tests/negative/DuplicateFixity.juvix
diff --git a/tests/negative/ImportCycle/A.mjuvix b/tests/negative/ImportCycle/A.juvix
similarity index 100%
rename from tests/negative/ImportCycle/A.mjuvix
rename to tests/negative/ImportCycle/A.juvix
diff --git a/tests/negative/ImportCycle/B.mjuvix b/tests/negative/ImportCycle/B.juvix
similarity index 100%
rename from tests/negative/ImportCycle/B.mjuvix
rename to tests/negative/ImportCycle/B.juvix
diff --git a/tests/negative/ImportCycle/C.mjuvix b/tests/negative/ImportCycle/C.juvix
similarity index 100%
rename from tests/negative/ImportCycle/C.mjuvix
rename to tests/negative/ImportCycle/C.juvix
diff --git a/tests/negative/ImportCycle/D.mjuvix b/tests/negative/ImportCycle/D.juvix
similarity index 100%
rename from tests/negative/ImportCycle/D.mjuvix
rename to tests/negative/ImportCycle/D.juvix
diff --git a/tests/negative/CompileBlocks/minijuvix.yaml b/tests/negative/ImportCycle/juvix.yaml
similarity index 100%
rename from tests/negative/CompileBlocks/minijuvix.yaml
rename to tests/negative/ImportCycle/juvix.yaml
diff --git a/tests/negative/InfixError.mjuvix b/tests/negative/InfixError.juvix
similarity index 100%
rename from tests/negative/InfixError.mjuvix
rename to tests/negative/InfixError.juvix
diff --git a/tests/negative/InfixErrorP.mjuvix b/tests/negative/InfixErrorP.juvix
similarity index 100%
rename from tests/negative/InfixErrorP.mjuvix
rename to tests/negative/InfixErrorP.juvix
diff --git a/tests/negative/LacksFunctionClause.mjuvix b/tests/negative/LacksFunctionClause.juvix
similarity index 100%
rename from tests/negative/LacksFunctionClause.mjuvix
rename to tests/negative/LacksFunctionClause.juvix
diff --git a/tests/negative/LacksTypeSig.mjuvix b/tests/negative/LacksTypeSig.juvix
similarity index 100%
rename from tests/negative/LacksTypeSig.mjuvix
rename to tests/negative/LacksTypeSig.juvix
diff --git a/tests/negative/MicroJuvix/ExpectedExplicitArgument.mjuvix b/tests/negative/MicroJuvix/ExpectedExplicitArgument.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/ExpectedExplicitArgument.mjuvix
rename to tests/negative/MicroJuvix/ExpectedExplicitArgument.juvix
diff --git a/tests/negative/MicroJuvix/ExpectedExplicitPattern.mjuvix b/tests/negative/MicroJuvix/ExpectedExplicitPattern.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/ExpectedExplicitPattern.mjuvix
rename to tests/negative/MicroJuvix/ExpectedExplicitPattern.juvix
diff --git a/tests/negative/MicroJuvix/ExpectedFunctionType.mjuvix b/tests/negative/MicroJuvix/ExpectedFunctionType.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/ExpectedFunctionType.mjuvix
rename to tests/negative/MicroJuvix/ExpectedFunctionType.juvix
diff --git a/tests/negative/MicroJuvix/FunctionApplied.mjuvix b/tests/negative/MicroJuvix/FunctionApplied.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/FunctionApplied.mjuvix
rename to tests/negative/MicroJuvix/FunctionApplied.juvix
diff --git a/tests/negative/MicroJuvix/FunctionPattern.mjuvix b/tests/negative/MicroJuvix/FunctionPattern.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/FunctionPattern.mjuvix
rename to tests/negative/MicroJuvix/FunctionPattern.juvix
diff --git a/tests/negative/MicroJuvix/LhsTooManyPatterns.mjuvix b/tests/negative/MicroJuvix/LhsTooManyPatterns.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/LhsTooManyPatterns.mjuvix
rename to tests/negative/MicroJuvix/LhsTooManyPatterns.juvix
diff --git a/tests/negative/MicroJuvix/MultiWrongType.mjuvix b/tests/negative/MicroJuvix/MultiWrongType.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/MultiWrongType.mjuvix
rename to tests/negative/MicroJuvix/MultiWrongType.juvix
diff --git a/tests/negative/MicroJuvix/PatternConstructor.mjuvix b/tests/negative/MicroJuvix/PatternConstructor.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/PatternConstructor.mjuvix
rename to tests/negative/MicroJuvix/PatternConstructor.juvix
diff --git a/tests/negative/MicroJuvix/TooManyArguments.mjuvix b/tests/negative/MicroJuvix/TooManyArguments.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/TooManyArguments.mjuvix
rename to tests/negative/MicroJuvix/TooManyArguments.juvix
diff --git a/tests/negative/MicroJuvix/UnsolvedMeta.mjuvix b/tests/negative/MicroJuvix/UnsolvedMeta.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/UnsolvedMeta.mjuvix
rename to tests/negative/MicroJuvix/UnsolvedMeta.juvix
diff --git a/tests/negative/MicroJuvix/WrongConstructorArity.mjuvix b/tests/negative/MicroJuvix/WrongConstructorArity.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/WrongConstructorArity.mjuvix
rename to tests/negative/MicroJuvix/WrongConstructorArity.juvix
diff --git a/tests/negative/MicroJuvix/WrongReturnType.mjuvix b/tests/negative/MicroJuvix/WrongReturnType.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/WrongReturnType.mjuvix
rename to tests/negative/MicroJuvix/WrongReturnType.juvix
diff --git a/tests/negative/MicroJuvix/WrongReturnTypeParameters.mjuvix b/tests/negative/MicroJuvix/WrongReturnTypeParameters.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/WrongReturnTypeParameters.mjuvix
rename to tests/negative/MicroJuvix/WrongReturnTypeParameters.juvix
diff --git a/tests/negative/MicroJuvix/WrongReturnTypeTooFewArguments.mjuvix b/tests/negative/MicroJuvix/WrongReturnTypeTooFewArguments.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/WrongReturnTypeTooFewArguments.mjuvix
rename to tests/negative/MicroJuvix/WrongReturnTypeTooFewArguments.juvix
diff --git a/tests/negative/MicroJuvix/WrongReturnTypeTooManyArguments.mjuvix b/tests/negative/MicroJuvix/WrongReturnTypeTooManyArguments.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/WrongReturnTypeTooManyArguments.mjuvix
rename to tests/negative/MicroJuvix/WrongReturnTypeTooManyArguments.juvix
diff --git a/tests/negative/MicroJuvix/WrongType.mjuvix b/tests/negative/MicroJuvix/WrongType.juvix
similarity index 100%
rename from tests/negative/MicroJuvix/WrongType.mjuvix
rename to tests/negative/MicroJuvix/WrongType.juvix
diff --git a/tests/negative/ImportCycle/minijuvix.yaml b/tests/negative/MicroJuvix/juvix.yaml
similarity index 100%
rename from tests/negative/ImportCycle/minijuvix.yaml
rename to tests/negative/MicroJuvix/juvix.yaml
diff --git a/tests/negative/ModuleNotInScope.mjuvix b/tests/negative/ModuleNotInScope.juvix
similarity index 100%
rename from tests/negative/ModuleNotInScope.mjuvix
rename to tests/negative/ModuleNotInScope.juvix
diff --git a/tests/negative/MultipleDeclarations.mjuvix b/tests/negative/MultipleDeclarations.juvix
similarity index 100%
rename from tests/negative/MultipleDeclarations.mjuvix
rename to tests/negative/MultipleDeclarations.juvix
diff --git a/tests/negative/MultipleExportConflict.mjuvix b/tests/negative/MultipleExportConflict.juvix
similarity index 100%
rename from tests/negative/MultipleExportConflict.mjuvix
rename to tests/negative/MultipleExportConflict.juvix
diff --git a/tests/negative/NotInScope.mjuvix b/tests/negative/NotInScope.juvix
similarity index 100%
rename from tests/negative/NotInScope.mjuvix
rename to tests/negative/NotInScope.juvix
diff --git a/tests/negative/QualSymNotInScope.mjuvix b/tests/negative/QualSymNotInScope.juvix
similarity index 100%
rename from tests/negative/QualSymNotInScope.mjuvix
rename to tests/negative/QualSymNotInScope.juvix
diff --git a/tests/negative/StdlibConflict/Input.mjuvix b/tests/negative/StdlibConflict/Input.juvix
similarity index 100%
rename from tests/negative/StdlibConflict/Input.mjuvix
rename to tests/negative/StdlibConflict/Input.juvix
diff --git a/tests/negative/StdlibConflict/Stdlib/Data/Bool.mjuvix b/tests/negative/StdlibConflict/Stdlib/Data/Bool.juvix
similarity index 100%
rename from tests/negative/StdlibConflict/Stdlib/Data/Bool.mjuvix
rename to tests/negative/StdlibConflict/Stdlib/Data/Bool.juvix
diff --git a/tests/negative/MicroJuvix/minijuvix.yaml b/tests/negative/StdlibConflict/juvix.yaml
similarity index 100%
rename from tests/negative/MicroJuvix/minijuvix.yaml
rename to tests/negative/StdlibConflict/juvix.yaml
diff --git a/tests/negative/Termination/Data/Bool.mjuvix b/tests/negative/Termination/Data/Bool.juvix
similarity index 100%
rename from tests/negative/Termination/Data/Bool.mjuvix
rename to tests/negative/Termination/Data/Bool.juvix
diff --git a/tests/negative/Termination/Data/Nat.mjuvix b/tests/negative/Termination/Data/Nat.juvix
similarity index 100%
rename from tests/negative/Termination/Data/Nat.mjuvix
rename to tests/negative/Termination/Data/Nat.juvix
diff --git a/tests/negative/Termination/Data/QuickSort.mjuvix b/tests/negative/Termination/Data/QuickSort.juvix
similarity index 100%
rename from tests/negative/Termination/Data/QuickSort.mjuvix
rename to tests/negative/Termination/Data/QuickSort.juvix
diff --git a/tests/negative/Termination/Data/Tree.mjuvix b/tests/negative/Termination/Data/Tree.juvix
similarity index 100%
rename from tests/negative/Termination/Data/Tree.mjuvix
rename to tests/negative/Termination/Data/Tree.juvix
diff --git a/tests/negative/Termination/Mutual.mjuvix b/tests/negative/Termination/Mutual.juvix
similarity index 100%
rename from tests/negative/Termination/Mutual.mjuvix
rename to tests/negative/Termination/Mutual.juvix
diff --git a/tests/negative/Termination/Ord.mjuvix b/tests/negative/Termination/Ord.juvix
similarity index 100%
rename from tests/negative/Termination/Ord.mjuvix
rename to tests/negative/Termination/Ord.juvix
diff --git a/tests/negative/Termination/TerminatingF.mjuvix b/tests/negative/Termination/TerminatingF.juvix
similarity index 100%
rename from tests/negative/Termination/TerminatingF.mjuvix
rename to tests/negative/Termination/TerminatingF.juvix
diff --git a/tests/negative/Termination/TerminatingG.mjuvix b/tests/negative/Termination/TerminatingG.juvix
similarity index 100%
rename from tests/negative/Termination/TerminatingG.mjuvix
rename to tests/negative/Termination/TerminatingG.juvix
diff --git a/tests/negative/Termination/ToEmpty.mjuvix b/tests/negative/Termination/ToEmpty.juvix
similarity index 100%
rename from tests/negative/Termination/ToEmpty.mjuvix
rename to tests/negative/Termination/ToEmpty.juvix
diff --git a/tests/negative/StdlibConflict/minijuvix.yaml b/tests/negative/Termination/juvix.yaml
similarity index 100%
rename from tests/negative/StdlibConflict/minijuvix.yaml
rename to tests/negative/Termination/juvix.yaml
diff --git a/tests/negative/UnusedOperatorDef.mjuvix b/tests/negative/UnusedOperatorDef.juvix
similarity index 100%
rename from tests/negative/UnusedOperatorDef.mjuvix
rename to tests/negative/UnusedOperatorDef.juvix
diff --git a/tests/negative/WrongModuleName.mjuvix b/tests/negative/WrongModuleName.juvix
similarity index 100%
rename from tests/negative/WrongModuleName.mjuvix
rename to tests/negative/WrongModuleName.juvix
diff --git a/tests/negative/Termination/minijuvix.yaml b/tests/negative/juvix.yaml
similarity index 100%
rename from tests/negative/Termination/minijuvix.yaml
rename to tests/negative/juvix.yaml
diff --git a/tests/positive/Axiom.mjuvix b/tests/positive/Axiom.juvix
similarity index 100%
rename from tests/positive/Axiom.mjuvix
rename to tests/positive/Axiom.juvix
diff --git a/tests/positive/BuiltinsMultiImport/A.mjuvix b/tests/positive/BuiltinsMultiImport/A.juvix
similarity index 100%
rename from tests/positive/BuiltinsMultiImport/A.mjuvix
rename to tests/positive/BuiltinsMultiImport/A.juvix
diff --git a/tests/positive/BuiltinsMultiImport/Input.mjuvix b/tests/positive/BuiltinsMultiImport/Input.juvix
similarity index 100%
rename from tests/positive/BuiltinsMultiImport/Input.mjuvix
rename to tests/positive/BuiltinsMultiImport/Input.juvix
diff --git a/tests/positive/BuiltinsMultiImport/Nat.mjuvix b/tests/positive/BuiltinsMultiImport/Nat.juvix
similarity index 100%
rename from tests/positive/BuiltinsMultiImport/Nat.mjuvix
rename to tests/positive/BuiltinsMultiImport/Nat.juvix
diff --git a/tests/negative/minijuvix.yaml b/tests/positive/BuiltinsMultiImport/juvix.yaml
similarity index 100%
rename from tests/negative/minijuvix.yaml
rename to tests/positive/BuiltinsMultiImport/juvix.yaml
diff --git a/tests/positive/BuiltinsMultiOpenImport/A.mjuvix b/tests/positive/BuiltinsMultiOpenImport/A.juvix
similarity index 100%
rename from tests/positive/BuiltinsMultiOpenImport/A.mjuvix
rename to tests/positive/BuiltinsMultiOpenImport/A.juvix
diff --git a/tests/positive/BuiltinsMultiOpenImport/Input.mjuvix b/tests/positive/BuiltinsMultiOpenImport/Input.juvix
similarity index 100%
rename from tests/positive/BuiltinsMultiOpenImport/Input.mjuvix
rename to tests/positive/BuiltinsMultiOpenImport/Input.juvix
diff --git a/tests/positive/BuiltinsMultiOpenImport/Nat.mjuvix b/tests/positive/BuiltinsMultiOpenImport/Nat.juvix
similarity index 100%
rename from tests/positive/BuiltinsMultiOpenImport/Nat.mjuvix
rename to tests/positive/BuiltinsMultiOpenImport/Nat.juvix
diff --git a/tests/positive/BuiltinsMultiImport/minijuvix.yaml b/tests/positive/BuiltinsMultiOpenImport/juvix.yaml
similarity index 100%
rename from tests/positive/BuiltinsMultiImport/minijuvix.yaml
rename to tests/positive/BuiltinsMultiOpenImport/juvix.yaml
diff --git a/tests/positive/Foreign.mjuvix b/tests/positive/Foreign.juvix
similarity index 100%
rename from tests/positive/Foreign.mjuvix
rename to tests/positive/Foreign.juvix
diff --git a/tests/positive/FullExamples/MonoSimpleFungibleToken.mjuvix b/tests/positive/FullExamples/MonoSimpleFungibleToken.juvix
similarity index 100%
rename from tests/positive/FullExamples/MonoSimpleFungibleToken.mjuvix
rename to tests/positive/FullExamples/MonoSimpleFungibleToken.juvix
diff --git a/tests/positive/FullExamples/SimpleFungibleTokenImplicit.mjuvix b/tests/positive/FullExamples/SimpleFungibleTokenImplicit.juvix
similarity index 100%
rename from tests/positive/FullExamples/SimpleFungibleTokenImplicit.mjuvix
rename to tests/positive/FullExamples/SimpleFungibleTokenImplicit.juvix
diff --git a/tests/positive/BuiltinsMultiOpenImport/minijuvix.yaml b/tests/positive/FullExamples/juvix.yaml
similarity index 100%
rename from tests/positive/BuiltinsMultiOpenImport/minijuvix.yaml
rename to tests/positive/FullExamples/juvix.yaml
diff --git a/tests/positive/Imports/A.mjuvix b/tests/positive/Imports/A.juvix
similarity index 100%
rename from tests/positive/Imports/A.mjuvix
rename to tests/positive/Imports/A.juvix
diff --git a/tests/positive/Imports/M.mjuvix b/tests/positive/Imports/M.juvix
similarity index 100%
rename from tests/positive/Imports/M.mjuvix
rename to tests/positive/Imports/M.juvix
diff --git a/tests/positive/FullExamples/minijuvix.yaml b/tests/positive/Imports/juvix.yaml
similarity index 100%
rename from tests/positive/FullExamples/minijuvix.yaml
rename to tests/positive/Imports/juvix.yaml
diff --git a/tests/positive/Inductive.mjuvix b/tests/positive/Inductive.juvix
similarity index 100%
rename from tests/positive/Inductive.mjuvix
rename to tests/positive/Inductive.juvix
diff --git a/tests/positive/Literals.mjuvix b/tests/positive/Literals.juvix
similarity index 100%
rename from tests/positive/Literals.mjuvix
rename to tests/positive/Literals.juvix
diff --git a/tests/positive/MicroJuvix/Box.mjuvix b/tests/positive/MicroJuvix/Box.juvix
similarity index 100%
rename from tests/positive/MicroJuvix/Box.mjuvix
rename to tests/positive/MicroJuvix/Box.juvix
diff --git a/tests/positive/MicroJuvix/HoleInSignature.mjuvix b/tests/positive/MicroJuvix/HoleInSignature.juvix
similarity index 100%
rename from tests/positive/MicroJuvix/HoleInSignature.mjuvix
rename to tests/positive/MicroJuvix/HoleInSignature.juvix
diff --git a/tests/positive/MicroJuvix/Implicit.mjuvix b/tests/positive/MicroJuvix/Implicit.juvix
similarity index 100%
rename from tests/positive/MicroJuvix/Implicit.mjuvix
rename to tests/positive/MicroJuvix/Implicit.juvix
diff --git a/tests/positive/MicroJuvix/LiteralInt.mjuvix b/tests/positive/MicroJuvix/LiteralInt.juvix
similarity index 100%
rename from tests/positive/MicroJuvix/LiteralInt.mjuvix
rename to tests/positive/MicroJuvix/LiteralInt.juvix
diff --git a/tests/positive/MicroJuvix/LiteralString.mjuvix b/tests/positive/MicroJuvix/LiteralString.juvix
similarity index 100%
rename from tests/positive/MicroJuvix/LiteralString.mjuvix
rename to tests/positive/MicroJuvix/LiteralString.juvix
diff --git a/tests/positive/MicroJuvix/Simple.mjuvix b/tests/positive/MicroJuvix/Simple.juvix
similarity index 100%
rename from tests/positive/MicroJuvix/Simple.mjuvix
rename to tests/positive/MicroJuvix/Simple.juvix
diff --git a/tests/positive/Imports/minijuvix.yaml b/tests/positive/MicroJuvix/juvix.yaml
similarity index 100%
rename from tests/positive/Imports/minijuvix.yaml
rename to tests/positive/MicroJuvix/juvix.yaml
diff --git a/tests/positive/MiniC/Builtins/Input.mjuvix b/tests/positive/MiniC/Builtins/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/Builtins/Input.mjuvix
rename to tests/positive/MiniC/Builtins/Input.juvix
diff --git a/tests/positive/MicroJuvix/minijuvix.yaml b/tests/positive/MiniC/Builtins/juvix.yaml
similarity index 100%
rename from tests/positive/MicroJuvix/minijuvix.yaml
rename to tests/positive/MiniC/Builtins/juvix.yaml
diff --git a/tests/positive/MiniC/ClosureEnv/Input.mjuvix b/tests/positive/MiniC/ClosureEnv/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/ClosureEnv/Input.mjuvix
rename to tests/positive/MiniC/ClosureEnv/Input.juvix
diff --git a/tests/positive/MiniC/Builtins/minijuvix.yaml b/tests/positive/MiniC/ClosureEnv/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/Builtins/minijuvix.yaml
rename to tests/positive/MiniC/ClosureEnv/juvix.yaml
diff --git a/tests/positive/MiniC/ClosureNoEnv/Input.mjuvix b/tests/positive/MiniC/ClosureNoEnv/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/ClosureNoEnv/Input.mjuvix
rename to tests/positive/MiniC/ClosureNoEnv/Input.juvix
diff --git a/tests/positive/MiniC/ClosureEnv/minijuvix.yaml b/tests/positive/MiniC/ClosureNoEnv/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/ClosureEnv/minijuvix.yaml
rename to tests/positive/MiniC/ClosureNoEnv/juvix.yaml
diff --git a/tests/positive/MiniC/HelloWorld/Input.mjuvix b/tests/positive/MiniC/HelloWorld/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/HelloWorld/Input.mjuvix
rename to tests/positive/MiniC/HelloWorld/Input.juvix
diff --git a/tests/positive/MiniC/ClosureNoEnv/minijuvix.yaml b/tests/positive/MiniC/HelloWorld/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/ClosureNoEnv/minijuvix.yaml
rename to tests/positive/MiniC/HelloWorld/juvix.yaml
diff --git a/tests/positive/MiniC/HigherOrder/Input.mjuvix b/tests/positive/MiniC/HigherOrder/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/HigherOrder/Input.mjuvix
rename to tests/positive/MiniC/HigherOrder/Input.juvix
diff --git a/tests/positive/MiniC/HelloWorld/minijuvix.yaml b/tests/positive/MiniC/HigherOrder/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/HelloWorld/minijuvix.yaml
rename to tests/positive/MiniC/HigherOrder/juvix.yaml
diff --git a/tests/positive/MiniC/Lib/Data/Bool.mjuvix b/tests/positive/MiniC/Lib/Data/Bool.juvix
similarity index 100%
rename from tests/positive/MiniC/Lib/Data/Bool.mjuvix
rename to tests/positive/MiniC/Lib/Data/Bool.juvix
diff --git a/tests/positive/MiniC/Lib/Data/IO.mjuvix b/tests/positive/MiniC/Lib/Data/IO.juvix
similarity index 100%
rename from tests/positive/MiniC/Lib/Data/IO.mjuvix
rename to tests/positive/MiniC/Lib/Data/IO.juvix
diff --git a/tests/positive/MiniC/Lib/Data/Int.mjuvix b/tests/positive/MiniC/Lib/Data/Int.juvix
similarity index 100%
rename from tests/positive/MiniC/Lib/Data/Int.mjuvix
rename to tests/positive/MiniC/Lib/Data/Int.juvix
diff --git a/tests/positive/MiniC/Lib/Data/Nat.mjuvix b/tests/positive/MiniC/Lib/Data/Nat.juvix
similarity index 72%
rename from tests/positive/MiniC/Lib/Data/Nat.mjuvix
rename to tests/positive/MiniC/Lib/Data/Nat.juvix
index 89befe284..2e2c60183 100644
--- a/tests/positive/MiniC/Lib/Data/Nat.mjuvix
+++ b/tests/positive/MiniC/Lib/Data/Nat.juvix
@@ -9,9 +9,9 @@ inductive Nat {
};
foreign c {
- void* natInd(int n, void* zeroCtor, minijuvix_function_t* sucCtor) {
+ void* natInd(int n, void* zeroCtor, juvix_function_t* sucCtor) {
if (n <= 0) return zeroCtor;
- return ((void* (*) (minijuvix_function_t*, void*))sucCtor->fun)(sucCtor, natInd(n - 1, zeroCtor, sucCtor));
+ return ((void* (*) (juvix_function_t*, void*))sucCtor->fun)(sucCtor, natInd(n - 1, zeroCtor, sucCtor));
\}
};
diff --git a/tests/positive/MiniC/Lib/Data/Pair.mjuvix b/tests/positive/MiniC/Lib/Data/Pair.juvix
similarity index 100%
rename from tests/positive/MiniC/Lib/Data/Pair.mjuvix
rename to tests/positive/MiniC/Lib/Data/Pair.juvix
diff --git a/tests/positive/MiniC/Lib/Data/String.mjuvix b/tests/positive/MiniC/Lib/Data/String.juvix
similarity index 100%
rename from tests/positive/MiniC/Lib/Data/String.mjuvix
rename to tests/positive/MiniC/Lib/Data/String.juvix
diff --git a/tests/positive/MiniC/Lib/Prelude.mjuvix b/tests/positive/MiniC/Lib/Prelude.juvix
similarity index 100%
rename from tests/positive/MiniC/Lib/Prelude.mjuvix
rename to tests/positive/MiniC/Lib/Prelude.juvix
diff --git a/tests/positive/MiniC/MultiModules/Data b/tests/positive/MiniC/MultiModules/Data
deleted file mode 120000
index 6e2a68d95..000000000
--- a/tests/positive/MiniC/MultiModules/Data
+++ /dev/null
@@ -1 +0,0 @@
-../Lib/Data
\ No newline at end of file
diff --git a/tests/positive/MiniC/MultiModules/Data/Bool.juvix b/tests/positive/MiniC/MultiModules/Data/Bool.juvix
new file mode 100644
index 000000000..f4b1314f3
--- /dev/null
+++ b/tests/positive/MiniC/MultiModules/Data/Bool.juvix
@@ -0,0 +1,18 @@
+module Data.Bool;
+
+open import Data.String;
+
+inductive Bool {
+ true : Bool;
+ false : Bool;
+};
+
+not : Bool → Bool;
+not true ≔ false;
+not false ≔ true;
+
+boolToStr : Bool → String;
+boolToStr true ≔ "true";
+boolToStr false ≔ "false";
+
+end;
diff --git a/tests/positive/MiniC/MultiModules/Data/IO.juvix b/tests/positive/MiniC/MultiModules/Data/IO.juvix
new file mode 100644
index 000000000..c4d537273
--- /dev/null
+++ b/tests/positive/MiniC/MultiModules/Data/IO.juvix
@@ -0,0 +1,41 @@
+module Data.IO;
+
+import Data.String;
+open Data.String;
+
+axiom Action : Type;
+
+compile Action {
+ ghc ↦ "IO ()";
+ c ↦ "int";
+};
+
+foreign c {
+ int sequence(int a, int b) {
+ return a + b;
+ \}
+};
+
+infixl 1 >>;
+axiom >> : Action → Action → Action;
+
+compile >> {
+ ghc ↦ "(>>)";
+ c ↦ "sequence";
+};
+
+axiom put-str : String → Action;
+
+compile put-str {
+ ghc ↦ "putStr";
+ c ↦ "putStr";
+};
+
+axiom put-str-ln : String → Action;
+
+compile put-str-ln {
+ ghc ↦ "putStrLn";
+ c ↦ "putStrLn";
+};
+
+end;
diff --git a/tests/positive/MiniC/MultiModules/Data/Int.juvix b/tests/positive/MiniC/MultiModules/Data/Int.juvix
new file mode 100644
index 000000000..91becf5ed
--- /dev/null
+++ b/tests/positive/MiniC/MultiModules/Data/Int.juvix
@@ -0,0 +1,28 @@
+module Data.Int;
+
+open import Data.String;
+
+axiom Int : Type;
+compile Int {
+ c ↦ "int";
+};
+
+axiom intToStr : Int → String;
+
+compile intToStr {
+ c ↦ "intToStr";
+};
+
+foreign c {
+ int plus(int l, int r) {
+ return l + r;
+ \}
+};
+
+infixl 6 +;
+axiom + : Int -> Int -> Int;
+compile + {
+ c ↦ "plus";
+};
+
+end;
diff --git a/tests/positive/MiniC/MultiModules/Data/Nat.juvix b/tests/positive/MiniC/MultiModules/Data/Nat.juvix
new file mode 100644
index 000000000..2e2c60183
--- /dev/null
+++ b/tests/positive/MiniC/MultiModules/Data/Nat.juvix
@@ -0,0 +1,34 @@
+module Data.Nat;
+
+open import Data.String;
+open import Data.Int;
+
+inductive Nat {
+ zero : Nat;
+ suc : Nat → Nat;
+};
+
+foreign c {
+ void* natInd(int n, void* zeroCtor, juvix_function_t* sucCtor) {
+ if (n <= 0) return zeroCtor;
+ return ((void* (*) (juvix_function_t*, void*))sucCtor->fun)(sucCtor, natInd(n - 1, zeroCtor, sucCtor));
+ \}
+};
+
+axiom natInd : Int → Nat → (Nat → Nat) → Nat;
+
+compile natInd {
+ c ↦ "natInd";
+};
+
+natToInt : Nat → Int;
+natToInt zero ≔ 0;
+natToInt (suc n) ≔ 1 + (natToInt n);
+
+natToStr : Nat → String;
+natToStr n ≔ intToStr (natToInt n);
+
+intToNat : Int → Nat;
+intToNat x ≔ natInd x zero suc;
+
+end;
diff --git a/tests/positive/MiniC/MultiModules/Data/Pair.juvix b/tests/positive/MiniC/MultiModules/Data/Pair.juvix
new file mode 100644
index 000000000..190bb55c8
--- /dev/null
+++ b/tests/positive/MiniC/MultiModules/Data/Pair.juvix
@@ -0,0 +1,11 @@
+module Data.Pair;
+
+inductive Pair (A : Type) (B : Type) {
+ mkPair : A → B → Pair A B;
+};
+
+fst : (A : Type) → (B : Type) → Pair A B → A;
+fst _ _ (mkPair a b) ≔ a;
+
+
+end;
diff --git a/tests/positive/MiniC/MultiModules/Data/String.juvix b/tests/positive/MiniC/MultiModules/Data/String.juvix
new file mode 100644
index 000000000..a3e1dc91c
--- /dev/null
+++ b/tests/positive/MiniC/MultiModules/Data/String.juvix
@@ -0,0 +1,10 @@
+module Data.String;
+
+axiom String : Type;
+
+compile String {
+ ghc ↦ "[Char]";
+ c ↦ "char*";
+};
+
+end;
diff --git a/tests/positive/MiniC/MultiModules/Input.mjuvix b/tests/positive/MiniC/MultiModules/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/MultiModules/Input.mjuvix
rename to tests/positive/MiniC/MultiModules/Input.juvix
diff --git a/tests/positive/MiniC/MultiModules/Prelude.juvix b/tests/positive/MiniC/MultiModules/Prelude.juvix
new file mode 100644
index 000000000..17f55c867
--- /dev/null
+++ b/tests/positive/MiniC/MultiModules/Prelude.juvix
@@ -0,0 +1,15 @@
+module Prelude;
+
+open import Data.String public;
+
+open import Data.Bool public;
+
+open import Data.Int public;
+
+open import Data.Pair public;
+
+open import Data.IO public;
+
+open import Data.Nat public;
+
+end;
diff --git a/tests/positive/MiniC/MultiModules/Prelude.mjuvix b/tests/positive/MiniC/MultiModules/Prelude.mjuvix
deleted file mode 120000
index 8fde4860a..000000000
--- a/tests/positive/MiniC/MultiModules/Prelude.mjuvix
+++ /dev/null
@@ -1 +0,0 @@
-../Lib/Prelude.mjuvix
\ No newline at end of file
diff --git a/tests/positive/MiniC/HigherOrder/minijuvix.yaml b/tests/positive/MiniC/MultiModules/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/HigherOrder/minijuvix.yaml
rename to tests/positive/MiniC/MultiModules/juvix.yaml
diff --git a/tests/positive/MiniC/MutuallyRecursive/Data b/tests/positive/MiniC/MutuallyRecursive/Data
deleted file mode 120000
index 6e2a68d95..000000000
--- a/tests/positive/MiniC/MutuallyRecursive/Data
+++ /dev/null
@@ -1 +0,0 @@
-../Lib/Data
\ No newline at end of file
diff --git a/tests/positive/MiniC/MutuallyRecursive/Data/Bool.juvix b/tests/positive/MiniC/MutuallyRecursive/Data/Bool.juvix
new file mode 100644
index 000000000..f4b1314f3
--- /dev/null
+++ b/tests/positive/MiniC/MutuallyRecursive/Data/Bool.juvix
@@ -0,0 +1,18 @@
+module Data.Bool;
+
+open import Data.String;
+
+inductive Bool {
+ true : Bool;
+ false : Bool;
+};
+
+not : Bool → Bool;
+not true ≔ false;
+not false ≔ true;
+
+boolToStr : Bool → String;
+boolToStr true ≔ "true";
+boolToStr false ≔ "false";
+
+end;
diff --git a/tests/positive/MiniC/MutuallyRecursive/Data/IO.juvix b/tests/positive/MiniC/MutuallyRecursive/Data/IO.juvix
new file mode 100644
index 000000000..c4d537273
--- /dev/null
+++ b/tests/positive/MiniC/MutuallyRecursive/Data/IO.juvix
@@ -0,0 +1,41 @@
+module Data.IO;
+
+import Data.String;
+open Data.String;
+
+axiom Action : Type;
+
+compile Action {
+ ghc ↦ "IO ()";
+ c ↦ "int";
+};
+
+foreign c {
+ int sequence(int a, int b) {
+ return a + b;
+ \}
+};
+
+infixl 1 >>;
+axiom >> : Action → Action → Action;
+
+compile >> {
+ ghc ↦ "(>>)";
+ c ↦ "sequence";
+};
+
+axiom put-str : String → Action;
+
+compile put-str {
+ ghc ↦ "putStr";
+ c ↦ "putStr";
+};
+
+axiom put-str-ln : String → Action;
+
+compile put-str-ln {
+ ghc ↦ "putStrLn";
+ c ↦ "putStrLn";
+};
+
+end;
diff --git a/tests/positive/MiniC/MutuallyRecursive/Data/Int.juvix b/tests/positive/MiniC/MutuallyRecursive/Data/Int.juvix
new file mode 100644
index 000000000..91becf5ed
--- /dev/null
+++ b/tests/positive/MiniC/MutuallyRecursive/Data/Int.juvix
@@ -0,0 +1,28 @@
+module Data.Int;
+
+open import Data.String;
+
+axiom Int : Type;
+compile Int {
+ c ↦ "int";
+};
+
+axiom intToStr : Int → String;
+
+compile intToStr {
+ c ↦ "intToStr";
+};
+
+foreign c {
+ int plus(int l, int r) {
+ return l + r;
+ \}
+};
+
+infixl 6 +;
+axiom + : Int -> Int -> Int;
+compile + {
+ c ↦ "plus";
+};
+
+end;
diff --git a/tests/positive/MiniC/MutuallyRecursive/Data/Nat.juvix b/tests/positive/MiniC/MutuallyRecursive/Data/Nat.juvix
new file mode 100644
index 000000000..2e2c60183
--- /dev/null
+++ b/tests/positive/MiniC/MutuallyRecursive/Data/Nat.juvix
@@ -0,0 +1,34 @@
+module Data.Nat;
+
+open import Data.String;
+open import Data.Int;
+
+inductive Nat {
+ zero : Nat;
+ suc : Nat → Nat;
+};
+
+foreign c {
+ void* natInd(int n, void* zeroCtor, juvix_function_t* sucCtor) {
+ if (n <= 0) return zeroCtor;
+ return ((void* (*) (juvix_function_t*, void*))sucCtor->fun)(sucCtor, natInd(n - 1, zeroCtor, sucCtor));
+ \}
+};
+
+axiom natInd : Int → Nat → (Nat → Nat) → Nat;
+
+compile natInd {
+ c ↦ "natInd";
+};
+
+natToInt : Nat → Int;
+natToInt zero ≔ 0;
+natToInt (suc n) ≔ 1 + (natToInt n);
+
+natToStr : Nat → String;
+natToStr n ≔ intToStr (natToInt n);
+
+intToNat : Int → Nat;
+intToNat x ≔ natInd x zero suc;
+
+end;
diff --git a/tests/positive/MiniC/MutuallyRecursive/Data/Pair.juvix b/tests/positive/MiniC/MutuallyRecursive/Data/Pair.juvix
new file mode 100644
index 000000000..190bb55c8
--- /dev/null
+++ b/tests/positive/MiniC/MutuallyRecursive/Data/Pair.juvix
@@ -0,0 +1,11 @@
+module Data.Pair;
+
+inductive Pair (A : Type) (B : Type) {
+ mkPair : A → B → Pair A B;
+};
+
+fst : (A : Type) → (B : Type) → Pair A B → A;
+fst _ _ (mkPair a b) ≔ a;
+
+
+end;
diff --git a/tests/positive/MiniC/MutuallyRecursive/Data/String.juvix b/tests/positive/MiniC/MutuallyRecursive/Data/String.juvix
new file mode 100644
index 000000000..a3e1dc91c
--- /dev/null
+++ b/tests/positive/MiniC/MutuallyRecursive/Data/String.juvix
@@ -0,0 +1,10 @@
+module Data.String;
+
+axiom String : Type;
+
+compile String {
+ ghc ↦ "[Char]";
+ c ↦ "char*";
+};
+
+end;
diff --git a/tests/positive/MiniC/MutuallyRecursive/Input.mjuvix b/tests/positive/MiniC/MutuallyRecursive/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/MutuallyRecursive/Input.mjuvix
rename to tests/positive/MiniC/MutuallyRecursive/Input.juvix
diff --git a/tests/positive/MiniC/MutuallyRecursive/Prelude.juvix b/tests/positive/MiniC/MutuallyRecursive/Prelude.juvix
new file mode 100644
index 000000000..17f55c867
--- /dev/null
+++ b/tests/positive/MiniC/MutuallyRecursive/Prelude.juvix
@@ -0,0 +1,15 @@
+module Prelude;
+
+open import Data.String public;
+
+open import Data.Bool public;
+
+open import Data.Int public;
+
+open import Data.Pair public;
+
+open import Data.IO public;
+
+open import Data.Nat public;
+
+end;
diff --git a/tests/positive/MiniC/MutuallyRecursive/Prelude.mjuvix b/tests/positive/MiniC/MutuallyRecursive/Prelude.mjuvix
deleted file mode 120000
index 8fde4860a..000000000
--- a/tests/positive/MiniC/MutuallyRecursive/Prelude.mjuvix
+++ /dev/null
@@ -1 +0,0 @@
-../Lib/Prelude.mjuvix
\ No newline at end of file
diff --git a/tests/positive/MiniC/MultiModules/minijuvix.yaml b/tests/positive/MiniC/MutuallyRecursive/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/MultiModules/minijuvix.yaml
rename to tests/positive/MiniC/MutuallyRecursive/juvix.yaml
diff --git a/tests/positive/MiniC/Nat/Input.mjuvix b/tests/positive/MiniC/Nat/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/Nat/Input.mjuvix
rename to tests/positive/MiniC/Nat/Input.juvix
diff --git a/tests/positive/MiniC/MutuallyRecursive/minijuvix.yaml b/tests/positive/MiniC/Nat/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/MutuallyRecursive/minijuvix.yaml
rename to tests/positive/MiniC/Nat/juvix.yaml
diff --git a/tests/positive/MiniC/NestedList/Input.mjuvix b/tests/positive/MiniC/NestedList/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/NestedList/Input.mjuvix
rename to tests/positive/MiniC/NestedList/Input.juvix
diff --git a/tests/positive/MiniC/Nat/minijuvix.yaml b/tests/positive/MiniC/NestedList/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/Nat/minijuvix.yaml
rename to tests/positive/MiniC/NestedList/juvix.yaml
diff --git a/tests/positive/MiniC/Polymorphism/Input.mjuvix b/tests/positive/MiniC/Polymorphism/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/Polymorphism/Input.mjuvix
rename to tests/positive/MiniC/Polymorphism/Input.juvix
diff --git a/tests/positive/MiniC/NestedList/minijuvix.yaml b/tests/positive/MiniC/Polymorphism/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/NestedList/minijuvix.yaml
rename to tests/positive/MiniC/Polymorphism/juvix.yaml
diff --git a/tests/positive/MiniC/PolymorphismHoles/Input.mjuvix b/tests/positive/MiniC/PolymorphismHoles/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/PolymorphismHoles/Input.mjuvix
rename to tests/positive/MiniC/PolymorphismHoles/Input.juvix
diff --git a/tests/positive/MiniC/Polymorphism/minijuvix.yaml b/tests/positive/MiniC/PolymorphismHoles/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/Polymorphism/minijuvix.yaml
rename to tests/positive/MiniC/PolymorphismHoles/juvix.yaml
diff --git a/tests/positive/MiniC/SimpleFungibleTokenImplicit/Input.mjuvix b/tests/positive/MiniC/SimpleFungibleTokenImplicit/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/SimpleFungibleTokenImplicit/Input.mjuvix
rename to tests/positive/MiniC/SimpleFungibleTokenImplicit/Input.juvix
diff --git a/tests/positive/MiniC/PolymorphismHoles/minijuvix.yaml b/tests/positive/MiniC/SimpleFungibleTokenImplicit/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/PolymorphismHoles/minijuvix.yaml
rename to tests/positive/MiniC/SimpleFungibleTokenImplicit/juvix.yaml
diff --git a/tests/positive/MiniC/StdlibImport/Input.mjuvix b/tests/positive/MiniC/StdlibImport/Input.juvix
similarity index 100%
rename from tests/positive/MiniC/StdlibImport/Input.mjuvix
rename to tests/positive/MiniC/StdlibImport/Input.juvix
diff --git a/tests/positive/MiniC/SimpleFungibleTokenImplicit/minijuvix.yaml b/tests/positive/MiniC/StdlibImport/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/SimpleFungibleTokenImplicit/minijuvix.yaml
rename to tests/positive/MiniC/StdlibImport/juvix.yaml
diff --git a/tests/positive/MiniHaskell/HelloWorld.mjuvix b/tests/positive/MiniHaskell/HelloWorld.juvix
similarity index 100%
rename from tests/positive/MiniHaskell/HelloWorld.mjuvix
rename to tests/positive/MiniHaskell/HelloWorld.juvix
diff --git a/tests/positive/MiniC/StdlibImport/minijuvix.yaml b/tests/positive/MiniHaskell/juvix.yaml
similarity index 100%
rename from tests/positive/MiniC/StdlibImport/minijuvix.yaml
rename to tests/positive/MiniHaskell/juvix.yaml
diff --git a/tests/positive/Operators.mjuvix b/tests/positive/Operators.juvix
similarity index 100%
rename from tests/positive/Operators.mjuvix
rename to tests/positive/Operators.juvix
diff --git a/tests/positive/Parsing.mjuvix b/tests/positive/Parsing.juvix
similarity index 100%
rename from tests/positive/Parsing.mjuvix
rename to tests/positive/Parsing.juvix
diff --git a/tests/positive/Polymorphism.mjuvix b/tests/positive/Polymorphism.juvix
similarity index 100%
rename from tests/positive/Polymorphism.mjuvix
rename to tests/positive/Polymorphism.juvix
diff --git a/tests/positive/PolymorphismHoles.mjuvix b/tests/positive/PolymorphismHoles.juvix
similarity index 100%
rename from tests/positive/PolymorphismHoles.mjuvix
rename to tests/positive/PolymorphismHoles.juvix
diff --git a/tests/positive/QualifiedConstructor/M.mjuvix b/tests/positive/QualifiedConstructor/M.juvix
similarity index 100%
rename from tests/positive/QualifiedConstructor/M.mjuvix
rename to tests/positive/QualifiedConstructor/M.juvix
diff --git a/tests/positive/MiniHaskell/minijuvix.yaml b/tests/positive/QualifiedConstructor/juvix.yaml
similarity index 100%
rename from tests/positive/MiniHaskell/minijuvix.yaml
rename to tests/positive/QualifiedConstructor/juvix.yaml
diff --git a/tests/positive/QualifiedSymbol/M.mjuvix b/tests/positive/QualifiedSymbol/M.juvix
similarity index 100%
rename from tests/positive/QualifiedSymbol/M.mjuvix
rename to tests/positive/QualifiedSymbol/M.juvix
diff --git a/tests/positive/QualifiedConstructor/minijuvix.yaml b/tests/positive/QualifiedSymbol/juvix.yaml
similarity index 100%
rename from tests/positive/QualifiedConstructor/minijuvix.yaml
rename to tests/positive/QualifiedSymbol/juvix.yaml
diff --git a/tests/positive/QualifiedSymbol2/M.mjuvix b/tests/positive/QualifiedSymbol2/M.juvix
similarity index 100%
rename from tests/positive/QualifiedSymbol2/M.mjuvix
rename to tests/positive/QualifiedSymbol2/M.juvix
diff --git a/tests/positive/QualifiedSymbol2/N.mjuvix b/tests/positive/QualifiedSymbol2/N.juvix
similarity index 100%
rename from tests/positive/QualifiedSymbol2/N.mjuvix
rename to tests/positive/QualifiedSymbol2/N.juvix
diff --git a/tests/positive/QualifiedSymbol/minijuvix.yaml b/tests/positive/QualifiedSymbol2/juvix.yaml
similarity index 100%
rename from tests/positive/QualifiedSymbol/minijuvix.yaml
rename to tests/positive/QualifiedSymbol2/juvix.yaml
diff --git a/tests/positive/ShadowPublicOpen.mjuvix b/tests/positive/ShadowPublicOpen.juvix
similarity index 100%
rename from tests/positive/ShadowPublicOpen.mjuvix
rename to tests/positive/ShadowPublicOpen.juvix
diff --git a/tests/positive/StdlibImport/A.mjuvix b/tests/positive/StdlibImport/A.juvix
similarity index 100%
rename from tests/positive/StdlibImport/A.mjuvix
rename to tests/positive/StdlibImport/A.juvix
diff --git a/tests/positive/StdlibImport/StdlibImport.mjuvix b/tests/positive/StdlibImport/StdlibImport.juvix
similarity index 100%
rename from tests/positive/StdlibImport/StdlibImport.mjuvix
rename to tests/positive/StdlibImport/StdlibImport.juvix
diff --git a/tests/positive/QualifiedSymbol2/minijuvix.yaml b/tests/positive/StdlibImport/juvix.yaml
similarity index 100%
rename from tests/positive/QualifiedSymbol2/minijuvix.yaml
rename to tests/positive/StdlibImport/juvix.yaml
diff --git a/tests/positive/StdlibList/Data/Bool.mjuvix b/tests/positive/StdlibList/Data/Bool.juvix
similarity index 100%
rename from tests/positive/StdlibList/Data/Bool.mjuvix
rename to tests/positive/StdlibList/Data/Bool.juvix
diff --git a/tests/positive/StdlibList/Data/List.mjuvix b/tests/positive/StdlibList/Data/List.juvix
similarity index 100%
rename from tests/positive/StdlibList/Data/List.mjuvix
rename to tests/positive/StdlibList/Data/List.juvix
diff --git a/tests/positive/StdlibList/Data/Maybe.mjuvix b/tests/positive/StdlibList/Data/Maybe.juvix
similarity index 100%
rename from tests/positive/StdlibList/Data/Maybe.mjuvix
rename to tests/positive/StdlibList/Data/Maybe.juvix
diff --git a/tests/positive/StdlibList/Data/Nat.mjuvix b/tests/positive/StdlibList/Data/Nat.juvix
similarity index 100%
rename from tests/positive/StdlibList/Data/Nat.mjuvix
rename to tests/positive/StdlibList/Data/Nat.juvix
diff --git a/tests/positive/StdlibList/Data/Ord.mjuvix b/tests/positive/StdlibList/Data/Ord.juvix
similarity index 100%
rename from tests/positive/StdlibList/Data/Ord.mjuvix
rename to tests/positive/StdlibList/Data/Ord.juvix
diff --git a/tests/positive/StdlibList/Data/Product.mjuvix b/tests/positive/StdlibList/Data/Product.juvix
similarity index 100%
rename from tests/positive/StdlibList/Data/Product.mjuvix
rename to tests/positive/StdlibList/Data/Product.juvix
diff --git a/tests/positive/StdlibImport/minijuvix.yaml b/tests/positive/StdlibList/juvix.yaml
similarity index 100%
rename from tests/positive/StdlibImport/minijuvix.yaml
rename to tests/positive/StdlibList/juvix.yaml
diff --git a/tests/positive/Termination/Ack.mjuvix b/tests/positive/Termination/Ack.juvix
similarity index 100%
rename from tests/positive/Termination/Ack.mjuvix
rename to tests/positive/Termination/Ack.juvix
diff --git a/tests/positive/Termination/Data/Bool.mjuvix b/tests/positive/Termination/Data/Bool.juvix
similarity index 100%
rename from tests/positive/Termination/Data/Bool.mjuvix
rename to tests/positive/Termination/Data/Bool.juvix
diff --git a/tests/positive/Termination/Data/List.mjuvix b/tests/positive/Termination/Data/List.juvix
similarity index 100%
rename from tests/positive/Termination/Data/List.mjuvix
rename to tests/positive/Termination/Data/List.juvix
diff --git a/tests/positive/Termination/Data/Nat.mjuvix b/tests/positive/Termination/Data/Nat.juvix
similarity index 100%
rename from tests/positive/Termination/Data/Nat.mjuvix
rename to tests/positive/Termination/Data/Nat.juvix
diff --git a/tests/positive/Termination/Mutual.mjuvix b/tests/positive/Termination/Mutual.juvix
similarity index 100%
rename from tests/positive/Termination/Mutual.mjuvix
rename to tests/positive/Termination/Mutual.juvix
diff --git a/tests/positive/Termination/ToEmpty.mjuvix b/tests/positive/Termination/ToEmpty.juvix
similarity index 100%
rename from tests/positive/Termination/ToEmpty.mjuvix
rename to tests/positive/Termination/ToEmpty.juvix
diff --git a/tests/positive/Termination/Undefined.mjuvix b/tests/positive/Termination/Undefined.juvix
similarity index 100%
rename from tests/positive/Termination/Undefined.mjuvix
rename to tests/positive/Termination/Undefined.juvix
diff --git a/tests/positive/StdlibList/minijuvix.yaml b/tests/positive/Termination/juvix.yaml
similarity index 100%
rename from tests/positive/StdlibList/minijuvix.yaml
rename to tests/positive/Termination/juvix.yaml
diff --git a/tests/positive/Termination/minijuvix.yaml b/tests/positive/juvix.yaml
similarity index 100%
rename from tests/positive/Termination/minijuvix.yaml
rename to tests/positive/juvix.yaml
diff --git a/tests/positive/minijuvix.yaml b/tests/positive/minijuvix.yaml
deleted file mode 100644
index e69de29bb..000000000