Add support for passing null, string literals, enum lists and more to b.dependency()
#23340
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.
I was getting pretty fed up with not being able to pass null values as options to dependencies, which prevents this relatively common use case from working:
The only current workaround to this problem is to use a separate
b.dependency()
invocation for the null case, which is annoying (and the number of separate invocations rapidly increases the more optional options there are!).This PR first adds a fairly comprehensive standalone test case that tests the behavior of
b.dependency()
. It then implements support for passing[]const T
(including strings and string/lazy path lists)std.zig.BuildId
to
b.dependency()
and updates the test accordingly. Seetest/standalone/dependency_options/build.zig
for a demonstration of the new types of option values these changes allow for.Closes #21609
Closes #21928
(I only encountered these after I started working on this branch. Sorry!)