From 3b3ea45da92fb812ca066fe8b633f3598294eb27 Mon Sep 17 00:00:00 2001 From: Jonathan Cubides Date: Fri, 8 Jul 2022 07:59:45 -0400 Subject: [PATCH] Rename MiniJuvix to Juvix (#259) * Renaming MiniJuvix to Juvix * Make Ormolu happy * Make Hlint happy * Remove redundant imports * Fix shell tests and add target ci to our Makefile * Make pre-commit happy --- .github/workflows/ci.yml | 2 +- .github_changelog_generator | 4 +- .gitignore | 4 +- .gitmodules | 6 +- .pre-commit-config.yaml | 2 +- Makefile | 15 +- README.org | 48 +- app/App.hs | 16 +- app/CLI.hs | 10 +- app/Command.hs | 22 +- app/Commands/Compile.hs | 16 +- app/Commands/Extra.hs | 6 +- app/Commands/Html.hs | 4 +- app/Commands/MicroJuvix.hs | 8 +- app/Commands/Parse.hs | 2 +- app/Commands/Scope.hs | 2 +- app/Commands/Termination.hs | 8 +- app/GlobalOptions.hs | 4 +- app/Main.hs | 56 +-- book.toml | 2 +- docs/org/SUMMARY.org | 2 +- docs/org/compiler-architecture/languages.org | 2 +- .../backend-specific/minic-hello-world.org | 6 +- .../validity-predicates/PolyFungibleToken.org | 2 +- docs/org/getting-started/dependencies.org | 2 +- docs/org/getting-started/quick-start.org | 16 +- docs/org/introduction/about/community.org | 4 +- docs/org/introduction/about/team.org | 2 +- docs/org/introduction/about/what-is.org | 26 +- docs/org/introduction/changelog.org | 274 +++++------ docs/org/language-reference/axiom.org | 2 +- docs/org/language-reference/functions.org | 2 +- .../termination-checking.org | 4 +- docs/org/notes/builtins.org | 2 +- docs/org/notes/monomorphization.org | 8 +- docs/org/tooling/CLI.org | 28 +- docs/org/tooling/README.org | 2 +- docs/org/tooling/emacs-mode.org | 12 +- ...niTicTacToe.mjuvix => MiniTicTacToe.juvix} | 0 .../juvix.yaml} | 0 .../Anoma/{Base.mjuvix => Base.juvix} | 0 examples/milestone/ValidityPredicates/Data | 1 - .../Data/Bool.juvix} | 0 .../Data/Int.juvix} | 0 .../Data/List.juvix} | 0 .../Data/Maybe.juvix} | 0 .../Data/Nat.juvix} | 4 +- .../Data/Pair.juvix} | 0 .../Data/String.juvix} | 0 .../Prelude.juvix} | 0 .../ValidityPredicates/Prelude.mjuvix | 1 - ...Token.mjuvix => SimpleFungibleToken.juvix} | 0 examples/milestone/ValidityPredicates/System | 1 - .../System/IO.juvix} | 0 .../{Tests.mjuvix => Tests.juvix} | 0 .../juvix.yaml} | 0 hie.yaml | 6 +- .../flycheck-juvix.el | 24 +- juvix-mode/juvix-customize.el | 12 + .../juvix-highlight.el | 50 +- .../juvix-input.el | 432 +++++++++--------- juvix-mode/juvix-mode.el | 66 +++ juvix-stdlib | 1 + minic-runtime/libc/minic-runtime.h | 4 +- minic-runtime/standalone/minic-runtime.h | 4 +- minijuvix-mode/minijuvix-customize.el | 12 - minijuvix-mode/minijuvix-mode.el | 66 --- minijuvix-stdlib | 1 - package.yaml | 24 +- src/Juvix/Builtins.hs | 10 + src/{MiniJuvix => Juvix}/Builtins/Base.hs | 10 +- src/{MiniJuvix => Juvix}/Builtins/Effect.hs | 18 +- src/{MiniJuvix => Juvix}/Builtins/Error.hs | 10 +- src/{MiniJuvix => Juvix}/Builtins/IO.hs | 8 +- src/{MiniJuvix => Juvix}/Builtins/Natural.hs | 12 +- .../Internal/NameIdGen.hs | 10 +- src/{MiniJuvix => Juvix}/Internal/Strings.hs | 8 +- src/Juvix/Pipeline.hs | 154 +++++++ .../Pipeline/EntryPoint.hs | 6 +- src/{MiniJuvix => Juvix}/Pipeline/Setup.hs | 10 +- src/Juvix/Prelude.hs | 12 + src/{MiniJuvix => Juvix}/Prelude/Base.hs | 4 +- src/Juvix/Prelude/Error.hs | 21 + .../Prelude/Error/GenericError.hs | 10 +- src/{MiniJuvix => Juvix}/Prelude/Files.hs | 10 +- .../Prelude/Files/Error.hs | 8 +- src/{MiniJuvix => Juvix}/Prelude/Lens.hs | 4 +- src/{MiniJuvix => Juvix}/Prelude/Pretty.hs | 6 +- src/Juvix/Syntax/Abstract/AbstractResult.hs | 23 + .../Syntax/Abstract/InfoTable.hs | 8 +- .../Syntax/Abstract/InfoTableBuilder.hs | 12 +- .../Syntax/Abstract/Language.hs | 38 +- .../Syntax/Abstract/Language/Extra.hs | 12 +- .../Syntax/Abstract/Name.hs | 20 +- .../Syntax/Abstract/Pretty.hs | 16 +- .../Syntax/Abstract/Pretty/Ann.hs | 8 +- .../Syntax/Abstract/Pretty/Ansi.hs | 10 +- .../Syntax/Abstract/Pretty/Base.hs | 20 +- .../Syntax/Abstract/Pretty/Options.hs | 4 +- .../Syntax/Abstract/Quasiquoter.hs | 36 +- src/{MiniJuvix => Juvix}/Syntax/Backends.hs | 4 +- .../Syntax/Concrete/Base.hs | 4 +- .../Syntax/Concrete/Builtins.hs | 8 +- .../Syntax/Concrete/Language.hs | 80 ++-- .../Syntax/Concrete/Language/Stage.hs | 4 +- .../Syntax/Concrete/Lexer.hs | 12 +- .../Syntax/Concrete/Literal.hs | 6 +- .../Syntax/Concrete/LiteralLoc.hs | 14 +- .../Syntax/Concrete/Loc.hs | 4 +- .../Syntax/Concrete/ModuleIsTop.hs | 4 +- .../Syntax/Concrete/Name.hs | 6 +- .../Syntax/Concrete/Parser.hs | 32 +- src/Juvix/Syntax/Concrete/Parser/Base.hs | 1 + .../Syntax/Concrete/Parser/Error.hs | 8 +- .../Syntax/Concrete/Parser/InfoTable.hs | 6 +- .../Concrete/Parser/InfoTableBuilder.hs | 12 +- .../Syntax/Concrete/Parser/ParsedItem.hs | 4 +- .../Syntax/Concrete/Parser/ParserResult.hs | 10 +- .../Syntax/Concrete/PublicAnn.hs | 4 +- .../Syntax/Concrete/Scoped/Error.hs | 14 +- src/Juvix/Syntax/Concrete/Scoped/Error/Ann.hs | 7 + .../Syntax/Concrete/Scoped/Error/Pretty.hs | 16 +- .../Concrete/Scoped/Error/Pretty/Ansi.hs | 10 + .../Syntax/Concrete/Scoped/Error/Types.hs | 26 +- .../Syntax/Concrete/Scoped/Highlight.hs | 16 +- .../Syntax/Concrete/Scoped/InfoTable.hs | 8 +- .../Syntax/Concrete/Scoped/Name.hs | 21 +- .../Syntax/Concrete/Scoped/Name/NameKind.hs | 6 +- .../Syntax/Concrete/Scoped/NameRef.hs | 6 +- .../Syntax/Concrete/Scoped/Pretty.hs | 20 +- .../Syntax/Concrete/Scoped/Pretty/Ann.hs | 6 +- .../Syntax/Concrete/Scoped/Pretty/Ansi.hs | 8 +- .../Syntax/Concrete/Scoped/Pretty/Base.hs | 24 +- .../Syntax/Concrete/Scoped/Pretty/Html.hs | 20 +- .../Syntax/Concrete/Scoped/Pretty/Options.hs | 4 +- .../Syntax/Concrete/Scoped/Scope.hs | 16 +- .../Syntax/Concrete/Scoped/Scoper.hs | 43 +- .../Scoped/Scoper/InfoTableBuilder.hs | 10 +- .../Concrete/Scoped/Scoper/ScoperResult.hs | 15 + .../Syntax/Concrete/Scoped/Utils.hs | 8 +- .../Syntax/Concrete/Scoped/VisibilityAnn.hs | 8 + src/{MiniJuvix => Juvix}/Syntax/Fixity.hs | 4 +- .../Syntax/ForeignBlock.hs | 6 +- src/{MiniJuvix => Juvix}/Syntax/Hole.hs | 6 +- src/{MiniJuvix => Juvix}/Syntax/IsImplicit.hs | 4 +- .../Syntax/MicroJuvix/ArityChecker.hs | 26 +- .../Syntax/MicroJuvix/ArityChecker/Arity.hs | 4 +- .../Syntax/MicroJuvix/ArityChecker/Error.hs | 10 +- .../MicroJuvix/ArityChecker/Error/Types.hs | 12 +- .../MicroJuvix/ArityChecker/LocalVars.hs | 8 +- .../Syntax/MicroJuvix/Error.hs | 18 +- .../Syntax/MicroJuvix/Error/Pretty.hs | 22 +- .../Syntax/MicroJuvix/Error/Pretty/Ann.hs | 7 + .../Syntax/MicroJuvix/Error/Pretty/Ansi.hs | 8 +- .../Syntax/MicroJuvix/Error/Types.hs | 10 +- .../Syntax/MicroJuvix/InfoTable.hs | 6 +- .../Syntax/MicroJuvix/Language.hs | 40 +- .../Syntax/MicroJuvix/Language/Extra.hs | 10 +- .../Syntax/MicroJuvix/LocalVars.hs | 6 +- .../MicroJuvix/MicroJuvixArityResult.hs | 10 +- .../Syntax/MicroJuvix/MicroJuvixResult.hs | 18 + .../MicroJuvix/MicroJuvixTypedResult.hs | 20 + .../Syntax/MicroJuvix/Pretty.hs | 18 +- src/Juvix/Syntax/MicroJuvix/Pretty/Ann.hs | 9 + .../Syntax/MicroJuvix/Pretty/Ansi.hs | 6 +- .../Syntax/MicroJuvix/Pretty/Base.hs | 26 +- .../Syntax/MicroJuvix}/Pretty/Options.hs | 4 +- .../Syntax/MicroJuvix/TypeChecker.hs | 26 +- .../MicroJuvix/TypeChecker/Inference.hs | 8 +- .../Syntax/MiniC/Language.hs | 6 +- .../Syntax/MiniC/Serialization.hs | 10 +- .../Syntax/MiniHaskell/Language.hs | 18 +- .../Syntax/MiniHaskell/MiniHaskellResult.hs | 12 + .../Syntax/MiniHaskell/Pretty.hs | 16 +- src/Juvix/Syntax/MiniHaskell/Pretty/Ann.hs | 9 + .../Syntax/MiniHaskell/Pretty/Ansi.hs | 6 +- .../Syntax/MiniHaskell/Pretty/Base.hs | 24 +- .../Syntax/MiniHaskell/Pretty/Options.hs | 4 +- .../Syntax/MonoJuvix/InfoTable.hs | 6 +- .../Syntax/MonoJuvix/Language.hs | 26 +- .../Syntax/MonoJuvix/Language/Extra.hs | 8 +- .../Syntax/MonoJuvix/LocalVars.hs | 6 +- src/Juvix/Syntax/MonoJuvix/MonoJuvixResult.hs | 40 ++ .../Syntax/MonoJuvix/Pretty.hs | 18 +- src/Juvix/Syntax/MonoJuvix/Pretty/Ann.hs | 9 + .../Syntax/MonoJuvix/Pretty/Ansi.hs | 10 +- .../Syntax/MonoJuvix/Pretty/Base.hs | 24 +- .../Syntax/MonoJuvix}/Pretty/Options.hs | 4 +- .../Syntax/MonoJuvix/Pretty/Text.hs | 6 +- src/{MiniJuvix => Juvix}/Syntax/NameId.hs | 4 +- src/{MiniJuvix => Juvix}/Syntax/Universe.hs | 6 +- src/{MiniJuvix => Juvix}/Syntax/Usage.hs | 4 +- src/{MiniJuvix => Juvix}/Syntax/Wildcard.hs | 4 +- src/Juvix/Termination.hs | 12 + .../Termination/Checker.hs | 22 +- src/Juvix/Termination/Error.hs | 19 + .../Termination/Error/Pretty.hs | 14 +- src/Juvix/Termination/Error/Pretty/Ann.hs | 7 + .../Termination/Error/Pretty/Ansi.hs | 10 +- .../Termination/Error/Types.hs | 10 +- .../Termination/FunctionCall.hs | 10 +- .../Termination/LexOrder.hs | 10 +- src/Juvix/Termination/Types.hs | 12 + .../Termination/Types/FunctionCall.hs | 10 +- .../Termination/Types/Graph.hs | 16 +- .../Termination/Types/SizeInfo.hs | 6 +- .../Termination/Types/SizeRelation.hs | 4 +- .../Translation/AbstractToMicroJuvix.hs | 34 +- .../Translation/MicroJuvixToMonoJuvix.hs | 30 +- .../TypeCallsMapBuilder.hs | 8 +- .../MicroJuvixToMonoJuvix/TypePropagation.hs | 10 +- .../Translation/MonoJuvixToMiniC.hs | 38 +- .../Translation/MonoJuvixToMiniC/Base.hs | 30 +- .../MonoJuvixToMiniC/BuiltinTable.hs | 8 +- .../Translation/MonoJuvixToMiniC/CBuilder.hs | 12 +- .../Translation/MonoJuvixToMiniC/CNames.hs | 4 +- .../Translation/MonoJuvixToMiniC/Closure.hs | 14 +- .../Translation/MonoJuvixToMiniC/Types.hs | 10 +- .../Translation/MonoJuvixToMiniHaskell.hs | 22 +- .../Translation/ScopedToAbstract.hs | 28 +- src/{MiniJuvix => Juvix}/Utils/Paths.hs | 4 +- src/{MiniJuvix => Juvix}/Utils/Version.hs | 8 +- src/MiniJuvix/Builtins.hs | 10 - src/MiniJuvix/Pipeline.hs | 154 ------- src/MiniJuvix/Prelude.hs | 12 - src/MiniJuvix/Prelude/Error.hs | 21 - .../Syntax/Abstract/AbstractResult.hs | 23 - src/MiniJuvix/Syntax/Concrete/Parser/Base.hs | 1 - .../Syntax/Concrete/Scoped/Error/Ann.hs | 7 - .../Concrete/Scoped/Error/Pretty/Ansi.hs | 10 - .../Concrete/Scoped/Scoper/ScoperResult.hs | 15 - .../Syntax/Concrete/Scoped/VisibilityAnn.hs | 8 - .../Syntax/MicroJuvix/Error/Pretty/Ann.hs | 7 - .../Syntax/MicroJuvix/MicroJuvixResult.hs | 18 - .../MicroJuvix/MicroJuvixTypedResult.hs | 20 - src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ann.hs | 9 - .../Syntax/MiniHaskell/MiniHaskellResult.hs | 12 - .../Syntax/MiniHaskell/Pretty/Ann.hs | 9 - .../Syntax/MonoJuvix/MonoJuvixResult.hs | 40 -- src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ann.hs | 9 - src/MiniJuvix/Termination.hs | 12 - src/MiniJuvix/Termination/Error.hs | 19 - src/MiniJuvix/Termination/Error/Pretty/Ann.hs | 7 - src/MiniJuvix/Termination/Types.hs | 12 - test/Arity/Negative.hs | 18 +- test/BackendC/Base.hs | 4 +- test/BackendC/Examples.hs | 4 +- test/BackendC/Positive.hs | 2 +- test/Base.hs | 4 +- test/Main.hs | 6 +- test/MonoJuvix/Positive.hs | 8 +- test/Scope/Negative.hs | 58 +-- test/Scope/Positive.hs | 56 +-- test/Termination/Negative.hs | 20 +- test/Termination/Positive.hs | 12 +- test/TypeCheck/Negative.hs | 22 +- test/TypeCheck/Positive.hs | 34 +- tests/CLI/Commands/compile.test | 8 +- tests/CLI/Commands/html.test | 10 +- tests/CLI/Commands/microjuvix.test | 24 +- tests/CLI/Commands/minic.test | 2 +- tests/CLI/Commands/minihaskell.test | 2 +- tests/CLI/Commands/monojuvix.test | 2 +- tests/CLI/Commands/parse.test | 6 +- tests/CLI/Commands/root.test | 2 +- tests/CLI/Commands/scope.test | 2 +- tests/CLI/Commands/termination.test | 19 +- tests/CLI/help.test | 11 +- tests/CLI/version.test | 4 +- tests/negative/230/{Foo.mjuvix => Foo.juvix} | 0 .../230/Foo/Data/{Bool.mjuvix => Bool.juvix} | 0 .../negative/230/{Prod.mjuvix => Prod.juvix} | 0 .../negative/230/juvix.yaml | 0 ...ctor.mjuvix => AmbiguousConstructor.juvix} | 0 ...ousExport.mjuvix => AmbiguousExport.juvix} | 0 ...ousModule.mjuvix => AmbiguousModule.juvix} | 0 ...ousSymbol.mjuvix => AmbiguousSymbol.juvix} | 0 ...tImplicit.mjuvix => AppLeftImplicit.juvix} | 0 .../{Clause.mjuvix => Clause.juvix} | 0 .../{Lambda.mjuvix => Lambda.juvix} | 0 .../juvix.yaml} | 0 ...vix => MultipleCompileBlockSameName.juvix} | 0 ...x => MultipleCompileRuleSameBackend.juvix} | 0 .../{Definitions.mjuvix => Definitions.juvix} | 0 ... => WrongKindExpressionCompileBlock.juvix} | 0 ...mjuvix => WrongLocationCompileBlock.juvix} | 0 .../juvix.yaml} | 0 ...ateFixity.mjuvix => DuplicateFixity.juvix} | 0 .../ImportCycle/{A.mjuvix => A.juvix} | 0 .../ImportCycle/{B.mjuvix => B.juvix} | 0 .../ImportCycle/{C.mjuvix => C.juvix} | 0 .../ImportCycle/{D.mjuvix => D.juvix} | 0 .../minijuvix.yaml => ImportCycle/juvix.yaml} | 0 .../{InfixError.mjuvix => InfixError.juvix} | 0 .../{InfixErrorP.mjuvix => InfixErrorP.juvix} | 0 ...lause.mjuvix => LacksFunctionClause.juvix} | 0 ...LacksTypeSig.mjuvix => LacksTypeSig.juvix} | 0 ....mjuvix => ExpectedExplicitArgument.juvix} | 0 ...n.mjuvix => ExpectedExplicitPattern.juvix} | 0 ...Type.mjuvix => ExpectedFunctionType.juvix} | 0 ...onApplied.mjuvix => FunctionApplied.juvix} | 0 ...onPattern.mjuvix => FunctionPattern.juvix} | 0 ...tterns.mjuvix => LhsTooManyPatterns.juvix} | 0 ...iWrongType.mjuvix => MultiWrongType.juvix} | 0 ...ructor.mjuvix => PatternConstructor.juvix} | 0 ...rguments.mjuvix => TooManyArguments.juvix} | 0 ...UnsolvedMeta.mjuvix => UnsolvedMeta.juvix} | 0 ...ity.mjuvix => WrongConstructorArity.juvix} | 0 ...eturnType.mjuvix => WrongReturnType.juvix} | 0 ...mjuvix => WrongReturnTypeParameters.juvix} | 0 ...x => WrongReturnTypeTooFewArguments.juvix} | 0 ... => WrongReturnTypeTooManyArguments.juvix} | 0 .../{WrongType.mjuvix => WrongType.juvix} | 0 .../minijuvix.yaml => MicroJuvix/juvix.yaml} | 0 ...tInScope.mjuvix => ModuleNotInScope.juvix} | 0 ...ions.mjuvix => MultipleDeclarations.juvix} | 0 ...ct.mjuvix => MultipleExportConflict.juvix} | 0 .../{NotInScope.mjuvix => NotInScope.juvix} | 0 ...InScope.mjuvix => QualSymNotInScope.juvix} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../Stdlib/Data/{Bool.mjuvix => Bool.juvix} | 0 .../juvix.yaml} | 0 .../Data/{Bool.mjuvix => Bool.juvix} | 0 .../Data/{Nat.mjuvix => Nat.juvix} | 0 .../{QuickSort.mjuvix => QuickSort.juvix} | 0 .../Data/{Tree.mjuvix => Tree.juvix} | 0 .../{Mutual.mjuvix => Mutual.juvix} | 0 .../Termination/{Ord.mjuvix => Ord.juvix} | 0 ...TerminatingF.mjuvix => TerminatingF.juvix} | 0 ...TerminatingG.mjuvix => TerminatingG.juvix} | 0 .../{ToEmpty.mjuvix => ToEmpty.juvix} | 0 .../minijuvix.yaml => Termination/juvix.yaml} | 0 ...atorDef.mjuvix => UnusedOperatorDef.juvix} | 0 ...oduleName.mjuvix => WrongModuleName.juvix} | 0 .../minijuvix.yaml => juvix.yaml} | 0 tests/positive/{Axiom.mjuvix => Axiom.juvix} | 0 .../BuiltinsMultiImport/{A.mjuvix => A.juvix} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../{Nat.mjuvix => Nat.juvix} | 0 .../BuiltinsMultiImport/juvix.yaml} | 0 .../{A.mjuvix => A.juvix} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../{Nat.mjuvix => Nat.juvix} | 0 .../juvix.yaml} | 0 .../{Foreign.mjuvix => Foreign.juvix} | 0 ...n.mjuvix => MonoSimpleFungibleToken.juvix} | 0 ...uvix => SimpleFungibleTokenImplicit.juvix} | 0 .../juvix.yaml} | 0 tests/positive/Imports/{A.mjuvix => A.juvix} | 0 tests/positive/Imports/{M.mjuvix => M.juvix} | 0 .../minijuvix.yaml => Imports/juvix.yaml} | 0 .../{Inductive.mjuvix => Inductive.juvix} | 0 .../{Literals.mjuvix => Literals.juvix} | 0 .../MicroJuvix/{Box.mjuvix => Box.juvix} | 0 ...Signature.mjuvix => HoleInSignature.juvix} | 0 .../{Implicit.mjuvix => Implicit.juvix} | 0 .../{LiteralInt.mjuvix => LiteralInt.juvix} | 0 ...teralString.mjuvix => LiteralString.juvix} | 0 .../{Simple.mjuvix => Simple.juvix} | 0 .../minijuvix.yaml => MicroJuvix/juvix.yaml} | 0 .../Builtins/{Input.mjuvix => Input.juvix} | 0 .../Builtins/juvix.yaml} | 0 .../ClosureEnv/{Input.mjuvix => Input.juvix} | 0 .../minijuvix.yaml => ClosureEnv/juvix.yaml} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../juvix.yaml} | 0 .../HelloWorld/{Input.mjuvix => Input.juvix} | 0 .../minijuvix.yaml => HelloWorld/juvix.yaml} | 0 .../HigherOrder/{Input.mjuvix => Input.juvix} | 0 .../minijuvix.yaml => HigherOrder/juvix.yaml} | 0 .../Lib/Data/{Bool.mjuvix => Bool.juvix} | 0 .../MiniC/Lib/Data/{IO.mjuvix => IO.juvix} | 0 .../MiniC/Lib/Data/{Int.mjuvix => Int.juvix} | 0 .../MiniC/Lib/Data/{Nat.mjuvix => Nat.juvix} | 4 +- .../Lib/Data/{Pair.mjuvix => Pair.juvix} | 0 .../Lib/Data/{String.mjuvix => String.juvix} | 0 .../Lib/{Prelude.mjuvix => Prelude.juvix} | 0 tests/positive/MiniC/MultiModules/Data | 1 - .../MiniC/MultiModules/Data/Bool.juvix | 18 + .../positive/MiniC/MultiModules/Data/IO.juvix | 41 ++ .../MiniC/MultiModules/Data/Int.juvix | 28 ++ .../MiniC/MultiModules/Data/Nat.juvix | 34 ++ .../MiniC/MultiModules/Data/Pair.juvix | 11 + .../MiniC/MultiModules/Data/String.juvix | 10 + .../{Input.mjuvix => Input.juvix} | 0 .../positive/MiniC/MultiModules/Prelude.juvix | 15 + .../MiniC/MultiModules/Prelude.mjuvix | 1 - .../juvix.yaml} | 0 tests/positive/MiniC/MutuallyRecursive/Data | 1 - .../MiniC/MutuallyRecursive/Data/Bool.juvix | 18 + .../MiniC/MutuallyRecursive/Data/IO.juvix | 41 ++ .../MiniC/MutuallyRecursive/Data/Int.juvix | 28 ++ .../MiniC/MutuallyRecursive/Data/Nat.juvix | 34 ++ .../MiniC/MutuallyRecursive/Data/Pair.juvix | 11 + .../MiniC/MutuallyRecursive/Data/String.juvix | 10 + .../{Input.mjuvix => Input.juvix} | 0 .../MiniC/MutuallyRecursive/Prelude.juvix | 15 + .../MiniC/MutuallyRecursive/Prelude.mjuvix | 1 - .../juvix.yaml} | 0 .../MiniC/Nat/{Input.mjuvix => Input.juvix} | 0 .../minijuvix.yaml => Nat/juvix.yaml} | 0 .../NestedList/{Input.mjuvix => Input.juvix} | 0 .../minijuvix.yaml => NestedList/juvix.yaml} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../juvix.yaml} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../juvix.yaml} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../juvix.yaml} | 0 .../{Input.mjuvix => Input.juvix} | 0 .../juvix.yaml} | 0 .../{HelloWorld.mjuvix => HelloWorld.juvix} | 0 .../minijuvix.yaml => MiniHaskell/juvix.yaml} | 0 .../{Operators.mjuvix => Operators.juvix} | 0 .../{Parsing.mjuvix => Parsing.juvix} | 0 ...Polymorphism.mjuvix => Polymorphism.juvix} | 0 ...smHoles.mjuvix => PolymorphismHoles.juvix} | 0 .../{M.mjuvix => M.juvix} | 0 .../juvix.yaml} | 0 .../QualifiedSymbol/{M.mjuvix => M.juvix} | 0 .../juvix.yaml} | 0 .../QualifiedSymbol2/{M.mjuvix => M.juvix} | 0 .../QualifiedSymbol2/{N.mjuvix => N.juvix} | 0 .../juvix.yaml} | 0 ...blicOpen.mjuvix => ShadowPublicOpen.juvix} | 0 .../StdlibImport/{A.mjuvix => A.juvix} | 0 ...StdlibImport.mjuvix => StdlibImport.juvix} | 0 .../juvix.yaml} | 0 .../Data/{Bool.mjuvix => Bool.juvix} | 0 .../Data/{List.mjuvix => List.juvix} | 0 .../Data/{Maybe.mjuvix => Maybe.juvix} | 0 .../StdlibList/Data/{Nat.mjuvix => Nat.juvix} | 0 .../StdlibList/Data/{Ord.mjuvix => Ord.juvix} | 0 .../Data/{Product.mjuvix => Product.juvix} | 0 .../minijuvix.yaml => StdlibList/juvix.yaml} | 0 .../Termination/{Ack.mjuvix => Ack.juvix} | 0 .../Data/{Bool.mjuvix => Bool.juvix} | 0 .../Data/{List.mjuvix => List.juvix} | 0 .../Data/{Nat.mjuvix => Nat.juvix} | 0 .../{Mutual.mjuvix => Mutual.juvix} | 0 .../{ToEmpty.mjuvix => ToEmpty.juvix} | 0 .../{Undefined.mjuvix => Undefined.juvix} | 0 .../minijuvix.yaml => Termination/juvix.yaml} | 0 .../minijuvix.yaml => juvix.yaml} | 0 tests/positive/minijuvix.yaml | 0 445 files changed, 2435 insertions(+), 2131 deletions(-) rename examples/milestone/MiniTicTacToe/{MiniTicTacToe.mjuvix => MiniTicTacToe.juvix} (100%) rename examples/milestone/{Lib/minijuvix.yaml => MiniTicTacToe/juvix.yaml} (100%) rename examples/milestone/ValidityPredicates/Anoma/{Base.mjuvix => Base.juvix} (100%) delete mode 120000 examples/milestone/ValidityPredicates/Data rename examples/milestone/{Lib/Data/Bool.mjuvix => ValidityPredicates/Data/Bool.juvix} (100%) rename examples/milestone/{Lib/Data/Int.mjuvix => ValidityPredicates/Data/Int.juvix} (100%) rename examples/milestone/{Lib/Data/List.mjuvix => ValidityPredicates/Data/List.juvix} (100%) rename examples/milestone/{Lib/Data/Maybe.mjuvix => ValidityPredicates/Data/Maybe.juvix} (100%) rename examples/milestone/{Lib/Data/Nat.mjuvix => ValidityPredicates/Data/Nat.juvix} (90%) rename examples/milestone/{Lib/Data/Pair.mjuvix => ValidityPredicates/Data/Pair.juvix} (100%) rename examples/milestone/{Lib/Data/String.mjuvix => ValidityPredicates/Data/String.juvix} (100%) rename examples/milestone/{Lib/Prelude.mjuvix => ValidityPredicates/Prelude.juvix} (100%) delete mode 120000 examples/milestone/ValidityPredicates/Prelude.mjuvix rename examples/milestone/ValidityPredicates/{SimpleFungibleToken.mjuvix => SimpleFungibleToken.juvix} (100%) delete mode 120000 examples/milestone/ValidityPredicates/System rename examples/milestone/{Lib/System/IO.mjuvix => ValidityPredicates/System/IO.juvix} (100%) rename examples/milestone/ValidityPredicates/{Tests.mjuvix => Tests.juvix} (100%) rename examples/milestone/{MiniTicTacToe/minijuvix.yaml => ValidityPredicates/juvix.yaml} (100%) rename minijuvix-mode/flycheck-minijuvix.el => juvix-mode/flycheck-juvix.el (52%) create mode 100644 juvix-mode/juvix-customize.el rename minijuvix-mode/minijuvix-highlight.el => juvix-mode/juvix-highlight.el (59%) rename minijuvix-mode/minijuvix-input.el => juvix-mode/juvix-input.el (65%) create mode 100644 juvix-mode/juvix-mode.el create mode 160000 juvix-stdlib delete mode 100644 minijuvix-mode/minijuvix-customize.el delete mode 100644 minijuvix-mode/minijuvix-mode.el delete mode 160000 minijuvix-stdlib create mode 100644 src/Juvix/Builtins.hs rename src/{MiniJuvix => Juvix}/Builtins/Base.hs (75%) rename src/{MiniJuvix => Juvix}/Builtins/Effect.hs (79%) rename src/{MiniJuvix => Juvix}/Builtins/Error.hs (85%) rename src/{MiniJuvix => Juvix}/Builtins/IO.hs (77%) rename src/{MiniJuvix => Juvix}/Builtins/Natural.hs (92%) rename src/{MiniJuvix => Juvix}/Internal/NameIdGen.hs (77%) rename src/{MiniJuvix => Juvix}/Internal/Strings.hs (96%) create mode 100644 src/Juvix/Pipeline.hs rename src/{MiniJuvix => Juvix}/Pipeline/EntryPoint.hs (86%) rename src/{MiniJuvix => Juvix}/Pipeline/Setup.hs (71%) create mode 100644 src/Juvix/Prelude.hs rename src/{MiniJuvix => Juvix}/Prelude/Base.hs (99%) create mode 100644 src/Juvix/Prelude/Error.hs rename src/{MiniJuvix => Juvix}/Prelude/Error/GenericError.hs (92%) rename src/{MiniJuvix => Juvix}/Prelude/Files.hs (92%) rename src/{MiniJuvix => Juvix}/Prelude/Files/Error.hs (87%) rename src/{MiniJuvix => Juvix}/Prelude/Lens.hs (62%) rename src/{MiniJuvix => Juvix}/Prelude/Pretty.hs (96%) create mode 100644 src/Juvix/Syntax/Abstract/AbstractResult.hs rename src/{MiniJuvix => Juvix}/Syntax/Abstract/InfoTable.hs (85%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/InfoTableBuilder.hs (87%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Language.hs (85%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Language/Extra.hs (97%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Name.hs (67%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Pretty.hs (65%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Pretty/Ann.hs (68%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Pretty/Ansi.hs (51%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Pretty/Base.hs (90%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Pretty/Options.hs (81%) rename src/{MiniJuvix => Juvix}/Syntax/Abstract/Quasiquoter.hs (65%) rename src/{MiniJuvix => Juvix}/Syntax/Backends.hs (82%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Base.hs (86%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Builtins.hs (92%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Language.hs (94%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Language/Stage.hs (53%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Lexer.hs (96%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Literal.hs (81%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/LiteralLoc.hs (67%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Loc.hs (97%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/ModuleIsTop.hs (59%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Name.hs (94%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Parser.hs (95%) create mode 100644 src/Juvix/Syntax/Concrete/Parser/Base.hs rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Parser/Error.hs (84%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Parser/InfoTable.hs (55%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Parser/InfoTableBuilder.hs (86%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Parser/ParsedItem.hs (83%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Parser/ParserResult.hs (50%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/PublicAnn.hs (71%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Error.hs (85%) create mode 100644 src/Juvix/Syntax/Concrete/Scoped/Error/Ann.hs rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Error/Pretty.hs (68%) create mode 100644 src/Juvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Error/Types.hs (96%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Highlight.hs (90%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/InfoTable.hs (88%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Name.hs (88%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Name/NameKind.hs (94%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/NameRef.hs (94%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Pretty.hs (53%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Pretty/Ann.hs (52%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Pretty/Ansi.hs (63%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Pretty/Base.hs (97%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Pretty/Html.hs (90%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Pretty/Options.hs (76%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Scope.hs (84%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Scoper.hs (98%) rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Scoper/InfoTableBuilder.hs (93%) create mode 100644 src/Juvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs rename src/{MiniJuvix => Juvix}/Syntax/Concrete/Scoped/Utils.hs (86%) create mode 100644 src/Juvix/Syntax/Concrete/Scoped/VisibilityAnn.hs rename src/{MiniJuvix => Juvix}/Syntax/Fixity.hs (96%) rename src/{MiniJuvix => Juvix}/Syntax/ForeignBlock.hs (60%) rename src/{MiniJuvix => Juvix}/Syntax/Hole.hs (82%) rename src/{MiniJuvix => Juvix}/Syntax/IsImplicit.hs (62%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/ArityChecker.hs (95%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/ArityChecker/Arity.hs (91%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/ArityChecker/Error.hs (75%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/ArityChecker/Error/Types.hs (95%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/ArityChecker/LocalVars.hs (73%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Error.hs (69%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Error/Pretty.hs (69%) create mode 100644 src/Juvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Error/Pretty/Ansi.hs (55%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Error/Types.hs (97%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/InfoTable.hs (97%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Language.hs (86%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Language/Extra.hs (98%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/LocalVars.hs (77%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/MicroJuvixArityResult.hs (51%) create mode 100644 src/Juvix/Syntax/MicroJuvix/MicroJuvixResult.hs create mode 100644 src/Juvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Pretty.hs (66%) create mode 100644 src/Juvix/Syntax/MicroJuvix/Pretty/Ann.hs rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Pretty/Ansi.hs (60%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/Pretty/Base.hs (94%) rename src/{MiniJuvix/Syntax/MonoJuvix => Juvix/Syntax/MicroJuvix}/Pretty/Options.hs (72%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/TypeChecker.hs (95%) rename src/{MiniJuvix => Juvix}/Syntax/MicroJuvix/TypeChecker/Inference.hs (96%) rename src/{MiniJuvix => Juvix}/Syntax/MiniC/Language.hs (98%) rename src/{MiniJuvix => Juvix}/Syntax/MiniC/Serialization.hs (96%) rename src/{MiniJuvix => Juvix}/Syntax/MiniHaskell/Language.hs (89%) create mode 100644 src/Juvix/Syntax/MiniHaskell/MiniHaskellResult.hs rename src/{MiniJuvix => Juvix}/Syntax/MiniHaskell/Pretty.hs (61%) create mode 100644 src/Juvix/Syntax/MiniHaskell/Pretty/Ann.hs rename src/{MiniJuvix => Juvix}/Syntax/MiniHaskell/Pretty/Ansi.hs (60%) rename src/{MiniJuvix => Juvix}/Syntax/MiniHaskell/Pretty/Base.hs (90%) rename src/{MiniJuvix => Juvix}/Syntax/MiniHaskell/Pretty/Options.hs (65%) rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/InfoTable.hs (96%) rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/Language.hs (84%) rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/Language/Extra.hs (50%) rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/LocalVars.hs (54%) create mode 100644 src/Juvix/Syntax/MonoJuvix/MonoJuvixResult.hs rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/Pretty.hs (59%) create mode 100644 src/Juvix/Syntax/MonoJuvix/Pretty/Ann.hs rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/Pretty/Ansi.hs (79%) rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/Pretty/Base.hs (93%) rename src/{MiniJuvix/Syntax/MicroJuvix => Juvix/Syntax/MonoJuvix}/Pretty/Options.hs (72%) rename src/{MiniJuvix => Juvix}/Syntax/MonoJuvix/Pretty/Text.hs (82%) rename src/{MiniJuvix => Juvix}/Syntax/NameId.hs (78%) rename src/{MiniJuvix => Juvix}/Syntax/Universe.hs (92%) rename src/{MiniJuvix => Juvix}/Syntax/Usage.hs (59%) rename src/{MiniJuvix => Juvix}/Syntax/Wildcard.hs (86%) create mode 100644 src/Juvix/Termination.hs rename src/{MiniJuvix => Juvix}/Termination/Checker.hs (88%) create mode 100644 src/Juvix/Termination/Error.hs rename src/{MiniJuvix => Juvix}/Termination/Error/Pretty.hs (67%) create mode 100644 src/Juvix/Termination/Error/Pretty/Ann.hs rename src/{MiniJuvix => Juvix}/Termination/Error/Pretty/Ansi.hs (53%) rename src/{MiniJuvix => Juvix}/Termination/Error/Types.hs (73%) rename src/{MiniJuvix => Juvix}/Termination/FunctionCall.hs (92%) rename src/{MiniJuvix => Juvix}/Termination/LexOrder.hs (96%) create mode 100644 src/Juvix/Termination/Types.hs rename src/{MiniJuvix => Juvix}/Termination/Types/FunctionCall.hs (91%) rename src/{MiniJuvix => Juvix}/Termination/Types/Graph.hs (86%) rename src/{MiniJuvix => Juvix}/Termination/Types/SizeInfo.hs (85%) rename src/{MiniJuvix => Juvix}/Termination/Types/SizeRelation.hs (93%) rename src/{MiniJuvix => Juvix}/Translation/AbstractToMicroJuvix.hs (93%) rename src/{MiniJuvix => Juvix}/Translation/MicroJuvixToMonoJuvix.hs (95%) rename src/{MiniJuvix => Juvix}/Translation/MicroJuvixToMonoJuvix/TypeCallsMapBuilder.hs (95%) rename src/{MiniJuvix => Juvix}/Translation/MicroJuvixToMonoJuvix/TypePropagation.hs (91%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniC.hs (96%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniC/Base.hs (89%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniC/BuiltinTable.hs (81%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniC/CBuilder.hs (86%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniC/CNames.hs (94%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniC/Closure.hs (96%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniC/Types.hs (81%) rename src/{MiniJuvix => Juvix}/Translation/MonoJuvixToMiniHaskell.hs (92%) rename src/{MiniJuvix => Juvix}/Translation/ScopedToAbstract.hs (95%) rename src/{MiniJuvix => Juvix}/Utils/Paths.hs (72%) rename src/{MiniJuvix => Juvix}/Utils/Version.hs (90%) delete mode 100644 src/MiniJuvix/Builtins.hs delete mode 100644 src/MiniJuvix/Pipeline.hs delete mode 100644 src/MiniJuvix/Prelude.hs delete mode 100644 src/MiniJuvix/Prelude/Error.hs delete mode 100644 src/MiniJuvix/Syntax/Abstract/AbstractResult.hs delete mode 100644 src/MiniJuvix/Syntax/Concrete/Parser/Base.hs delete mode 100644 src/MiniJuvix/Syntax/Concrete/Scoped/Error/Ann.hs delete mode 100644 src/MiniJuvix/Syntax/Concrete/Scoped/Error/Pretty/Ansi.hs delete mode 100644 src/MiniJuvix/Syntax/Concrete/Scoped/Scoper/ScoperResult.hs delete mode 100644 src/MiniJuvix/Syntax/Concrete/Scoped/VisibilityAnn.hs delete mode 100644 src/MiniJuvix/Syntax/MicroJuvix/Error/Pretty/Ann.hs delete mode 100644 src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixResult.hs delete mode 100644 src/MiniJuvix/Syntax/MicroJuvix/MicroJuvixTypedResult.hs delete mode 100644 src/MiniJuvix/Syntax/MicroJuvix/Pretty/Ann.hs delete mode 100644 src/MiniJuvix/Syntax/MiniHaskell/MiniHaskellResult.hs delete mode 100644 src/MiniJuvix/Syntax/MiniHaskell/Pretty/Ann.hs delete mode 100644 src/MiniJuvix/Syntax/MonoJuvix/MonoJuvixResult.hs delete mode 100644 src/MiniJuvix/Syntax/MonoJuvix/Pretty/Ann.hs delete mode 100644 src/MiniJuvix/Termination.hs delete mode 100644 src/MiniJuvix/Termination/Error.hs delete mode 100644 src/MiniJuvix/Termination/Error/Pretty/Ann.hs delete mode 100644 src/MiniJuvix/Termination/Types.hs rename tests/negative/230/{Foo.mjuvix => Foo.juvix} (100%) rename tests/negative/230/Foo/Data/{Bool.mjuvix => Bool.juvix} (100%) rename tests/negative/230/{Prod.mjuvix => Prod.juvix} (100%) rename examples/milestone/ValidityPredicates/minijuvix.yaml => tests/negative/230/juvix.yaml (100%) rename tests/negative/{AmbiguousConstructor.mjuvix => AmbiguousConstructor.juvix} (100%) rename tests/negative/{AmbiguousExport.mjuvix => AmbiguousExport.juvix} (100%) rename tests/negative/{AmbiguousModule.mjuvix => AmbiguousModule.juvix} (100%) rename tests/negative/{AmbiguousSymbol.mjuvix => AmbiguousSymbol.juvix} (100%) rename tests/negative/{AppLeftImplicit.mjuvix => AppLeftImplicit.juvix} (100%) rename tests/negative/BindGroupConflict/{Clause.mjuvix => Clause.juvix} (100%) rename tests/negative/BindGroupConflict/{Lambda.mjuvix => Lambda.juvix} (100%) rename tests/negative/{230/minijuvix.yaml => BindGroupConflict/juvix.yaml} (100%) rename tests/negative/CompileBlocks/{MultipleCompileBlockSameName.mjuvix => MultipleCompileBlockSameName.juvix} (100%) rename tests/negative/CompileBlocks/{MultipleCompileRuleSameBackend.mjuvix => MultipleCompileRuleSameBackend.juvix} (100%) rename tests/negative/CompileBlocks/Sample/{Definitions.mjuvix => Definitions.juvix} (100%) rename tests/negative/CompileBlocks/{WrongKindExpressionCompileBlock.mjuvix => WrongKindExpressionCompileBlock.juvix} (100%) rename tests/negative/CompileBlocks/{WrongLocationCompileBlock.mjuvix => WrongLocationCompileBlock.juvix} (100%) rename tests/negative/{BindGroupConflict/minijuvix.yaml => CompileBlocks/juvix.yaml} (100%) rename tests/negative/{DuplicateFixity.mjuvix => DuplicateFixity.juvix} (100%) rename tests/negative/ImportCycle/{A.mjuvix => A.juvix} (100%) rename tests/negative/ImportCycle/{B.mjuvix => B.juvix} (100%) rename tests/negative/ImportCycle/{C.mjuvix => C.juvix} (100%) rename tests/negative/ImportCycle/{D.mjuvix => D.juvix} (100%) rename tests/negative/{CompileBlocks/minijuvix.yaml => ImportCycle/juvix.yaml} (100%) rename tests/negative/{InfixError.mjuvix => InfixError.juvix} (100%) rename tests/negative/{InfixErrorP.mjuvix => InfixErrorP.juvix} (100%) rename tests/negative/{LacksFunctionClause.mjuvix => LacksFunctionClause.juvix} (100%) rename tests/negative/{LacksTypeSig.mjuvix => LacksTypeSig.juvix} (100%) rename tests/negative/MicroJuvix/{ExpectedExplicitArgument.mjuvix => ExpectedExplicitArgument.juvix} (100%) rename tests/negative/MicroJuvix/{ExpectedExplicitPattern.mjuvix => ExpectedExplicitPattern.juvix} (100%) rename tests/negative/MicroJuvix/{ExpectedFunctionType.mjuvix => ExpectedFunctionType.juvix} (100%) rename tests/negative/MicroJuvix/{FunctionApplied.mjuvix => FunctionApplied.juvix} (100%) rename tests/negative/MicroJuvix/{FunctionPattern.mjuvix => FunctionPattern.juvix} (100%) rename tests/negative/MicroJuvix/{LhsTooManyPatterns.mjuvix => LhsTooManyPatterns.juvix} (100%) rename tests/negative/MicroJuvix/{MultiWrongType.mjuvix => MultiWrongType.juvix} (100%) rename tests/negative/MicroJuvix/{PatternConstructor.mjuvix => PatternConstructor.juvix} (100%) rename tests/negative/MicroJuvix/{TooManyArguments.mjuvix => TooManyArguments.juvix} (100%) rename tests/negative/MicroJuvix/{UnsolvedMeta.mjuvix => UnsolvedMeta.juvix} (100%) rename tests/negative/MicroJuvix/{WrongConstructorArity.mjuvix => WrongConstructorArity.juvix} (100%) rename tests/negative/MicroJuvix/{WrongReturnType.mjuvix => WrongReturnType.juvix} (100%) rename tests/negative/MicroJuvix/{WrongReturnTypeParameters.mjuvix => WrongReturnTypeParameters.juvix} (100%) rename tests/negative/MicroJuvix/{WrongReturnTypeTooFewArguments.mjuvix => WrongReturnTypeTooFewArguments.juvix} (100%) rename tests/negative/MicroJuvix/{WrongReturnTypeTooManyArguments.mjuvix => WrongReturnTypeTooManyArguments.juvix} (100%) rename tests/negative/MicroJuvix/{WrongType.mjuvix => WrongType.juvix} (100%) rename tests/negative/{ImportCycle/minijuvix.yaml => MicroJuvix/juvix.yaml} (100%) rename tests/negative/{ModuleNotInScope.mjuvix => ModuleNotInScope.juvix} (100%) rename tests/negative/{MultipleDeclarations.mjuvix => MultipleDeclarations.juvix} (100%) rename tests/negative/{MultipleExportConflict.mjuvix => MultipleExportConflict.juvix} (100%) rename tests/negative/{NotInScope.mjuvix => NotInScope.juvix} (100%) rename tests/negative/{QualSymNotInScope.mjuvix => QualSymNotInScope.juvix} (100%) rename tests/negative/StdlibConflict/{Input.mjuvix => Input.juvix} (100%) rename tests/negative/StdlibConflict/Stdlib/Data/{Bool.mjuvix => Bool.juvix} (100%) rename tests/negative/{MicroJuvix/minijuvix.yaml => StdlibConflict/juvix.yaml} (100%) rename tests/negative/Termination/Data/{Bool.mjuvix => Bool.juvix} (100%) rename tests/negative/Termination/Data/{Nat.mjuvix => Nat.juvix} (100%) rename tests/negative/Termination/Data/{QuickSort.mjuvix => QuickSort.juvix} (100%) rename tests/negative/Termination/Data/{Tree.mjuvix => Tree.juvix} (100%) rename tests/negative/Termination/{Mutual.mjuvix => Mutual.juvix} (100%) rename tests/negative/Termination/{Ord.mjuvix => Ord.juvix} (100%) rename tests/negative/Termination/{TerminatingF.mjuvix => TerminatingF.juvix} (100%) rename tests/negative/Termination/{TerminatingG.mjuvix => TerminatingG.juvix} (100%) rename tests/negative/Termination/{ToEmpty.mjuvix => ToEmpty.juvix} (100%) rename tests/negative/{StdlibConflict/minijuvix.yaml => Termination/juvix.yaml} (100%) rename tests/negative/{UnusedOperatorDef.mjuvix => UnusedOperatorDef.juvix} (100%) rename tests/negative/{WrongModuleName.mjuvix => WrongModuleName.juvix} (100%) rename tests/negative/{Termination/minijuvix.yaml => juvix.yaml} (100%) rename tests/positive/{Axiom.mjuvix => Axiom.juvix} (100%) rename tests/positive/BuiltinsMultiImport/{A.mjuvix => A.juvix} (100%) rename tests/positive/BuiltinsMultiImport/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/BuiltinsMultiImport/{Nat.mjuvix => Nat.juvix} (100%) rename tests/{negative/minijuvix.yaml => positive/BuiltinsMultiImport/juvix.yaml} (100%) rename tests/positive/BuiltinsMultiOpenImport/{A.mjuvix => A.juvix} (100%) rename tests/positive/BuiltinsMultiOpenImport/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/BuiltinsMultiOpenImport/{Nat.mjuvix => Nat.juvix} (100%) rename tests/positive/{BuiltinsMultiImport/minijuvix.yaml => BuiltinsMultiOpenImport/juvix.yaml} (100%) rename tests/positive/{Foreign.mjuvix => Foreign.juvix} (100%) rename tests/positive/FullExamples/{MonoSimpleFungibleToken.mjuvix => MonoSimpleFungibleToken.juvix} (100%) rename tests/positive/FullExamples/{SimpleFungibleTokenImplicit.mjuvix => SimpleFungibleTokenImplicit.juvix} (100%) rename tests/positive/{BuiltinsMultiOpenImport/minijuvix.yaml => FullExamples/juvix.yaml} (100%) rename tests/positive/Imports/{A.mjuvix => A.juvix} (100%) rename tests/positive/Imports/{M.mjuvix => M.juvix} (100%) rename tests/positive/{FullExamples/minijuvix.yaml => Imports/juvix.yaml} (100%) rename tests/positive/{Inductive.mjuvix => Inductive.juvix} (100%) rename tests/positive/{Literals.mjuvix => Literals.juvix} (100%) rename tests/positive/MicroJuvix/{Box.mjuvix => Box.juvix} (100%) rename tests/positive/MicroJuvix/{HoleInSignature.mjuvix => HoleInSignature.juvix} (100%) rename tests/positive/MicroJuvix/{Implicit.mjuvix => Implicit.juvix} (100%) rename tests/positive/MicroJuvix/{LiteralInt.mjuvix => LiteralInt.juvix} (100%) rename tests/positive/MicroJuvix/{LiteralString.mjuvix => LiteralString.juvix} (100%) rename tests/positive/MicroJuvix/{Simple.mjuvix => Simple.juvix} (100%) rename tests/positive/{Imports/minijuvix.yaml => MicroJuvix/juvix.yaml} (100%) rename tests/positive/MiniC/Builtins/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/{MicroJuvix/minijuvix.yaml => MiniC/Builtins/juvix.yaml} (100%) rename tests/positive/MiniC/ClosureEnv/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{Builtins/minijuvix.yaml => ClosureEnv/juvix.yaml} (100%) rename tests/positive/MiniC/ClosureNoEnv/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{ClosureEnv/minijuvix.yaml => ClosureNoEnv/juvix.yaml} (100%) rename tests/positive/MiniC/HelloWorld/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{ClosureNoEnv/minijuvix.yaml => HelloWorld/juvix.yaml} (100%) rename tests/positive/MiniC/HigherOrder/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{HelloWorld/minijuvix.yaml => HigherOrder/juvix.yaml} (100%) rename tests/positive/MiniC/Lib/Data/{Bool.mjuvix => Bool.juvix} (100%) rename tests/positive/MiniC/Lib/Data/{IO.mjuvix => IO.juvix} (100%) rename tests/positive/MiniC/Lib/Data/{Int.mjuvix => Int.juvix} (100%) rename tests/positive/MiniC/Lib/Data/{Nat.mjuvix => Nat.juvix} (72%) rename tests/positive/MiniC/Lib/Data/{Pair.mjuvix => Pair.juvix} (100%) rename tests/positive/MiniC/Lib/Data/{String.mjuvix => String.juvix} (100%) rename tests/positive/MiniC/Lib/{Prelude.mjuvix => Prelude.juvix} (100%) delete mode 120000 tests/positive/MiniC/MultiModules/Data create mode 100644 tests/positive/MiniC/MultiModules/Data/Bool.juvix create mode 100644 tests/positive/MiniC/MultiModules/Data/IO.juvix create mode 100644 tests/positive/MiniC/MultiModules/Data/Int.juvix create mode 100644 tests/positive/MiniC/MultiModules/Data/Nat.juvix create mode 100644 tests/positive/MiniC/MultiModules/Data/Pair.juvix create mode 100644 tests/positive/MiniC/MultiModules/Data/String.juvix rename tests/positive/MiniC/MultiModules/{Input.mjuvix => Input.juvix} (100%) create mode 100644 tests/positive/MiniC/MultiModules/Prelude.juvix delete mode 120000 tests/positive/MiniC/MultiModules/Prelude.mjuvix rename tests/positive/MiniC/{HigherOrder/minijuvix.yaml => MultiModules/juvix.yaml} (100%) delete mode 120000 tests/positive/MiniC/MutuallyRecursive/Data create mode 100644 tests/positive/MiniC/MutuallyRecursive/Data/Bool.juvix create mode 100644 tests/positive/MiniC/MutuallyRecursive/Data/IO.juvix create mode 100644 tests/positive/MiniC/MutuallyRecursive/Data/Int.juvix create mode 100644 tests/positive/MiniC/MutuallyRecursive/Data/Nat.juvix create mode 100644 tests/positive/MiniC/MutuallyRecursive/Data/Pair.juvix create mode 100644 tests/positive/MiniC/MutuallyRecursive/Data/String.juvix rename tests/positive/MiniC/MutuallyRecursive/{Input.mjuvix => Input.juvix} (100%) create mode 100644 tests/positive/MiniC/MutuallyRecursive/Prelude.juvix delete mode 120000 tests/positive/MiniC/MutuallyRecursive/Prelude.mjuvix rename tests/positive/MiniC/{MultiModules/minijuvix.yaml => MutuallyRecursive/juvix.yaml} (100%) rename tests/positive/MiniC/Nat/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{MutuallyRecursive/minijuvix.yaml => Nat/juvix.yaml} (100%) rename tests/positive/MiniC/NestedList/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{Nat/minijuvix.yaml => NestedList/juvix.yaml} (100%) rename tests/positive/MiniC/Polymorphism/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{NestedList/minijuvix.yaml => Polymorphism/juvix.yaml} (100%) rename tests/positive/MiniC/PolymorphismHoles/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{Polymorphism/minijuvix.yaml => PolymorphismHoles/juvix.yaml} (100%) rename tests/positive/MiniC/SimpleFungibleTokenImplicit/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{PolymorphismHoles/minijuvix.yaml => SimpleFungibleTokenImplicit/juvix.yaml} (100%) rename tests/positive/MiniC/StdlibImport/{Input.mjuvix => Input.juvix} (100%) rename tests/positive/MiniC/{SimpleFungibleTokenImplicit/minijuvix.yaml => StdlibImport/juvix.yaml} (100%) rename tests/positive/MiniHaskell/{HelloWorld.mjuvix => HelloWorld.juvix} (100%) rename tests/positive/{MiniC/StdlibImport/minijuvix.yaml => MiniHaskell/juvix.yaml} (100%) rename tests/positive/{Operators.mjuvix => Operators.juvix} (100%) rename tests/positive/{Parsing.mjuvix => Parsing.juvix} (100%) rename tests/positive/{Polymorphism.mjuvix => Polymorphism.juvix} (100%) rename tests/positive/{PolymorphismHoles.mjuvix => PolymorphismHoles.juvix} (100%) rename tests/positive/QualifiedConstructor/{M.mjuvix => M.juvix} (100%) rename tests/positive/{MiniHaskell/minijuvix.yaml => QualifiedConstructor/juvix.yaml} (100%) rename tests/positive/QualifiedSymbol/{M.mjuvix => M.juvix} (100%) rename tests/positive/{QualifiedConstructor/minijuvix.yaml => QualifiedSymbol/juvix.yaml} (100%) rename tests/positive/QualifiedSymbol2/{M.mjuvix => M.juvix} (100%) rename tests/positive/QualifiedSymbol2/{N.mjuvix => N.juvix} (100%) rename tests/positive/{QualifiedSymbol/minijuvix.yaml => QualifiedSymbol2/juvix.yaml} (100%) rename tests/positive/{ShadowPublicOpen.mjuvix => ShadowPublicOpen.juvix} (100%) rename tests/positive/StdlibImport/{A.mjuvix => A.juvix} (100%) rename tests/positive/StdlibImport/{StdlibImport.mjuvix => StdlibImport.juvix} (100%) rename tests/positive/{QualifiedSymbol2/minijuvix.yaml => StdlibImport/juvix.yaml} (100%) rename tests/positive/StdlibList/Data/{Bool.mjuvix => Bool.juvix} (100%) rename tests/positive/StdlibList/Data/{List.mjuvix => List.juvix} (100%) rename tests/positive/StdlibList/Data/{Maybe.mjuvix => Maybe.juvix} (100%) rename tests/positive/StdlibList/Data/{Nat.mjuvix => Nat.juvix} (100%) rename tests/positive/StdlibList/Data/{Ord.mjuvix => Ord.juvix} (100%) rename tests/positive/StdlibList/Data/{Product.mjuvix => Product.juvix} (100%) rename tests/positive/{StdlibImport/minijuvix.yaml => StdlibList/juvix.yaml} (100%) rename tests/positive/Termination/{Ack.mjuvix => Ack.juvix} (100%) rename tests/positive/Termination/Data/{Bool.mjuvix => Bool.juvix} (100%) rename tests/positive/Termination/Data/{List.mjuvix => List.juvix} (100%) rename tests/positive/Termination/Data/{Nat.mjuvix => Nat.juvix} (100%) rename tests/positive/Termination/{Mutual.mjuvix => Mutual.juvix} (100%) rename tests/positive/Termination/{ToEmpty.mjuvix => ToEmpty.juvix} (100%) rename tests/positive/Termination/{Undefined.mjuvix => Undefined.juvix} (100%) rename tests/positive/{StdlibList/minijuvix.yaml => Termination/juvix.yaml} (100%) rename tests/positive/{Termination/minijuvix.yaml => juvix.yaml} (100%) delete mode 100644 tests/positive/minijuvix.yaml 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 - -CI status + +CI status #+end_html #+begin_html - - + + #+end_html #+begin_html - + LICENSE #+end_html #+begin_html -pages-build-deployment #+end_html #+begin_html - -MiniJuvix Mascot + +Juvix Mascot #+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 - -MiniJuvix Mascot + +Juvix Mascot #+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 - -CI status + +CI status #+end_html #+begin_html - - + + #+end_html #+begin_html - + LICENSE #+end_html #+begin_html -pages-build-deployment #+end_html #+begin_html - -MiniJuvix Mascot + +Juvix Mascot #+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 - -MiniJuvix Mascot + +Juvix Mascot #+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