Subject: Re: bug#16416: 24.3; [SMIE] Assertion failure in smie-prec2->grammar

From: Stefan Monnier <[email-masked]>
Date: Mon, 13 Jan 2014 20:04:07 -0500

> (smie-prec2->grammar (smie-bnf->prec2 '((name) (l ("a" name)))))
> This raised the following error message:
> (cl-assertion-failed (numberp (car cons)))

Hmm..indeed.  The assertion can be removed, but then we bump into
another signal.  The problem is that the grammar is simply "too
trivial" and smie.el seems to bump into invalid assumptions in
that case.  As soon as you add some other terminal to the "l" rule, or
the "name" rule, or you use "l" somewhere, the problem disappears.

Intuitively this problem might manifest itself in a more realistic
grammar, yet I don't quite see in which case, and for that reason
I don't really see yet what would be the right fix.  I'm tempted to
think that the problem is partly to blame on smie-bnf->prec2 which
generates a prec2 table where "a" is missing (except for the side info
of :smie-open/close-alist).

        Stefan