PURPOSE: Provide exhaustiveness checking algorithms for C++ Pattern Matching.
This repository contains data structures and algorithms that implement algorithms for exhaustiveness checking for Pattern Matching in C++. The code here is not intended to be complete and merely prototypes the essential aspects of the implementation.
There are currently five modules implementing various aspects of the system:
types
implements data structures representing types in C++, pat
provides an
abstract syntax tree for C++ patterns, constructor
provides a representation
for type constructor selections, contrib
contains algorithms which determine
which patterns contribute to exhaustiveness checking, and lib
implements the
core algorithms.
- Ensure all docs are markdown and use "short descriptions" that don't mention arguments.
- Make constructor functions into methods.
- Extend
pat_contributes
to filter outint
primitive literals. E.g.pat_contributes( μ⟦int⟧, μ⟦1⟧) ⇒ false
.