mirror of
https://github.com/anoma/juvix.git
synced 2024-12-14 17:32:00 +03:00
2d798ec31c
* Depends on PR #1824 * Closes #1556 * Closes #1825 * Closes #1843 * Closes #1729 * Closes #1596 * Closes #1343 * Closes #1382 * Closes #1867 * Closes #1876 * Changes the `juvix compile` command to use the new pipeline. * Removes the `juvix dev minic` command and the `BackendC` tests. * Adds the `juvix eval` command. * Fixes bugs in the Nat-to-integer conversion. * Fixes bugs in the Internal-to-Core and Core-to-Core.Stripped translations. * Fixes bugs in the RemoveTypeArgs transformation. * Fixes bugs in lambda-lifting (incorrect de Bruijn indices in the types of added binders). * Fixes several other bugs in the compilation pipeline. * Adds a separate EtaExpandApps transformation to avoid quadratic runtime in the Internal-to-Core translation due to repeated calls to etaExpandApps. * Changes Internal-to-Core to avoid generating matches on values which don't have an inductive type. --------- Co-authored-by: Paul Cadman <git@paulcadman.dev> Co-authored-by: janmasrovira <janmasrovira@gmail.com>
25 lines
783 B
Haskell
25 lines
783 B
Haskell
module Compilation.Base where
|
|
|
|
import Base
|
|
import Core.Compile.Base
|
|
import Core.Eval.Base
|
|
import Juvix.Compiler.Builtins (iniState)
|
|
import Juvix.Compiler.Core.Pipeline qualified as Core
|
|
import Juvix.Compiler.Core.Translation.FromInternal.Data qualified as Core
|
|
import Juvix.Compiler.Pipeline
|
|
|
|
compileAssertion ::
|
|
Bool ->
|
|
Path Abs File ->
|
|
Path Abs File ->
|
|
(String -> IO ()) ->
|
|
Assertion
|
|
compileAssertion onlyEval mainFile expectedFile step = do
|
|
step "Translate to JuvixCore"
|
|
cwd <- getCurrentDir
|
|
let entryPoint = defaultEntryPoint cwd mainFile
|
|
tab <- (^. Core.coreResultTable) . snd <$> runIO' iniState entryPoint upToCore
|
|
coreEvalAssertion' (Core.toEval tab) mainFile expectedFile step
|
|
unless onlyEval $
|
|
coreCompileAssertion' tab mainFile expectedFile step
|