mirror of
https://github.com/anoma/juvix.git
synced 2024-12-02 10:47:32 +03:00
be24abb0ca
This PR adds a `anoma` target to the `juvix compile`. This target compiles a Juvix `main` function to a Nockma/Anoma "function". Unlike the native, wasm, and nockma targets the main function may have any type signature. ## Anoma calling convention [Anoma calls functions](6a4e15fe9c/lib/anoma/resource.ex (L122)
) by evaluating the formula `[call L replace [RL args] @ S]` against a subject equal to the function. Here `args` is a Nockma term that evaluates to a tuple of arguments that should be passed to the function. The anoma target compiles the `main` function to Nockma in the same way as the nockma target. The main function is then [wrapped](9a658465ae/src/Juvix/Compiler/Nockma/Translation/FromTree.hs (L627)
) to make it compatible with the Anoma calling convention. ## Testing The anoma calling convention is [unit tested](9a658465ae/test/Nockma/Eval/Positive.hs (L117)
) and [smoke tested](9a658465ae/tests/smoke/Commands/compile.smoke.yaml (L159)
). This PR also adds versions of the end-to-end compilation tests. Most tests are included, tests for builtin IO operations and string builtins are omitted. Other tests that use Strings have been adapted to use other types that are compatible with this backend. ## Nockma REPL To facilitate testing the Nockma REPL can now load a nockma file as an initial subject. --------- Co-authored-by: Lukasz Czajka <lukasz@heliax.dev>
11 lines
172 B
Haskell
11 lines
172 B
Haskell
module Anoma where
|
|
|
|
import Anoma.Compilation qualified as Compilation
|
|
import Base
|
|
|
|
allTests :: TestTree
|
|
allTests =
|
|
testGroup
|
|
"Anoma tests"
|
|
[Compilation.allTests]
|