Motivating case: foo bar; is not a declaration of nothing with foo and bar
both types.
This is a common and critical ambiguity, clangd/AST.cpp has 20% fewer
ambiguous nodes (1674->1332) after this change.
This could benefit from caching, but there's no caching infra in this patch.
nit: I would suggest using the index explicitly P.RHS[0], P.RHS[1], it increases the readability (the rul name encoding the index, easier to spot the corresponding element).