1. 01 Jul, 2022 1 commit
  2. 18 Jun, 2022 2 commits
    • Yorick Peterse's avatar
      Fix compiling int and guard patterns · 4cadd369
      Yorick Peterse authored
      Integer patterns could break certain nested patterns, such as
      `(4, (5, 7)) -> A` due to how fallback rows were handled: they were only
      processed in the fallback case of the outer pattern, resulting in the
      inner pattern not having enough/the expected rows to process. This in
      turn could result in exhaustive matches being treated as non-exhaustive.
      For example, prior to this commit a match like this was considered
          match (10, 20) {
            case (10, 20) -> A
            case (_, _)   -> B
      As part of this commit we also fix guard patterns, which were broken
      when the pattern was the same. For example, matches like this weren't
      handled correctly:
          match 42 {
            case 42 if x -> A
            case 42 if y -> B
            case 42      -> C
      This was caused by the compiler keeping track of the integer columns
      already processed, without taking into account guard expressions. This
      would result in `case 42 if y` and `case 42` being skipped.
      To fix th...
    • Yorick Peterse's avatar
      Use similar_asserts in jacobs2021 · 1dfe0be8
      Yorick Peterse authored
      This makes debugging test output a little easier.
  3. 01 Jun, 2022 1 commit
    • Yorick Peterse's avatar
      Optimise compiling of guards · fa1963d0
      Yorick Peterse authored
      In the jacobs2021 implementation we don't need to duplicate all initial
      rows. Instead, when we reach a Success node we can compile the remaining
      rows into a guard fallback. For integer patterns this requires some
      extra work, but for regular constructor patterns no changes are
      Thanks to Jules Jacobs for suggesting this approach via Email.
  4. 31 May, 2022 4 commits
  5. 26 May, 2022 4 commits
  6. 25 May, 2022 5 commits
  7. 24 May, 2022 6 commits
  8. 23 May, 2022 4 commits