The substitution that specifies the trees that compute the values of the subpattern binders.
The substitution that specifies the trees that compute the values of the subpattern binders.
Should not be used to perform actual substitution! Only used to reason symbolically about the values the subpattern binders are bound to. See TreeMakerToCond#updateSubstitution.
Overridden in PreserveSubPatBinders to pretend it replaces the subpattern binders by subpattern refs (Even though we don't do so anymore -- see SI-5158, SI-5739 and SI-6070.)
TODO: clean this up, would be nicer to have some higher-level way to compute the binders bound by this tree maker and the symbolic values that correspond to them
captures the scope and the value of the bindings in patterns important *when* the substitution happens (can't accumulate and do at once after the full matcher has been constructed)
captures the scope and the value of the bindings in patterns important *when* the substitution happens (can't accumulate and do at once after the full matcher has been constructed)
(trivialTreeMaker: StringAdd).self
(trivialTreeMaker: StringFormat).self
(trivialTreeMaker: ArrowAssoc[(TreeMakers.this)#TrivialTreeMaker]).x
(Since version 2.10.0) Use leftOfArrow
instead
(trivialTreeMaker: Ensuring[(TreeMakers.this)#TrivialTreeMaker]).x
(Since version 2.10.0) Use resultOfEnsuring
instead