fix/tests: subsystems can't declare dependencies on non-globally-scoped subsystems #5456
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.
Problem
Subsystems haven't been able to declare dependencies on other scoped subsystems, just global instances. If you try to do, e.g. from the new tests:
You'll see:
Solution
The stacktrace helpfully gives the exact issue clearly --
Subsystem.closure()
was not usingsubsystem_dependencies_iter()
, and could therefore receive either aSubsystem
or aSubsystemDependency
. It has been assuming all dependencies were justSubsystem
s, which I noticed when I tried to declare a dependency on a scoped subsystem.Using
subsystem_dependencies_iter()
and extracting thesubsystem_cls
from theSubsystemDependency
object now allows users to declare dependencies on non-globally-scoped subsystems, which is pretty neat.