ast: relax rule conflict check to allow multiple assignments
This is a follow-on to aeda97e8ee68ea6f41615a11cef59df7eea2e675 so
that users can declare multiple rules with the same name using ":=".
The original purpose of the check was to reduce the chance that
someone would write a rule that generates conflicts. The problem w/
this check is that doesn't remove conflicts completely--it only
removes a class of conflict errors that are trivial to diagnose. For
example:
package foo
p := 7
p := 8
If the user asks for `p`, previously they'd receive a type error; now
they're receive an eval error. This example is a bit contrived
though. In reality, conflicts are a more likely to occur due to
iteration and assignment to a single variable... for example:
package foo
p := x { some x in input }
Of course, this rule will pass the check because the check cannot
determine whether there _will_ be multiple assignments to `p`.
Since the check fails to prevent a class of errors that is difficult
to debug AND it would be beneficial to use := and == everywhere
instead of =, we're opting to disable it going forward.
Signed-off-by: Torin Sandall <torinsandall@gmail.com> T
Torin Sandall committed
e87d89e20023c9e1db3ae4b7de683b7683fb3aff
Parent: 3c03cc8