Louis Gesbert
fe2c66af12
Select colors for Uids upon instanciation
...
This way different Uid kinds will have a consistent color across error messages,
AST dumps, etc.
2023-09-01 14:41:56 +02:00
Louis Gesbert
dcb057bc6f
Module support: handle structs, enums and scope calls across modules ( #497 )
2023-09-01 14:35:58 +02:00
Louis Gesbert
544e18e110
Fixes related to environments and lookups
2023-08-31 18:31:48 +02:00
Louis Gesbert
8278bb8c5d
Make the passes appear more clearly in the driver debug
2023-08-31 18:31:48 +02:00
Louis Gesbert
ff60aee5ef
Improve module error messages
2023-08-31 18:31:48 +02:00
Louis Gesbert
e75ea3da07
Cleanup tmp debug code
2023-08-31 18:31:48 +02:00
Louis Gesbert
8e33355ead
Reformat
2023-08-31 18:31:48 +02:00
Louis Gesbert
6bccd89482
Fix OCaml backend for cross-module refs
2023-08-31 18:31:48 +02:00
Louis Gesbert
7db63e5f78
Simplification: store paths in Uids
...
rather than scattered in structures
The context is still hierarchical for defs though, so one needs to retrieve the
path to lookup in the correct context for info. Exceptions are enums and struct
defs, which are re-exposed at toplevel.
2023-08-31 18:31:48 +02:00
Louis Gesbert
a71b4e7f73
Some fixes to relative file lookups in modules and tests
...
This makes sure `catala module` finds the local runtime when run from the catala
source tree; and fixes lookup of the catala exec on custom uses of `clerk runtest`.
2023-08-31 17:55:36 +02:00
Louis Gesbert
17172cf47d
Some fixes & cleanup after early review
2023-08-31 17:55:36 +02:00
Louis Gesbert
72882f82df
Reformat
2023-08-31 17:55:36 +02:00
Louis Gesbert
c58e76f4e5
Gather the maps for subscope vars to the top level
...
(they use UIDs so this doesn't jeopardize proper name resolution ; and it allows
resolution of subscope calls without further code modifications)
2023-08-31 17:55:36 +02:00
Louis Gesbert
bcde10242f
Specialise the Map.Not_found exception raised by Map.find
...
... and add a custom printer
Since this is a very common bug, this patch should gain us a lot of time when
debugging uncaught Not_found errors, because the element not found can now be
printed straight away without the need for further debugging.
The small cost is that one should remember to catch the correct specialised
`Foo.Map.Not_found _` exception rather than the standard `Not_found` (which
would type-check but not catch the exception). Using `find_opt` should be
preferred anyway.
Note that the other functions from the module `Map` that raise `Not_found` are
not affected ; these functions are `choose`, `min/max_binding`,
`find_first/last` which either take a predicate or fail on the empty map, so it
wouldn't make sense for them (and we probably don't use them much).
2023-08-31 17:55:36 +02:00
Louis Gesbert
9bac045d03
Implement module lookups for scopes, structs, and enums
2023-08-31 17:54:39 +02:00
Artur Cygan
c33cccd7c1
Improvements to the Polish translation
2023-08-17 12:15:25 +02:00
Adam Olech
8382492816
Fix typos for error triggered when no input variables were provided
2023-08-17 00:47:48 +02:00
Denis Merigoux
13654bde3a
R backend for Catala ( #496 )
2023-08-07 18:10:44 +02:00
Denis Merigoux
6d7b1f2585
Last fixes
2023-08-07 17:55:04 +02:00
Denis Merigoux
8743b73459
Debugging the R backend
2023-08-07 16:19:13 +02:00
Denis Merigoux
4d419ac167
Switch to S4 classes and package runtime
2023-08-07 15:58:55 +02:00
Denis Merigoux
695faebefb
Cleaning up
2023-08-05 16:23:29 +02:00
Denis Merigoux
e2f8e56e7d
Backend seems to work, needs more debugging
2023-08-05 14:28:18 +02:00
Denis Merigoux
62ea40a40d
Fix tryWith compilation
2023-08-05 13:05:31 +02:00
Denis Merigoux
d0483d681a
First test passing
2023-08-04 19:30:43 +02:00
Denis Merigoux
1df2ebda13
Correct compilation of tryCatch
2023-08-04 19:03:10 +02:00
Denis Merigoux
84d37d8720
Print algebraic data types as R classes
2023-08-04 18:07:49 +02:00
Denis Merigoux
fd89562c8b
Starting to implement R backend
2023-08-04 17:25:12 +02:00
Louis Gesbert
4a06faa881
modules plugin: fix target directory of dlls
2023-08-04 12:08:18 +02:00
Louis Gesbert
300d993733
Simplify visitors ppx annotations
...
the small downside is that we lose a little bit of granularity by making
defining all the types at once (with `type ... and`) ; but one well-placed
annotation seems to be enough.
also discarded the `iter` visitor that was unused.
2023-08-04 11:43:16 +02:00
Aminata-Dev
94f8eac858
Better indications for the user :
...
- We're able to say from the parser what the user could have written. It may not be complete due to the acceptable function of Menhir : it is only an indication given to the user (and not intended to be an adaptive documentation)
- .mli file added : module interface for suggestions
- Add a test that provides a typographical or a logical error.
- Documentation and type / name changes for suggestions
2023-07-12 16:32:55 +02:00
Louis Gesbert
c96c6e187f
Re-implement the GNU message output format
2023-07-12 13:57:58 +02:00
Aminata-Dev
af9c708960
Better help for the user
...
- Clearer (more detailed) error messages (see parser.messages, parser_driver.ml ->)
--> Parser_driver.ml : we're more precise and show all possible instructions to the user.
- Suggestions.ml : unimportant display changes + renaming
2023-07-12 11:55:11 +02:00
Aminata-Dev
6123ebd004
get re(c)t
2023-07-12 11:55:11 +02:00
Aminata-Dev
17469565ec
Improve the implementation of suggestions
...
- suggestions.ml : improve details + algorithm implementation (see @Altgr reviews) + comments
- suggestions implementation : since we want to keep the same structure to display suggestion messages, Suggestion is no longer a formatted string but a string list. The goal is to have a similar formatted string for each suggestion, no matter what the error message is.
--> This involves changes to suggestions.mli, compiler/desugared/from_surface.ml (most important one) and compiler/surface/parser_driver.ml
2023-07-12 11:55:11 +02:00
Aminata-Dev
b087ca4f47
Improve suggestions
...
- Improved implementation of suggestions (suggestion_minimum_levenshtein_distance_association > suggestions.ml)
- Magnifying glass emoji added for suggestions
- Improve display by...
- Fixing "Pos.ml" (pretty-printing box not closed)
- Remove unnecessary spaces
- compiler/surface/parserdriver.ml
- Optionnal suggestions added when raising a parser error
- Function "levenshtein_distance" removed and replaced by "Suggestions.levenshtein_distance"
- Tests updated (mostly line breaks and spacing changes)
- Variable names renamed for greater clarity
- (Based on commit 0813f5c36e
)
2023-07-12 11:55:11 +02:00
Aminata-Dev
75b6251b43
Match the compiler code to the new type of error message content
2023-07-12 11:55:11 +02:00
Denis Merigoux
50113586e3
With @aminata-dev update Messages.Content
2023-07-12 11:55:11 +02:00
Denis Merigoux
4cdd2fce0f
With @aminata-dev, implemented first error message improvement!
2023-07-12 11:55:11 +02:00
Denis Merigoux
67f69561c2
Renaming and correct autorship
2023-07-12 11:55:11 +02:00
Aminata-Dev
0360568e8e
actual changes
2023-07-12 11:55:11 +02:00
Aminata-Dev
c55fa0a665
start implementing suggestions
2023-07-12 11:55:11 +02:00
Louis Gesbert
f2fc79f640
Add some helper functions in a wrapper Map
module
...
and use them throughout. No more `List.map fst (Map.bindings m)` !
Also adds some facilities for direct formatting without going through a list.
2023-07-12 11:51:15 +02:00
Louis Gesbert
e0abb9aa24
Silence warning on duplicate plugin load
...
a debug is enough, it may happen on normal use
2023-07-11 18:57:05 +02:00
Louis Gesbert
db34c9a848
Generalise the expression printer
...
This patch functorises the generic expression printer, in order to be able to
re-use it for end-user printing.
It makes it possible to have an end-user, localised printer that shares the code
for e.g. priority and automatic parens handling.
A generic AST rewriting that disambiguates variables (very simple to write with
bindlib) is also added and used in the OCaml backend for something safer than
just appending `_user` (-- this also handles clashing variables that could be
introduced during compilation which would have generated wrong code before this)
Finally, the `explain` plugin is adapted to use the new printer.
Ah, and `String.format_t` was tweaked to correctly print strings that might
contain unicode without breaking alignment, and should be used instead of
`format_string` or `%s` whenever unicode can be expected.
2023-07-11 17:33:56 +02:00
Louis Gesbert
f9e3964621
Add an explain
plugin
...
Based on the lazy_interp plugin, this new plugin generates a `dot` graph
retracing a given computation from source definitions to the results.
2023-07-11 17:33:56 +02:00
Louis Gesbert
71e3ca21c0
Remove generated files from git
...
and add proper pointers to the online artifacts
2023-07-10 15:48:11 +02:00
Louis Gesbert
3cb8fc1499
Tweak printing of if/then/else
2023-07-10 15:48:11 +02:00
Louis Gesbert
4ae949f7f8
Fix formatting of exception trees
2023-07-07 14:56:54 +02:00
Louis Gesbert
a3c0c366e6
Some code simplification
...
We now have all the functions to factorise this code
2023-07-04 18:31:52 +02:00
Louis Gesbert
fcb2d08983
Remove unconditional optimisation on exceptions compilation
...
This should be handled at a different level
2023-07-04 17:16:09 +02:00
Louis Gesbert
8920564f9e
Fix some documentation comments formatting
2023-07-04 10:01:51 +02:00
Louis Gesbert
98f712365e
Restore full expression printing when --debug is set
2023-07-03 17:30:17 +02:00
Louis Gesbert
89e90271c1
Implement an additional localised, user-facing value printer
2023-07-03 16:42:54 +02:00
Louis Gesbert
c799968934
Add a 'modules' plugin with helpers to compile modules
...
This will be done by Clerk at some point, but the plugin is useful for the time being.
2023-07-03 16:42:54 +02:00
Louis Gesbert
0f9ee2c72e
Refacter the main Driver
module
...
- Use separate functions for successive passes in module `Driver.Passes`
- Use other functions for end results printing in module `Driver.Commands`
As a consequence, it is much more flexible to use by plugins or libs and we no
longer need the complex polymorphic variant parameter.
This patch leverages previous changes to use Cmdliner subcommands and
effectively specialises the flags of each Catala subcommand.
Other changes include:
- an attempt to normalise the generic options and reduce the number of global
references. Some are ok, like `debug` ; some would better be further cleaned up,
e.g. the ones used by Proof backend were moved to a `Proof.globals` module and
need discussion. The printer no longer relies on the global languages and prints
money amounts in an agnostic way.
- the plugin directory is automatically guessed and loaded even in dev setups.
Plugins are shown by the main `catala` command and listed in `catala --help`
- exception catching at the toplevel has been refactored a bit as well; return
codes are normalised to follow the manpage and avoid codes >= 128 that are
generally reserved for shells.
Update tests
2023-07-03 16:42:54 +02:00
Denis Merigoux
5f48e5dac1
Merge branch 'master' into closure_conversion
2023-06-20 11:02:13 +02:00
Denis Merigoux
9007eb4204
Apply suggestions by @altgr
2023-06-19 17:29:51 +02:00
Louis Gesbert
237dca2e75
Some commented code cleanup and clarifications
2023-06-19 16:36:09 +02:00
Denis Merigoux
420348beda
Added a last TODO and put big example under CI
2023-06-18 21:38:00 +02:00
Denis Merigoux
b55d8c823b
Closure conversion & hoisting working
2023-06-18 21:30:55 +02:00
Denis Merigoux
2ddbe93126
Bug identified
2023-06-18 18:15:29 +02:00
Denis Merigoux
a20adc0055
Closure hoisting (missing a bug on hardest case)
2023-06-18 18:08:18 +02:00
Denis Merigoux
2c45ca1599
More doc
2023-06-18 16:08:16 +02:00
Denis Merigoux
9cf55b0edd
Closure env is unit if no extra variable captured
2023-06-18 15:49:02 +02:00
Louis Gesbert
52b1c25d50
Refactor CLI to use sub-commands
...
The upside of this is that each command can define specific flags ; there is a
small loss of backwards-compatibility in that the command needs to be the first
argument.
`catala --help` will now only show a summary of commands, with more specific
manpages shown on `catala CMD --help`.
Another point is that the plugin interface is extended to allow plugins to be
registered as subcommands and have their own flags (this will be very useful for
adding flags to the lazy/dot/explanation plugin that has many options).
Note that no efforts has yet been made to specialise the options, the previous
type was just made global for all subcommands.
2023-06-15 18:00:10 +02:00
Louis Gesbert
da59076223
Add a command-line option ('--use') for module linking
2023-06-15 17:58:46 +02:00
Louis Gesbert
ec97c386c3
Reformat + regen
2023-06-15 17:57:01 +02:00
Louis Gesbert
26c75af2ae
Allow declaration of toplevel values without definition
2023-06-15 17:57:01 +02:00
Louis Gesbert
e224e87f71
Wip support for modules
...
(first working dynload test with compilation done by manual calls to ocaml)
A few pieces of the puzzle:
* Loading of interfaces only from Catala files
* Registration of toplevel values in modules compiled to OCaml, to allow access
using dynlink
* Shady conversion from OCaml runtime values to/from Catala expressions, to
allow interop (ffi) of compiled modules and the interpreter
2023-06-15 17:56:57 +02:00
Denis Merigoux
6962761774
Merge branch 'master' into closure_conversion
2023-06-15 17:56:41 +02:00
Louis Gesbert
2f2614c508
Use the AST mapper for scopelang-> dcalc
2023-06-15 17:55:52 +02:00
Louis Gesbert
2b7beeefb2
Rename 'IdentName' to 'Ident'
2023-06-15 17:55:49 +02:00
Denis Merigoux
3d3e735402
Nicer error message
2023-06-15 17:47:58 +02:00
Denis Merigoux
ed2891c761
Closure conversion should work now
2023-06-15 17:32:00 +02:00
Denis Merigoux
d850ac688a
Added operators for closure environment handling
2023-06-15 16:52:36 +02:00
Denis Merigoux
57abfbf2c7
Other pattern matching
2023-06-15 16:33:14 +02:00
Denis Merigoux
a3087ee163
Adding typing for closure env
2023-06-15 11:11:56 +02:00
Denis Merigoux
385e19b9e1
Formatting
2023-06-15 10:51:31 +02:00
Denis Merigoux
571c7c5d89
Correctly count number of var occurences
2023-06-14 11:39:27 +02:00
Denis Merigoux
42aaa1017d
Created minimal not working example and tame down beta-reduction
2023-06-14 11:18:39 +02:00
Denis Merigoux
2c9b56fb70
More agressive re-typing
2023-06-13 20:37:23 +02:00
Denis Merigoux
27bbe78438
Understanding a limitation
2023-06-13 20:10:42 +02:00
Aminata-Dev
10d147a8b1
Messages renamed to Message (lighter syntax)
2023-06-13 11:50:56 +02:00
Denis Merigoux
7072369b2d
Starting to work
2023-06-13 11:43:13 +02:00
Denis Merigoux
926c9436e3
Fix some bugs
2023-06-13 11:15:32 +02:00
Denis Merigoux
0e99d1598b
Continue closure conversion
2023-06-13 10:49:46 +02:00
Denis Merigoux
30eb3c0bdb
Better printing for types in typing error message
2023-06-13 09:55:48 +02:00
Denis Merigoux
84350b1593
Better typing error message
2023-06-13 09:07:42 +02:00
Denis Merigoux
26d53cc87f
Rainbow parenthesis for types
2023-06-13 08:59:33 +02:00
Aminata-Dev
5f9cb55e34
s
2023-06-12 17:00:10 +02:00
Denis Merigoux
45375dd7b5
Fix a bug in closure conversion
2023-06-12 15:21:06 +02:00
Denis Merigoux
cdae3e43ac
Improve names of temp variable in monadic pass
2023-06-12 15:02:08 +02:00
Louis Gesbert
b975e7c149
Cleanup commented code
2023-06-09 15:28:12 +02:00
Louis Gesbert
e4c1216848
Tweak whitespace in messages
2023-06-08 14:36:28 +02:00
Louis Gesbert
fcadd9808e
Update tests with whitespace changes
2023-06-08 14:03:08 +02:00
Louis Gesbert
11730ce271
Repair indentation of log messages
2023-06-08 13:34:54 +02:00
Louis Gesbert
c564e70636
Correctly setup ocolor on all output channels
...
(and some cleanup of the remaining deps to ANSITerminal)
2023-06-08 12:14:11 +02:00
Louis Gesbert
16c93fbb0c
Reformat
2023-06-08 12:14:11 +02:00
Louis Gesbert
deaf40761e
Use ocolor instead of ANSITerminal
2023-06-08 12:11:55 +02:00
Louis Gesbert
7aa7bfb8fa
Fix most doc errors ( #471 )
2023-06-05 10:51:59 +02:00
Denis Merigoux
d1a836c646
Removing less precise message
2023-06-03 18:04:41 +02:00
Denis Merigoux
09bcefbcc1
Update tests
2023-06-03 18:02:57 +02:00
Denis Merigoux
91ee1122f6
Last typo
2023-06-03 15:32:38 +02:00
Denis Merigoux
79801292e9
Fix most doc errors
2023-06-02 17:17:45 +02:00
Denis Merigoux
ddee094783
Fix CI
2023-06-02 15:41:27 +02:00
Denis Merigoux
5d765676b5
Format rather than print
2023-06-02 10:58:03 +02:00
Denis Merigoux
d1210cc0e4
The thing compiles
2023-06-02 10:50:33 +02:00
Denis Merigoux
4e6efe08da
All renamings done, on with actual refactor
2023-06-02 10:50:33 +02:00
Denis Merigoux
5f227933f3
Errors are now things to refactor [skip ci]
2023-06-02 10:50:33 +02:00
Denis Merigoux
0faa97b8fc
Abstract messages interface
2023-06-02 10:50:29 +02:00
Denis Merigoux
4612920bf4
Merge branch 'master' into more_infos_in_logs
2023-06-01 17:38:41 +02:00
Denis Merigoux
94999dcc25
Correctly generate latex, nowrap option not working anymore?
2023-05-30 12:03:50 +02:00
Denis Merigoux
fa9f432e8b
Python runtime OK now
2023-05-26 17:08:26 +02:00
Denis Merigoux
8987d358e7
Implement the rest
2023-05-26 16:54:52 +02:00
Denis Merigoux
1f23f701bc
Move types
2023-05-26 16:03:26 +02:00
Louis Gesbert
209be6b758
Improve integration of marks into the main AST
...
Two interdependent changes here:
1. Enforce all instances of Shared_ast.gexpr to use the generic type for marks.
This makes the interfaces a tad simpler to manipulate: you now write
`('a, 'm) gexpr` rather than `('a, 'm mark) gexpr`.
2. Define a polymorphic `Custom` mark case for use by pass-specific annotations.
And leverage this in the typing module
2023-05-17 17:37:00 +02:00
Louis Gesbert
fc531777c0
Rework and normalise the Marked
interface
...
The module is renamed to `Mark`, and functions renamed to avoid redundancy:
`Marked.mark` is now `Mark.add`
`Marked.unmark` is now `Mark.remove`
`Marked.map_under_mark` is now simply `Mark.map`
etc.
`Marked.same_mark_as` is replaced by `Mark.copy`, but with the arguments
swapped (which seemed more convenient throughout)
Since a type `Mark.t` would indicate a mark, and to avoid confusion, the type
`Marked.t` is renamed to `Mark.ed` as a shorthand for `Mark.marked` ; this part
can easily be removed if that's too much quirkiness.
2023-05-17 17:37:00 +02:00
Louis Gesbert
558fcb6fef
Build: remove unnecessary ppx on dcalc, lcalc
...
we only use `visitors` for positions on the surface AST
2023-05-17 14:08:32 +02:00
Louis Gesbert
ba52aae401
Cleanup: definitions.ml
is not for values
...
A module without mli is ok as long as it only contains types
Here we already stretch it a bit with some functor applications, but having
toplevel values defeats the expectation that you can safely `open` this module.
2023-05-17 13:26:47 +02:00
Denis Merigoux
eae61256ef
Adhere to the GNU standard for error messages
2023-05-04 19:19:19 +02:00
Denis Merigoux
a5d4f54115
Push some fixes suggested by @altgr
2023-05-04 18:28:24 +02:00
Denis Merigoux
bcd91f5dea
Merge branch 'master' into aides_logement_outre_mer
2023-05-04 11:04:28 +02:00
Louis Gesbert
b1955bd9d4
Don't use a debug printing function for OCaml output
2023-05-02 16:48:01 +02:00
Louis Gesbert
5e26c5c83d
Yet more printer improvements
...
- Fix the printer for scopes
- Improve the printer for struct types
- Remove `Print.expr'`. Use `Expr.format` as the function with simplified arguments instead.
2023-05-02 16:33:23 +02:00
Louis Gesbert
83e7a845fe
Cleanup expr printer interface
...
- `Print.expr` no longer needs the context
- This removes the need for `expr ~debug` + `expr_debug` ;
use `Print.expr` for normal (non-debug) output,
and `Print.expr' ?debug ()` for possibly debug output.
- This improves consistency of debug expr output in many places
- Prints simplified operators (without type suffix) in non-verbose mode
(this patch also fixes some cases of `Expr.skip_wrappers` and leverages the
binder equality provided by Bindlib)
2023-05-02 13:32:16 +02:00
Louis Gesbert
c249cef3cc
Printer: flatten nested let-ins too
2023-05-02 11:53:30 +02:00
Louis Gesbert
3e7a2a34ab
More printer improvements
2023-05-02 11:49:09 +02:00
Louis Gesbert
cec52d47de
Printer: flatten "else if"
2023-05-02 11:49:09 +02:00
Louis Gesbert
8a2b50289e
Printer: add some missing boxes
2023-05-02 11:49:09 +02:00
Denis Merigoux
8d7666ee92
Interleave assertions with rules from desugared to scopelang
2023-04-28 14:15:43 +02:00
Emile Rolley
def003af8d
fix(plugins/json_schema): don't translate the TUnit type into "null" anymore
2023-04-28 13:41:25 +02:00
Denis Merigoux
e6bccd716d
Fix a Catala program bug thanks to Proof mode!
2023-04-27 18:03:27 +02:00
Denis Merigoux
a954942fd9
Bug in the law found with proof mode?
2023-04-27 16:58:40 +02:00
Denis Merigoux
7788bf9e73
Error message when two same states
2023-04-27 15:37:11 +02:00
Denis Merigoux
41d74bc673
Correctly hide function body on the trace
2023-04-27 15:07:04 +02:00
Denis Merigoux
9b056f3ca1
Update assets and fix errors after rebase
2023-04-27 12:18:50 +02:00
Denis Merigoux
e7f56b4310
Removed useless variable
2023-04-27 12:13:19 +02:00
Denis Merigoux
40af4d3a46
Disable optimization that was messing with the Proof backend
2023-04-27 12:13:18 +02:00
Denis Merigoux
4f7564b079
Improve editor parsable errors
2023-04-27 12:09:22 +02:00
Denis Merigoux
fcb5561b24
Coded message format adapted to editors
2023-04-27 12:09:22 +02:00
Denis Merigoux
19b33eaa96
Add lint and fix bugs related
2023-04-27 12:09:22 +02:00
Denis Merigoux
0338418a6f
Allow use of if_then_else beyond booleans in proof backend ( #460 )
2023-04-24 17:33:15 +02:00
Louis Gesbert
49bd5b1915
Cleanup type of Expr.make_app
2023-04-24 15:14:54 +02:00
Louis Gesbert
d7d8bab9b8
Printer: rainbow parens (rewritten)
2023-04-24 14:56:19 +02:00
adelaett
ba6fb5d405
fix documentation
2023-04-24 14:00:12 +02:00
Aymeric Fromherz
c6e478c9dd
[Proof Backend] Use Z3's native encoding for ite
2023-04-24 12:11:55 +02:00
Denis Merigoux
32ee2a0c72
Various small fixes to resolve conversations
2023-04-21 14:54:07 +02:00
Denis Merigoux
d384db4e71
Reestablish some default constructor optimizations
2023-04-21 14:35:10 +02:00
Denis Merigoux
22b24a8634
Fusion of all optimizations done correctly
2023-04-21 12:32:09 +02:00
Denis Merigoux
1bb338526d
Generalized optimizations
2023-04-21 11:56:07 +02:00
Denis Merigoux
2b0e18f5a8
Restore important flushing?!
2023-04-21 11:29:07 +02:00
Denis Merigoux
067c7b9155
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-21 10:55:36 +02:00
Denis Merigoux
107ff95dc4
Remove dependency on ppx_expect and use alcotest instead
2023-04-21 10:37:31 +02:00
Louis Gesbert
fc70d18ea8
Correctly typed dcalc/lcalc interpreter
2023-04-20 14:04:29 +02:00
Louis Gesbert
55d343d81c
Version that uses object types instead of polymorphic variants
...
in order to get the row polymorphism controlling the GADT that encodes our AST
2023-04-20 13:51:20 +02:00
Denis Merigoux
f877544368
Remove optimizations for big tests
2023-04-18 15:56:04 +02:00
Denis Merigoux
f9a6644da3
Cleanliness and aesthetics
2023-04-18 15:45:30 +02:00
Denis Merigoux
0ec75ad589
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-18 14:37:02 +02:00
Denis Merigoux
0b0451862e
Correct temp variable names
2023-04-18 14:29:22 +02:00
Louis Gesbert
bd870b0c28
Add experimental lazy interpreter as a plugin ( #453 )
2023-04-18 14:08:03 +02:00
Denis Merigoux
732e058712
Fix typos
2023-04-18 11:42:33 +02:00
Denis Merigoux
0266252854
Refactoring for cleaner exception graph building
2023-04-18 11:06:58 +02:00
Denis Merigoux
57da622567
Refactoring changes after @altgr's suggestions
2023-04-18 10:31:44 +02:00
Denis Merigoux
c5ba3e72fe
Restore CI
2023-04-18 09:59:24 +02:00
Denis Merigoux
39f1704d76
Last fixes
2023-04-18 09:59:24 +02:00
Denis Merigoux
ecccb5fb91
Last changes
2023-04-18 09:59:24 +02:00
Denis Merigoux
6479c3c10b
Print exception tree
2023-04-18 09:59:24 +02:00
Denis Merigoux
2afb6fc20c
I/O plumbing necessary for this feature, missing main implem
2023-04-18 09:59:24 +02:00
adelaett
5e46253140
removed one remaning debuging print, and updating all the tests
2023-04-14 17:59:08 +02:00
adelaett
e712c39efb
fix python printing of handle_default
2023-04-14 17:32:09 +02:00
adelaett
b642bdbc54
update optimizations
2023-04-14 17:16:01 +02:00
Louis Gesbert
b4a68fa392
Add experimental lazy interpreter as a plugin
...
To try it (without installing Catala):
```shell-session
$ make plugins
$ export CATALA_PLUGINS=_build/default/compiler/plugins
$ dune exec -- catala lazy examples/aides_logement/tests/tests_calcul_apl_locatif.catala_fr -s Exemple2
```
Keep in mind that this is a work-in-progress prototype :)
2023-04-14 16:56:57 +02:00
adelaett
adf14056fd
backtrace is now determined by the option.debug flag.
2023-04-14 16:38:39 +02:00
adelaett
e14267b0d7
fixing printing
2023-04-14 15:03:26 +02:00
adelaett
cffcdd7cf9
move monad_* to lcalc/Ast.ml
2023-04-14 14:36:28 +02:00
adelaett
02eeb4ad11
Include Bindlib_ext to Expr.Box
2023-04-14 14:18:28 +02:00
adelaett
ebf72213a7
deadcode
2023-04-14 14:12:36 +02:00
adelaett
ddeaa67ff7
Expr.eid -> Expr.fun_id
2023-04-14 14:07:51 +02:00
adelaett
484ae44298
disable detailled printing of enum and struct
2023-04-14 13:59:29 +02:00
adelaett
920bd29835
documentation and deadcode elim
2023-04-14 13:59:06 +02:00
adelaett
f21cb1ff69
adding comment
2023-04-14 12:18:28 +02:00
adelaett
6b6272b0f2
adding an nicer error message
2023-04-14 12:16:09 +02:00
adelaett
123ae9e4c1
rename functions to make the code more readable
2023-04-14 12:15:16 +02:00
adelaett
0c357d2972
adding typing information for monad_* functions
2023-04-14 12:13:33 +02:00
adelaett
167ec9189f
adding a todo related to handle_default and handle_default_opt for
...
the closure conversion.
2023-04-14 12:02:03 +02:00
adelaett
abc30e1612
handling invariants checking differently in the main driver
2023-04-14 12:01:16 +02:00
adelaett
cfc1d86e96
Revert "incorrect simplification"
...
This reverts commit 3233ff108f
.
2023-04-14 11:51:02 +02:00
adelaett
3233ff108f
incorrect simplification
2023-04-14 11:48:19 +02:00
adelaett
622feec9a5
change Invariants choice to --check_invariants flag
2023-04-14 11:32:49 +02:00
adelaett
2ea67de397
typo
2023-04-14 11:21:52 +02:00
adelaett
a9809b69a9
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-14 11:19:58 +02:00
adelaett
5833608179
deadcode elim
2023-04-14 10:56:15 +02:00
adelaett
a45ae1869a
Fix #449 by removing premature optimizations on a smart constructor.
2023-04-14 10:50:21 +02:00
adelaett
a53bc27d23
documentation
2023-04-14 10:48:31 +02:00
Louis Gesbert
feeee4016e
Add support for dcalc plugins
...
previously only lcalc and scalc where available
2023-04-14 10:42:26 +02:00
adelaett
f8f6e56cca
fixing the issue of not merging inputs.
2023-04-14 09:22:36 +02:00
Louis Gesbert
e19e4af12d
Vastly improve the printer
...
* fix lots of Format boxes
* add parens based on precedence in the printer
* fix interaction of Format and the colored line debug tags
2023-04-13 18:15:22 +02:00
adelaett
cc66023e51
Thunking justifications and conclusion in avoid_translation pass
2023-04-12 10:58:21 +02:00
adelaett
83553d5950
indicate what interpreter is launched in debug mode.
2023-04-11 16:15:24 +02:00
adelaett
1a46cd8914
initialize inputs argument with default ENone value
2023-04-11 16:14:52 +02:00
adelaett
49e9846386
fix a bug in the translation
2023-04-11 16:14:25 +02:00
adelaett
0cfc446455
implementing the behavior of handle_exceptions_opt for the lcalc interpretor
2023-04-11 14:09:57 +02:00
adelaett
3e35d4b826
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-11 11:49:22 +02:00
adelaett
6af7456b98
typo
2023-04-07 16:32:43 +02:00
adelaett
37b2cdf1aa
printing bindm as let*
2023-04-07 16:21:42 +02:00
adelaett
0e8eed7ee1
program equality function
2023-04-07 12:10:08 +02:00
adelaett
300d3b561d
fix too-many-spaces
2023-04-07 12:09:38 +02:00
adelaett
6c7ac061d4
fix identation and use new formatting functions as default
2023-04-07 11:57:14 +02:00
adelaett
618ff0518d
move printing of program & scope to the Print module
2023-04-07 11:26:10 +02:00
adelaett
12d85570e8
fix printing boxes & merge issues
2023-04-07 10:51:21 +02:00
adelaett
9b63743c2f
documentation
2023-04-07 10:49:48 +02:00
Denis Merigoux
77d6a97ddc
Formatting
2023-04-06 16:35:28 +02:00
alain
ec40de83fc
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-06 13:57:22 +02:00
adelaett
73423a3cb6
typo
2023-04-06 13:50:58 +02:00
adelaett
65d9ac759a
review printer
2023-04-06 13:50:48 +02:00
adelaett
0906ba025b
reviewed operator.ml
2023-04-06 13:50:34 +02:00
adelaett
5a3a6a9dc1
remove unused json ppx
2023-04-06 13:50:22 +02:00
adelaett
7ebfb2e66a
typo
2023-04-06 13:42:40 +02:00
alain
f16842b71a
add a todo
2023-04-06 13:18:33 +02:00
adelaett
7b0f1b238c
add documentation for interpret_lcalc
2023-04-06 13:09:49 +02:00
adelaett
75e496c62d
correct types
2023-04-05 16:35:12 +02:00
adelaett
72f6ac9f58
append lcalc to driver
2023-04-05 15:42:26 +02:00
adelaett
256c0625ff
forward -> propagate
2023-04-05 14:57:02 +02:00
Louis Gesbert
0098f00512
Yet some more small improvements to the AST encoding
2023-04-05 10:32:58 +02:00
Louis Gesbert
0c1cd481e1
Interpreter on dcalc + lcalc (the simple way)
...
I made some changes in the meantime, and had to factorise e.g. the handling of
the `EEmptyError` case, but this is the simple approach type-wise of making the
function type for `∀ 'a. 'a —> 'a` (with `assert false` match cases), then
restricting its type do `dcalc` or `lcalc` in the `.mli`.
2023-04-05 10:32:58 +02:00
Louis Gesbert
79ff776d2e
Multi-pass interperter: typing (but useless) version
2023-04-05 10:32:58 +02:00
adelaett
503cd6b1e5
implementation of the behavior
2023-04-05 10:32:52 +02:00
adelaett
06147ac5b6
typing working in the file, but does not accept
...
Lcalc for some reason
2023-04-05 10:32:52 +02:00
adelaett
68e0f0a0ee
changing position of the interpreter
2023-04-05 10:32:52 +02:00
adelaett
82992e9858
documentation
2023-04-04 17:02:26 +02:00
adelaett
066388ddfd
fix of_lcalc special handling of handle_opt variables
2023-04-04 15:58:05 +02:00
adelaett
60f8c229d5
fix to_ocaml new handledefault and handledefault opt operator
2023-04-04 15:57:33 +02:00
adelaett
06f2e56c74
fix closure conversion non-existent variable
2023-04-04 15:57:11 +02:00
adelaett
8ef3db005f
clean deadcode
2023-04-04 15:56:49 +02:00
adelaett
61bdd751e4
corrected program equality
2023-04-04 15:18:08 +02:00
adelaett
b6cf552913
lcalc optimization documentation
2023-04-04 15:17:59 +02:00
adelaett
948af85abd
simplification of the driver
2023-04-04 15:17:43 +02:00
Denis Merigoux
ad02a0959d
Merge branch 'master' into aides_logement_outre_mer
2023-04-03 14:12:10 +02:00
Denis Merigoux
38b0041bb8
Add common linting passes to Catala ( #438 )
2023-04-03 14:01:02 +02:00
Denis Merigoux
d147238088
Apply suggestions by @altgr
2023-04-03 13:42:14 +02:00
adelaett
685785eaa3
adding assert_closed function
2023-04-03 11:20:19 +02:00
adelaett
f897226ffb
bindlib extension documentation
2023-04-03 10:57:52 +02:00
adelaett
84548769b4
renable optimization since the behavior of ite is now different
2023-04-03 10:56:44 +02:00
adelaett
cc1c018818
trace flag when needed
2023-04-03 10:56:13 +02:00
adelaett
2a50a06b36
invariant mli
2023-04-03 10:38:33 +02:00
Denis Merigoux
e80143b3ca
Last linting pass and update tests
2023-03-31 17:56:45 +02:00
Denis Merigoux
b3949ae15c
Update assets
2023-03-31 16:55:51 +02:00
Denis Merigoux
6d71d52a2e
Update tests and create disable_warnings option
2023-03-31 16:43:03 +02:00
adelaett
380a3a0c92
structural invariants
2023-03-31 16:03:51 +02:00
adelaett
e9ead93f3f
fix typing errors
2023-03-31 16:01:05 +02:00
adelaett
573df8416f
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-03-31 15:52:06 +02:00
adelaett
272dc9e8b3
optimization reorg
2023-03-31 15:37:18 +02:00
Denis Merigoux
0057afc623
Fixing things after @JusBanuls' review pass on the code!
2023-03-31 15:34:50 +02:00
adelaett
beeecce091
correcting filter definition
2023-03-31 15:31:43 +02:00
Denis Merigoux
3d86a12261
Update error messages
2023-03-31 14:01:04 +02:00
Denis Merigoux
a7ee7074f9
Improve linting
2023-03-31 13:50:02 +02:00
Denis Merigoux
565aa23b8f
Implemented some lints
2023-03-31 11:47:44 +02:00
adelaett
69ac8ca929
implementation of fold, reduce, map & filter in without exceptions
...
Work in progress: not working for filter & map
2023-03-31 11:24:43 +02:00
Louis Gesbert
038861a52c
Generic mapping function across different ASTs
...
Used in lcalc/compile_with_exceptions only at the moment
2023-03-30 18:57:51 +02:00
Louis Gesbert
1208744c6b
EmptyError is no longer a literal
...
it's much simpler to handle it as an AST node, as that makes the literal
identical across all AST passes.
2023-03-30 18:54:50 +02:00
Denis Merigoux
3c364aa1fa
Progress on linting, bugguy unused field detection
2023-03-30 18:52:29 +02:00
Denis Merigoux
9d64150a47
Add linting
2023-03-30 16:09:03 +02:00
Denis Merigoux
fff2b78e31
Deleting linting which will have its own pass
2023-03-30 15:56:39 +02:00
Louis Gesbert
817dcb09fc
Simplify variable translation functions
2023-03-30 15:41:03 +02:00
Louis Gesbert
4973c74410
Remove date rounding mode from Operator.translate
2023-03-30 15:33:00 +02:00
Louis Gesbert
a415355a39
Rework the AST Gadt to allow merging of different ASTs
...
The phantom polymorphic variant qualifying AST nodes is reversed:
- previously, we were explicitely restricting each AST node to the passes where it belonged using a closed type (e.g. `[< dcalc | lcalc]`)
- now, each node instead declares the "feature" it provides using an open type (e.g. `[> 'Exceptions ]`)
- then the AST for a specific pass limits the features it allows with a closed type
The result is that you can mix and match all features if you wish,
even if the result is not a valid AST for any given pass. More
interestingly, it's now easier to write a function that works on
different ASTs at once (it's the inferred default if you don't write a
type restriction).
The opportunity was also taken to simplify the encoding of the
operators, which don't need a second type parameter anymore.
2023-03-30 15:30:08 +02:00
Denis Merigoux
04629f58cd
Merge branch 'master' into aides_logement_outre_mer
2023-03-30 15:14:06 +02:00
adelaett
61830bc348
fixing runtime merge errors
2023-03-30 11:02:35 +02:00
adelaett
6dee3874cc
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-03-30 10:50:32 +02:00
adelaett
7174480153
start of the translation of fold
2023-03-30 10:39:23 +02:00
adelaett
3e8aae99fe
typo in the traslation of lets
2023-03-30 10:39:07 +02:00
adelaett
729d634744
fixing translation of arrays
2023-03-30 10:38:54 +02:00
Aymeric Fromherz
b85a199daa
Add support for let .. in constructions in Z3 backend ( #434 )
2023-03-29 06:41:40 +09:00
adelaett
df740eed05
fixing with-exceptions
2023-03-28 10:07:01 +02:00
adelaett
37dcd96e41
correct scope debug formatting
2023-03-28 09:55:25 +02:00
adelaett
4fe23c894d
driver debugging code
2023-03-28 09:55:01 +02:00
adelaett
f3abc23c32
fixings tests (90% atm)
2023-03-28 09:54:44 +02:00
adelaett
c3d9ee299f
without exception: removing thunking
2023-03-28 09:54:04 +02:00
Denis Merigoux
44d8c32b9f
C backend for Catala : the closure conversion strikes back ( #364 )
2023-03-28 09:53:22 +02:00
adelaett
ba1c83f278
correct printing of option type
2023-03-28 09:52:40 +02:00
Denis Merigoux
e4c4339856
Small fixes
2023-03-28 09:38:47 +02:00
Aymeric Fromherz
5f04e0efaf
cleanup
2023-03-28 13:08:24 +09:00
Aymeric Fromherz
c711b0b1d7
cleanup
2023-03-28 13:00:07 +09:00
Aymeric Fromherz
082caae498
Add support for let_in in Z3 backend
2023-03-28 12:48:44 +09:00
adelaett
9806eb7e0f
format for program
2023-03-23 13:46:17 +01:00
adelaett
72ceafd67c
scopes does not return optional terms
2023-03-23 10:45:44 +01:00
Denis Merigoux
8b2f3319b8
Merge remote-tracking branch 'origin/master' into aides_logement_outre_mer
2023-03-21 17:57:38 +01:00
Louis Gesbert
69be2f6ed8
Fix literate output of dates
2023-03-21 16:59:34 +01:00
Denis Merigoux
3122dd7821
Update assets
2023-03-21 16:10:00 +01:00
adelaett
78c0842dc6
optimization tests
2023-03-21 14:31:45 +01:00
adelaett
256adcae4b
rename invariant
2023-03-21 14:31:21 +01:00
Denis Merigoux
48ef5b8f21
Fix warning and update assets
2023-03-21 14:00:49 +01:00
Denis Merigoux
578091f196
Restore check
2023-03-21 13:49:16 +01:00
Denis Merigoux
aa8ab3be3d
Merge branch 'master' into c_backend
2023-03-21 12:14:10 +01:00
Denis Merigoux
1a7982d225
Better printing
2023-03-21 11:24:19 +01:00
Denis Merigoux
7f705beb07
Merge branch 'master' into aides_logement_outre_mer
2023-03-17 17:52:10 +01:00
adelaett
d2da1c3e43
advancing
2023-03-17 17:24:51 +01:00
adelaett
7c39ad953b
fix iota optmi
2023-03-17 17:23:10 +01:00
adelaett
8c66fabe6a
fix mission operators in translate
2023-03-17 17:20:46 +01:00
adelaett
9a34ee95b1
equality program
2023-03-17 17:20:35 +01:00
adelaett
61ad00f277
unit test infrastructure for optimization
2023-03-17 17:19:50 +01:00
adelaett
850a1fdb56
more optimization on fold
2023-03-17 11:34:52 +01:00
Louis Gesbert
db09eb0c42
Add date rounding option in scope ( #397 )
2023-03-17 10:14:36 +01:00
Denis Merigoux
056e84792d
Printing warning for undefined variables
2023-03-17 09:25:14 +01:00
Denis Merigoux
4fcdd005e0
Merge branch 'master' into aides_logement_outre_mer
2023-03-17 09:18:27 +01:00
Raphaël Monat
d5cd5b206a
Show conflicting date rounding mode declarations when they happen
2023-03-16 18:51:01 +01:00
Raphaël Monat
8981b21edb
Add test for date rounding option conflict
2023-03-16 17:20:14 +01:00
Raphaël Monat
51ea9d8cff
Format code
2023-03-16 17:20:14 +01:00
Raphaël Monat
d3c27799de
Raise exception when more than one rounding mode option has been specified
2023-03-16 17:20:13 +01:00
Raphaël Monat
1e1e3b538e
Simplify format
2023-03-16 17:20:13 +01:00
Raphaël Monat
b013f4257d
Update parser error message
2023-03-16 17:20:13 +01:00
Raphaël Monat
887ec00d0e
Add explicit match
2023-03-16 17:20:13 +01:00
Raphaël Monat
64fa32392f
Update generated files
2023-03-16 17:20:09 +01:00
adelaett
4038ea02be
rainbox parenthesis
2023-03-16 17:15:08 +01:00
adelaett
82af9e8305
unfolding more bugs
2023-03-16 17:14:33 +01:00
Raphaël Monat
5fc1e8e5d5
Fix operator printing
2023-03-16 16:55:55 +01:00
Raphaël Monat
7021c41f93
Add date rounding option within scopes
2023-03-16 16:55:55 +01:00
adelaett
26551434f2
correct monadic bind & map implementation
2023-03-14 18:36:05 +01:00
adelaett
91ed8e1f5d
special handling of the option constructor as a polymorphic one with custom typing rules
2023-03-14 18:31:32 +01:00
adelaett
366a0d952b
introducing new operators for handleing defaults
2023-03-14 18:30:58 +01:00
Louis Gesbert
abc5a00c2f
Compile LaTeX code using minted without the Python venv
...
This is a hack, but not a dirty one: a new command `catala pygmentize` is added,
which is just a wrapper around `pygmentize` that calls it with the proper lexers
defined.
The point is that this needs no installation, just a stock `pygmentize`
installation and the `catala` binary.
2023-03-14 17:35:22 +01:00
Denis Merigoux
74df4ee988
Merge branch 'master' into aides_logement_outre_mer
2023-03-14 14:10:09 +01:00
Louis Gesbert
f1e44619e0
LaTeX literate output: handle pygments coloration from within Catala
...
This leverages the embedded lexer already used for HTML output, and uses the
LaTeX pygments backend to colorise code directly, without the need for `minted`.
2023-03-13 22:33:48 +01:00
adelaett
4d3b021eef
finished the implementation, but a few issues are missing
2023-03-13 16:51:06 +01:00
Louis Gesbert
5282aec400
LaTeX output: start refactor
2023-03-13 14:44:34 +01:00
Louis Gesbert
508992de33
Embed the Pygments Catala lexer
...
This enables the HTML output to work without a custom Pygments installation (or
the proper venv activated)
2023-03-13 14:41:24 +01:00
adelaett
b891114b72
tentative at a fully monadic encoding
2023-03-10 15:35:03 +01:00
adelaett
a8f0155c6e
Revert "toying"
...
This reverts commit 841b14aa0f
.
2023-03-10 15:34:29 +01:00
adelaett
21577ff1ba
introducing usefull term in the shared ast
2023-03-10 15:33:58 +01:00
adelaett
1580272d7f
more precise invariant
2023-03-10 15:32:42 +01:00
adelaett
ba74bbc52a
adding MapLabels and SetLabels to the standard Uid definitions.
2023-03-10 15:32:27 +01:00
Louis Gesbert
e1fe37ad09
Fix coloration in HTML output
2023-03-09 15:46:00 +01:00
Louis Gesbert
deb12d2c4a
Bump version to 0.8.0
...
Changelog:
---
A lot has been going on, with more than 530 patches and 70 PRs merged since
0.7.0 last summer. In summary:
- Quite a lot of syntax improvements and changes. Checkout the latest
[cheat-sheet](https://catalalang.github.io/catala/syntax.pdf ) for an overview
- Allow local `let ... equals ... in ...` definitions
- Better error messages and positions throughout
- Added the ability to directly call a scope and retrieve its outputs, like a
function
- Added disambiguation, allowing to access structure fields without specifying
the structure type each time
- Added automated resolution of operators, allowing e.g. to write just `+` in
place of all the type-specific operators `+.`, `+$`, `+@`, `+^`, etc.
- More consistent priority for operators. It is no longer allowed to write `a
and b or c` without parenthesis.
- Added and changed some operators (`date + duration` now allowed either way,
`int / int` now returns a decimal, added `duration / duration`)
- Added the ability to have variables and functions defined at
top-level (outside of any scope). See annex A of the tutorial for details.
- Added support for functions with multiple arguments
- Some big refactors in the compiler, allowing much better code sharing between
the different passes, and making it much easier to extend. Also added the
possibility to run the type-checker earlier, etc.
- Countless bug-fixes
- Improvements to our proof backend with Z3
- A tool to automatically synchronise with the upstream French law from
Legifrance
2023-03-08 18:07:53 +01:00
Louis Gesbert
6388a4b79f
Improved some error messages (cyclic defs, def positions)
2023-03-08 15:27:48 +01:00
Louis Gesbert
188a186735
Parser: make state rule syntax consistent with state definitions
...
Previously the `state` marker for rules was in a weird position:
```catala
rule foo under condition bar
consequence state st fulfilled
```
This patch unifies the syntax with definitions, now using instead:
```catala
rule foo state st
under condition bar
consequence fulfilled.
```
2023-03-08 15:17:58 +01:00
Louis Gesbert
42b8adb968
Add a duration / duration
overload
...
Interstingly enough, it was already implemented in the Python backend.
Required to implement *pro rata temporis*, which the US tax section 121 does
make use of.
Only allowed for durations expressed in days (as returned by `<date> - <date>`),
of course.
2023-03-08 15:17:58 +01:00
adelaett
841b14aa0f
toying
2023-03-06 18:26:46 +01:00
adelaett
6c0e04942f
corrected iota optimization
2023-03-06 16:00:41 +01:00
Denis Merigoux
bfc827296c
Merge branch 'master' into aides_logement_outre_mer
2023-03-06 14:09:51 +01:00
Denis Merigoux
1fe3987168
Formatting
2023-03-05 12:10:04 +01:00
Louis Gesbert
5398b1037f
Fix ill-funded order function on desugared vars
2023-03-03 19:22:17 +01:00
adelaett
78f121b44a
before any issues with mark on code_item
2023-03-03 11:39:55 +01:00
Louis Gesbert
97e0cfca6f
Improvements on function arguments refactoring
...
- simplify naming in the french law examples
- make messages yet more precise on function arguments mismatch
2023-03-02 19:11:21 +01:00
Louis Gesbert
3766e9db2c
Fix function argument naming consistency in the examples
2023-02-28 16:17:19 +01:00
Louis Gesbert
fc5910e093
Fix multi-argument scopedefs, improve error message positions
...
This adds a few positions to the parser, and tweaks some others, vastly
improving the reporting of some errors (inconsistent functions definitions, but
also exceptions cycles, etc.)
2023-02-28 15:53:50 +01:00
Louis Gesbert
2c97d5de14
Enforce consistency of function arguments naming
2023-02-28 15:53:50 +01:00
Louis Gesbert
8200457e43
Syntax change: require declaration of function argument names
2023-02-28 15:53:50 +01:00
Denis Merigoux
0667e3d40f
Merge branch 'master' into aides_logement_outre_mer
2023-02-28 15:01:31 +01:00
adelaett
73bd4b4064
finished to detect unpure subexpressions
2023-02-28 14:26:48 +01:00
adelaett
43b6595a09
Revert "not working fix for from_scopelang"
...
This reverts commit 1c837ec3b5
.
2023-02-28 09:32:25 +01:00
adelaett
1c837ec3b5
not working fix for from_scopelang
2023-02-28 09:32:10 +01:00
adelaett
178367efc0
adding invariant about App(EStructAccess)
2023-02-28 09:07:12 +01:00
adelaett
4cd3ec7cc3
Add an optimization pass to remove struct access of struct constructor
...
ie { e = x}.e -> x
2023-02-28 09:06:33 +01:00
adelaett
001a8205af
?
2023-02-28 08:39:30 +01:00
adelaett
631b6d77ff
Revert "Abandoning json conversion :("
...
This reverts commit 02780f5439
.
2023-02-28 08:37:50 +01:00
adelaett
02780f5439
Abandoning json conversion :(
2023-02-28 08:36:45 +01:00
adelaett
5fe09238c5
better error management when building with make_app
2023-02-28 08:36:45 +01:00
adelaett
2ae2ff7d50
adding a non-passing invariant
2023-02-28 08:36:34 +01:00
adelaett
75dc978fa9
remove logs from the no_partial_evaluation invariant
...
removed error_on_empty when functions
2023-02-27 11:20:59 +01:00
adelaett
b5f3621302
serialization wip
2023-02-27 11:20:59 +01:00
adelaett
9ec2b7785d
more work on invariants
2023-02-27 11:20:59 +01:00
adelaett
382150b513
new invariant option when launching the compiler
2023-02-27 11:20:59 +01:00
adelaett
6c3f0af9e0
invariant assertion checking
2023-02-27 11:20:59 +01:00
adelaett
173859d10e
invariant checking (untested)
2023-02-27 11:20:59 +01:00
adelaett
9319e94617
fix typo
2023-02-27 11:20:59 +01:00
adelaett
9a68563488
assert_internal & skeleton for the static pass
2023-02-27 11:20:59 +01:00
adelaett
8784ae6175
unpure detection in expressions
2023-02-27 11:20:59 +01:00
adelaett
214bc55aae
internal error message
2023-02-27 11:20:59 +01:00
adelaett
0262019d45
make app
2023-02-27 11:20:59 +01:00
adelaett
363ef39704
let case
2023-02-27 11:20:59 +01:00
adelaett
2a222f0aab
changed nix dependency from ocamlformat 24.1 to 21.0
2023-02-27 11:20:59 +01:00
adelaett
e765ee8a0c
requesting to have a typed tree
2023-02-27 11:20:59 +01:00
adelaett
44ce5a636b
fix tentative for functions applications
2023-02-27 11:20:59 +01:00
adelaett
5b33b39636
new helpers functions in lcalc's ast
2023-02-27 11:20:59 +01:00
Louis Gesbert
5bd140ae5f
Arrow List ( #404 )
2023-02-22 14:06:55 +01:00
adelaett
4f029db47b
explicitly don't accept multiple arguments from surface to desugared
2023-02-22 12:21:55 +01:00
adelaett
9f31715a47
style
2023-02-22 12:11:42 +01:00
adelaett
8553b9dd7e
Alternative printing of type TArrow
...
Changed the typing printing in the pretty printer to:
* () -> unit for empty lists
* a -> b for single elements lists
* (a, b, c, d) -> b for multiple elements lists
2023-02-22 11:52:22 +01:00
adelaett
bd0243359e
changed the invariant documentation of scopelang -> dcalc
...
Since functions inside catala can now have multiple arguments (while
not yet being user-definable) the invariant is now about partial
evaluation not being possible.
2023-02-22 11:42:48 +01:00
adelaett
576f21f69c
Added documentation for encoding constructors in the typing inference
2023-02-22 11:41:21 +01:00
adelaett
51b5ccb08e
change operator definition style to something more readable
2023-02-22 11:40:22 +01:00
adelaett
a4466fecc7
fixed some mixup in Format.fprintf arguments
2023-02-21 16:19:17 +01:00
adelaett
99d82bc33e
Fix toplevel type definition (if arg_types is [], then use a different way)
2023-02-21 14:17:24 +01:00
adelaett
b512dc6ec7
Fix List.combine internal error (create multiple TAny instead of only one)
2023-02-21 14:16:50 +01:00
adelaett
7036464df3
fix printing error (use utf8 insteed of ->)
2023-02-21 14:16:23 +01:00
adelaett
839a7ffd83
finished refactoring
2023-02-20 17:58:29 +01:00
adelaett
e519b7f146
until desugared
2023-02-20 17:21:44 +01:00
adelaett
f2bebe613b
- [x] shared_ast
2023-02-20 15:57:42 +01:00
adelaett
d79b8463a6
- [ ] shared_ast
2023-02-20 15:57:42 +01:00
adelaett
391bf2527d
make the change in the datatype
2023-02-20 15:57:42 +01:00
Louis Gesbert
8c40b1ddd0
Fix python output of toplevel defs
...
there is room for name clashes there though, maybe we should find a more
consistent renaming mechanism
2023-02-17 19:59:22 +01:00
Louis Gesbert
03645e6404
Rename Scalc from_lambda to from_lcalc for consistency
2023-02-17 19:49:56 +01:00
Denis Merigoux
fced0fff54
Add top-level definitions ( #391 )
2023-02-15 16:27:04 +01:00
Louis Gesbert
72cf477dd9
Toplevel definitions: fixes following review
...
Thanks @denismerigoux!
2023-02-15 12:40:15 +01:00
Rohan Padhye
014e11720e
Python backend: Use true division
...
Fixes a regression after the change in #368 , which converted all
integer division to return a decimal. The code generation backend
was still using the integer division operand `//`, which is not
overloaded by class `Integer` in the catala runtime.
2023-02-13 16:31:24 -05:00
Louis Gesbert
c3af0b4097
Toplevel definitions: branch cleanup
...
- fix remaining warnings (mostly unused arguments)
- renamings throughout for consistency and clarity
2023-02-13 18:02:09 +01:00
Louis Gesbert
912e1500c4
Handle toplevel defs down to scalc
2023-02-13 11:44:32 +01:00
Louis Gesbert
6f1ac5837d
Add syntax for calling multi-argument functions
...
* temporary and undocumented while waiting for discussion an approval
* previous patches already allowed definition (at toplevel) but there was no
syntax for calls
* no syntax for multi-args _local_ functions yet
2023-02-13 11:44:32 +01:00
Louis Gesbert
d66cd1e29c
Toplevel defs: tests & fixes
2023-02-13 11:44:32 +01:00