ymand wrote:

> Yes, indeed the original match happens in separate context, but all contexts 
> share one `NodesMap`, which values are overriden with a consecutive match 
> ('clash').

I see -- I'd missed the reuse of the MatchResult. Now that I understand the 
problem, I don't think that you're suggestion will fix it.  The problem is that 
the IDs of the matchers are unique between different matchers, but not 
necessarily unique within a rule, because you can trivially reuse a matcher 
twice within the rule. So, we need a different source of uniqueness.

I don't have a quick fix offhand -- I think we'd probably want to package the 
ID with the rule case and then use a unique-ID generator (e.g. a global int 
variable) when we create the cases. But, in the meantime, if you want to 
unblock your progress, you could combine the position-based ID with the 
matcher-based ID, which would significantly decrease the likelihood of 
conflict. But, if you do that, please include a simple test that demonstrates 
the problem.

thanks!

https://github.com/llvm/llvm-project/pull/117658
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to