Commit Graph

3669 Commits

Author SHA1 Message Date
adelaett
e1bda33e07
fmt 2023-12-07 11:27:14 +01:00
adelaett
030705eacd
Make the typing invariant more precise. 2023-12-07 11:27:14 +01:00
adelaett
67e36dcf42
Adding Typing Invariant for TDefault
Added a new type safety invariant to ensure that the type `TDefault` can only appear in certain positions,

* On the left-hand side of an arrow with arity 1, as the type of a scope (for scope calls).
* At the root of the type tree (outside a default).
* On the right-hand side of the arrow at the root of the type (occurs for rentrant variables).

This is crucial to maintain the safety of the type system, as demonstrated in the formal development.

The invariant was checked on all tests cases and on family and housing benefits.

Adjusted inversion invariant about app to handle external objects as well.
2023-12-07 11:27:14 +01:00
Denis Merigoux
2486fbcfb5
Fix LaTeX weaving failing with code blocks (#544) 2023-12-07 11:08:04 +01:00
Denis Merigoux
628cbc4fec
Fix #543 2023-12-06 16:58:38 +01:00
Louis Gesbert
14cbe07d18
Clerk and testing improvements, rework resolution of module elements (#535) 2023-12-05 16:18:46 +01:00
Louis Gesbert
e689f0c47b Small cleanup and doc on the module handling refactor 2023-12-05 16:01:56 +01:00
Denis Merigoux
f71f253cb5
Update CI badge 2023-12-05 15:19:42 +01:00
Louis Gesbert
cc8ca9682e
Remove the nix CI (#542) 2023-12-05 14:01:27 +01:00
adelaett
f2f13270c6
Remove the nix CI 2023-12-05 13:44:01 +01:00
Denis Merigoux
956b03c035
fix(build): correctly manage the aides_logement example (#537) 2023-12-04 09:16:53 +01:00
Emile Rolley
0dea917d23 pkg(french_law): @catala-lang/french-law@0.8.10
AL: Mise à jour arrêté du 22 septembre 2023 (https://github.com/CatalaLang/catala/pull/530)
2023-12-01 15:31:29 +01:00
Emile Rolley
f320b503b7 fix(build): correctly manage the aides_logement example 2023-12-01 15:06:47 +01:00
Emile Rolley
f81561449a build(assets): remove the ocaml doc generation from website-assets-base 2023-12-01 11:20:47 +01:00
Louis Gesbert
1ae955b504 Reformat 2023-11-30 23:53:38 +01:00
Louis Gesbert
8df49dcea2 More tests and some fixes 2023-11-30 23:49:19 +01:00
Louis Gesbert
3649f92975 Rework resolution of module elements
This changes the `decl_ctx` to be toplevel only, with flattened references to
uids for most elements. The module hierarchy, which is still useful in a few
places, is kept separately.

Module names are also changed to UIDs early on, and support for module aliases
has been added (needs testing).

This resolves some issues with lookup, and should be much more robust, as well
as more convenient for most lookups.

The `decl_ctx` was also extended for string ident lookups, which avoids having
to keep the desugared resolution structure available throughout the compilation
chain.
2023-11-30 21:14:12 +01:00
Louis Gesbert
86b7f80e90 Clerk improvements
- Add a `-I` option that allows defined modules to be available from other
  directories

- Add reporting of the number of successful / failed tests

- Locate the project root, and always run the commands from there
2023-11-30 21:14:12 +01:00
Louis Gesbert
c019d1568f Clerk: fix handling of dependency on the catala exec 2023-11-30 17:46:38 +01:00
Louis Gesbert
d4198f52b4 Reformat 2023-11-28 17:22:46 +01:00
Louis Gesbert
f3dd1c06d0
Interpreter: handle lcalc with exceptions (#533) 2023-11-28 15:43:29 +01:00
Louis Gesbert
d256cf5eec Update minimum OCaml version 2023-11-28 15:41:27 +01:00
Louis Gesbert
5b5790b95b Fix compilation of the clerk opam package 2023-11-28 15:33:30 +01:00
Louis Gesbert
326ee07f5d Interpreter: handle lcalc with exceptions 2023-11-28 15:02:11 +01:00
Louis Gesbert
1b02a672fa
Internally type default terms in the compiler (#528) 2023-11-28 13:51:42 +01:00
Louis Gesbert
4e465d2b48 Printer: some small improvements 2023-11-28 13:37:46 +01:00
Louis Gesbert
447f6d41f1 Interpreter: fix execution with closure_conversion
and context variables
2023-11-28 13:37:46 +01:00
Louis Gesbert
645c263ccc Fix closure-conversion
Joint debugging with @denismerigoux :)
2023-11-28 11:18:41 +01:00
Louis Gesbert
80475ad5ef Printer: show toplevel uids in debug mode
otherwise we had an inconsistency between what's defined at toplevel and what
appears in expressions.
2023-11-28 11:15:01 +01:00
Louis Gesbert
f0d930688e Support closure conversion with disabled typing or optims
This is very useful for debugging
2023-11-28 11:14:48 +01:00
Louis Gesbert
cf89204a4b Reformat 2023-11-27 11:17:38 +01:00
Louis Gesbert
35b40785c7 Update tests (lcalc+avoid_exceptions outputs changed) 2023-11-27 11:17:38 +01:00
adelaett
8a85e7b78f typing defaults: update passing tests 2023-11-27 11:17:38 +01:00
adelaett
a734413d39 typing default: fix ocaml runtime when using eoption 2023-11-27 11:17:38 +01:00
adelaett
f254906952 typing defaults: update passing tests 2023-11-27 11:17:38 +01:00
adelaett
ae4956c40f Typing defaults: update ocaml & python runtimes. 2023-11-27 11:17:38 +01:00
adelaett
dda09f0cc1 typed defaults: update passing tests. 2023-11-27 11:17:34 +01:00
adelaett
324ca74053 typed defaults: fixed interpreter value initialization in lcalc mode
when having the avoid_exceptions flag enabled.
2023-11-27 11:12:35 +01:00
adelaett
576da177c5 Typed defaults: translate types in scope lets as well in the new
compile without exception passe
2023-11-27 11:12:35 +01:00
adelaett
f6027109d8 Typed default: Update passing tests
For now, most tests involving only one scope and no context do pass.
More work is required for the rest.
2023-11-27 11:12:26 +01:00
adelaett
cb29fdeefe fixing the handle_opt in the interpreter. 2023-11-27 11:09:08 +01:00
adelaett
1d72a57da4 Typed default: fix an issue to the error_on_empty constructor 2023-11-27 11:09:08 +01:00
adelaett
4a5335162e Typed default: implementing the type for handle defaults, as well as the
compile without exceptions compilation pass, using the newly found
invariant
2023-11-27 11:09:08 +01:00
adelaett
b0b83b14b9 Typed default: Implemented typing translating to the without exception compilation path. 2023-11-27 11:09:08 +01:00
adelaett
2c9f8ad8b1 Typed default: import the code from compile with exceptions to
re-implement without exceptions with the new typing of defaults terms.
2023-11-27 11:09:08 +01:00
Louis Gesbert
fca3221b78 Ensure dune exec -- clerk ... runs an up-to-date catala exec 2023-11-27 11:09:08 +01:00
Louis Gesbert
cc4e5339dd Typed defaults: small simplification and fixes 2023-11-27 11:09:08 +01:00
Louis Gesbert
3a149bc86e Fix compilation of plugins 2023-11-27 11:09:08 +01:00
Louis Gesbert
1efda5ca22 Typing defaults: support nested priorities
The way nested priorities are encoded use `< < excs | true :- nested > :- x >`,
which imply that `nested` can actually be ∅ ; to cope with this, the typing of
default terms is made more generic (the return type is now the same as the
`cons` type `'a`, rather than `<'a>`). For the general case, we add an explicit
`EPureDefault` node which just encapsulates its argument (a `return`, in monad
terminology).
2023-11-27 11:09:08 +01:00
Louis Gesbert
4ececf9960 Fix api_web plugin 2023-11-27 11:09:08 +01:00