MCPcopy
hub / github.com/pallets/jinja / branch_update

Method branch_update

src/jinja2/idtracking.py:123–145  ·  view source on GitHub ↗
(self, branch_symbols: t.Sequence["Symbols"])

Source from the content-addressed store, hash-verified

121 self._define_ref(name, load=(VAR_LOAD_RESOLVE, name))
122
123 def branch_update(self, branch_symbols: t.Sequence["Symbols"]) -> None:
124 stores: t.Set[str] = set()
125
126 for branch in branch_symbols:
127 stores.update(branch.stores)
128
129 stores.difference_update(self.stores)
130
131 for sym in branch_symbols:
132 self.refs.update(sym.refs)
133 self.loads.update(sym.loads)
134 self.stores.update(sym.stores)
135
136 for name in stores:
137 target = self.find_ref(name)
138 assert target is not None, "should not happen"
139
140 if self.parent is not None:
141 outer_target = self.parent.find_ref(name)
142 if outer_target is not None:
143 self.loads[target] = (VAR_LOAD_ALIAS, outer_target)
144 continue
145 self.loads[target] = (VAR_LOAD_RESOLVE, name)
146
147 def dump_stores(self) -> t.Dict[str, str]:
148 rv: t.Dict[str, str] = {}

Callers 1

visit_IfMethod · 0.80

Calls 1

find_refMethod · 0.95

Tested by

no test coverage detected