 18 Jul, 2017 1 commit


regnat authored
Chars.t is an abstract type and there is no way to get back its content in a manipulable structure, which is painful if external applications want to use Cduce as a library

 08 Jun, 2016 1 commit


Kim Nguyễn authored
Add auxiliary functions to not evaulate the argument of square intersection if one of the operand is unsat.

 07 Jun, 2016 1 commit


Kim Nguyễn authored
 correctly handle monomorphic variables in single  do not uselessly traverse a type if the constraints are already unsat.

 05 May, 2016 1 commit


Kim Nguyễn authored

 04 May, 2016 1 commit


Kim Nguyễn authored
 merging of constraints durring tallying  erroneously drop tallying hypotheses once a pair of type (t,s) such. that t<s has been found is candidate. * Catch the break signal and exit cleanly to allow one to run cduce with gprof enabled.

 03 May, 2016 3 commits


Kim Nguyễn authored
Partially revert commit 3a7648a9 since the workaround initially introduced for solving recursive types does not help at all and is unsound. Just cherry pick the fix mentioned in Issue#12.

Kim Nguyễn authored
Fix for issue #13 (provided by Tommaso Petrucciani). During the merging of constraint in tallying, we erroneously failed if one constraint set was unsatisfiable, instead of just discarding it.

Kim Nguyễn authored
Tentative fix for solve_rectype. Instead of replacing the variable directly with its (still empty) fixpoint, push the recursion downard (unfold the recursive type) until it is safe to replace, that is until we reach a constructor. This is what is done in typepat.ml anyway, but the fix in this commit do not make extra effort (as in typepat) to preserve maximal sharing, hence some equivalent nodes might not be physically equal.

 31 Mar, 2016 2 commits


Kim Nguyễn authored
Solve a nasty bug in solve rectype. The Decomposition was not stoping for plain variables but instead decomposing them into Int&'a  Atom&'a  …  Abstract &'a which made the substitution algorithms wrong (in particular forming recursive types).

Kim Nguyễn authored

 25 Mar, 2016 2 commits


Kim Nguyễn authored

Kim Nguyễn authored
let f : t = e The typechecker checks that indeed e has type t, even if t contains polymorphic type variables. Note that this is a type constraint and not a type hint has in OCaml, that is, the variables of t are monomorphic when testing the type, and are generalized afterwards. let f :? t = e still disallow polymorphic variables in t since it performs a dynamic typecheck.

 24 Mar, 2016 1 commit


Kim Nguyễn authored

 22 Mar, 2016 2 commits


Kim Nguyễn authored

Kim Nguyễn authored

 05 Dec, 2015 1 commit


Kim Nguyễn authored
e : t or e :? t.

 15 Nov, 2015 1 commit


Kim Nguyễn authored

 14 Nov, 2015 4 commits


Kim Nguyễn authored

Kim Nguyễn authored

Kim Nguyễn authored
parts of 802f291e).

Kim Nguyễn authored
This allows the compiler to correctly locate error messages occuring in the typechecker.

 13 Nov, 2015 3 commits


Kim Nguyễn authored
This reverts commit 802f291e. This large merge commit makes the typing of some polymorphic variables buggy.

Kim Nguyễn authored
Revert "Allow compilation of patterns to succeed even when the variables of the expected input type cannot be erased." This reverts commit 439186cd. This commit generates unsafe code that crashes easily at runtime.

Kim Nguyễn authored
Allow compilation of patterns to succeed even when the variables of the expected input type cannot be erased.

 11 Nov, 2015 1 commit


Kim Nguyễn authored

 07 Nov, 2015 2 commits


Kim Nguyễn authored

Kim Nguyễn authored

 06 Nov, 2015 7 commits


Kim Nguyễn authored
avoid a clash with variables in e.

https://git.cduce.org/cduceKim Nguyễn authored

Kim Nguyễn authored

Kim Nguyễn authored


Kim Nguyễn authored
For instance : let f : Int > Int = (fun ('a > 'a) x > x) is now accepted.

Giuseppe Castagna authored

 05 Nov, 2015 4 commits


Kim Nguyễn authored

Kim Nguyễn authored

Kim Nguyễn authored

Kim Nguyễn authored
 Part of the typechecking code was using the monomorphics subtyping function instead of the tallying (when checking the body of a function)  The function Var.gen that was generating new versions of typed variable names was not properly incrementing its internal counter, thus generating the same name for two distinct variables.

 04 Nov, 2015 2 commits


Kim Nguyễn authored

Kim Nguyễn authored
Work around to load camlp4 when compiling the parser is rebuilt as a dependency of the standard library.
