1. 27 Jul, 2016 1 commit
    • Robbert Krebbers's avatar
      Make the types of the finite map type classes more specific. · f79a0b6f
      Robbert Krebbers authored
      This makes type checking more directed, and somewhat more predictable.
      
      On the downside, it makes it impossible to declare the singleton on
      lists as an instance of SingletonM and the insert and alter operations
      on functions as instances of Alter and Insert. However, these were not
      used often anyway.
      f79a0b6f
  2. 22 Jul, 2016 2 commits
  3. 01 Jul, 2016 1 commit
  4. 14 Jun, 2016 1 commit
  5. 30 May, 2016 2 commits
  6. 27 May, 2016 1 commit
  7. 21 Mar, 2016 1 commit
  8. 21 Feb, 2016 1 commit
  9. 20 Feb, 2016 1 commit
  10. 19 Feb, 2016 1 commit
  11. 17 Feb, 2016 3 commits
  12. 16 Feb, 2016 1 commit
  13. 14 Feb, 2016 2 commits
  14. 13 Feb, 2016 2 commits
  15. 11 Feb, 2016 1 commit
  16. 16 Jan, 2016 1 commit
  17. 14 Jan, 2016 1 commit
  18. 12 Jan, 2016 1 commit
  19. 21 Dec, 2015 1 commit
  20. 15 Dec, 2015 2 commits
  21. 18 Nov, 2015 1 commit
  22. 16 Nov, 2015 1 commit
  23. 11 Nov, 2015 1 commit
  24. 03 Feb, 2017 1 commit
  25. 01 Feb, 2017 1 commit
  26. 04 Jun, 2015 1 commit
  27. 22 Apr, 2015 1 commit
  28. 25 Feb, 2015 1 commit
  29. 08 Feb, 2015 2 commits
    • Robbert Krebbers's avatar
      Update copyright headers. · 5a73c4ed
      Robbert Krebbers authored
      5a73c4ed
    • Robbert Krebbers's avatar
      Support function pointers and use a state monad in the frontend. · b2109c25
      Robbert Krebbers authored
      Important changes in the core semantics:
      * Types extended with function types. Since function types are a special kind
        of pointer types, types now have an additional mutual part called "ptr_type".
      * Pointers extended with function pointers. Theses are just names that refer
        to an actual function in the function environment.
      * Typing environments extended to assign argument and return types to function
        names. Before we used a separate environment for these, but since the
        argument and return types are already needed to type function pointers, this
        environment would appear in pretty much every typing judgment.
      
      As a side-effect, the frontend has been rewritten entirely. The important
      changes are:
      
      * Type checking of expressions is more involved: there is a special kind of
        expression type corresponding to a function designator.
      * To handle things like block scoped extern function, more state-fullness was
        needed. To prepare for future extensions, the entire frontend now uses a
        state monad.
      b2109c25
  30. 25 Jan, 2015 1 commit
  31. 15 Nov, 2014 1 commit
    • Robbert Krebbers's avatar
      More accurate formalization of integer ranks. · da7a14bb
      Robbert Krebbers authored
      Integers with the same size, are no longer supposed to have the same rank. As a
      result, the C integer types (char, short, int, long, long long) are different
      (and thus cannot alias) even if they have the same size. We now have to use a
      more involved definition of integer promotions and usual arithmetic conversions.
      However, this new definition follows the C standard literally.
      da7a14bb
  32. 10 Oct, 2014 1 commit