[matcher] distinguish between run-time and compile-time finiteness and generate default cases accordingly (closes #3649)