Skip to content

Diagnostics, Error Reporting

frenchy64 edited this page Aug 22, 2011 · 3 revisions

Fail Nodes

Potentially lots of useful information can be given with a fail node.

Comprehensive Pattern Rows

Simple pattern comprehensiveness warnings can be given, for example

(match [x]
       [1] 1)

This pattern matrix can fall through.

Might give warning:

Warning: Non-comprehensive pattern matrix

Done

Reporting on matching-so-far

If a fail node is reached, could report on how the match got to that point.

(let [x 1
      y 2
      z 3]
  (match [x y z]
         [1 3 3] 1))

Could give error:

No match found: No match for {y 3}, successful matches: {x 1, z 3}

Decent messages for Seq patterns that are gensymed will be more challenging.

Diagnostics

Some useful information to report:

  • Number of branches tested at runtime (how many conds executed)
  • Number of SwitchNodes created at compile time
  • Number of LeafNodes created at compile time (?)
  • Execution trace of Matrix->DAG compilation

Pre/post Matrix expansion

It would be useful to show the origin of the expanded occurances in error messages.

This would make following long lists easier, for example.

Clone this wiki locally