1. 28 Mar, 2015 1 commit
  2. 26 Mar, 2015 2 commits
  3. 25 Mar, 2015 3 commits
  4. 24 Mar, 2015 1 commit
  5. 23 Mar, 2015 1 commit
  6. 20 Mar, 2015 1 commit
  7. 18 Mar, 2015 3 commits
  8. 06 Mar, 2015 1 commit
  9. 04 Mar, 2015 6 commits
  10. 03 Mar, 2015 1 commit
  11. 28 Feb, 2015 3 commits
  12. 27 Feb, 2015 2 commits
  13. 26 Feb, 2015 2 commits
  14. 21 Feb, 2015 2 commits
  15. 20 Feb, 2015 2 commits
  16. 19 Feb, 2015 2 commits
  17. 18 Feb, 2015 1 commit
    • Kim Nguyễn's avatar
      Implement a safety-check to guarantee that recursive parametric types · 3aab1b01
      Kim Nguyễn authored
      remain regular. Within their recursive definitions, parametric types
      must always be instantiated with their original parameters and all
      types of mutually recursive definitions must have the same parameters.
      
      We use Tarjan's strongly connected components algorithm to group type definitions accordingly.
      3aab1b01
  18. 17 Feb, 2015 2 commits
  19. 16 Feb, 2015 4 commits
    • Kim Nguyễn's avatar
      Remove the a workaround the AST for patterns that was used to · 4f49a2af
      Kim Nguyễn authored
      correctly handle insantiated types in regular expressions.
      4f49a2af
    • Kim Nguyễn's avatar
      Add a warning when the lexer encounters the ambiguous ``[ 'a'a ]'' and · bcf40231
      Kim Nguyễn authored
      suggest to put a space before the second quote.
      
      Move the auxiliary 'warning' function from the typechecker to the
      Cduce_loc module.
      
      Re-indent some comments in ulexer.ml
      bcf40231
    • Kim Nguyễn's avatar
      Correctly flush the toplevel output in case the lexer consumes the · b05e438f
      Kim Nguyễn authored
      "\n" after the ;; token.
      b05e438f
    • Kim Nguyễn's avatar
      Fix the handling of polymorphic variables in the lexer. The solution · 36b83c45
      Kim Nguyễn authored
      to use two lexers (depending on whether we are between square brackets
      or not) is too brittle (it crudely tries to parse
       ``( [whitespace] 'a  [whitespace] )'' as a variable, to force the user
      to write the variable beetween parenthesis. However this does not scale
      to types with two arguments (says [ t ('a, 'b) ]).
      
      We use a simpler heuristic (with look ahead)
      
      (1) try to see if the regular expression
      
      ' (anything but ', \n)* '(anything but the first letter of an identifier)
      
      can be found. If so, we put back the lexeme in the buffer and parse it as as
      a string.
      
      (2) if (1) failed, try to parse it as a variable
      
      (3) if (3) failed, try to parse it again as a string. We are
      guaranteed to fail here but it means we have a malformed string, so we
      parse as a string to get a proper error message.
      
      The only thing this does not cover are cases like
      type t = [ 'abcd'Int ]
      which was tokenized before as [, 'abcd', Int, ]
      and is now tokenized as [, 'abcd, 'Int, ]
      It does not seem to be a problem in practice though (since in the code
      I have seen thus far, people were at least putting a space).
      it is easy to emmit a warning in this case, suggesting the user to add
      a whitespace to get the old behaviour back.
      36b83c45