ruleguard/typematch: use external matcher state #374
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is the same trick we did with gogrep matcher.
The caller is supposed to pass the state that is not
shared between different threads.
For the most use cases, ruleguard has worker/runner based
concurrency, so it's easy to pass this state from the
worker that owns that state and doesn't share it with
other workers.
Also added some E2E tests that compile a ruleguard binary
with
-race
and run it using all test rules over the ruleguardown source code. If any of these rules cause a data race,
this test fails.
To avoid the slower test times, I removed the
-race
fromthe basic test as they do not involve any concurrent behavior
anyway, so it was just a waste of time.
Fixes #372
Fixes #368