Improve performance of "Evaluate build tags as true and false" feature (#2058)
This PR provides an alternative way of implementing #1938 (i.e.
evaluating both `tag` and `!tag` as true when evaluating build
constraints).
The way it was implemented originally has exponential time complexity
with the number of provided build tags. This made gazelle unusable on
projects with a relatively large number of tags, as the run would never
end.
This implementation leverages the existing `dropNegationForIgnoredTags`
to manipulate the tag expression.
Fixes #1262 in a more efficient way than what #1938 implemented.
6 files changed