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 PR introduces three essential changes:
Routine.linked_params
. Instead of mapping source parameters to pairs(routine, param)
, whereroutine
is itself aRoutine
object, it now stores values of the form(path, param)
. This is done to facilitate detection of linkage deeper than one level without referring to routine's parent.To explain what we mean by converting deep linkagkes into a series of shallow ones: suppose you have routine
a
, its childb
andb
's childc
. Leta
have parameterx
linked toc
's parametery
(i.e.a#x -> c#y
). Then:(a#x -> c#y)
is removed.a#x
is linked to a new input parameterb#c.y
.b#c.y
is linked toc#y
.Naturally, the same process applies if there is more than one level of nesting.