310 for varname, varobj in self.rqlst.defined_vars.items(): |
310 for varname, varobj in self.rqlst.defined_vars.items(): |
311 # if variable has an eid specified, we can get its source directly |
311 # if variable has an eid specified, we can get its source directly |
312 # NOTE: use uidrel and not constnode to deal with "X eid IN(1,2,3,4)" |
312 # NOTE: use uidrel and not constnode to deal with "X eid IN(1,2,3,4)" |
313 if varobj.stinfo['uidrel'] is not None: |
313 if varobj.stinfo['uidrel'] is not None: |
314 rel = varobj.stinfo['uidrel'] |
314 rel = varobj.stinfo['uidrel'] |
|
315 hasrel = len(varobj.stinfo['relations']) > 1 |
315 for const in rel.children[1].get_nodes(Constant): |
316 for const in rel.children[1].get_nodes(Constant): |
316 eid = const.eval(self.plan.args) |
317 eid = const.eval(self.plan.args) |
317 source = self._session.source_from_eid(eid) |
318 source = self._session.source_from_eid(eid) |
318 if not any(source.support_relation(r.r_type) |
319 if (source is self.system_source |
319 for r in varobj.stinfo['relations'] if not r is rel): |
320 or (hasrel and |
|
321 not any(source.support_relation(r.r_type) |
|
322 for r in varobj.stinfo['relations'] |
|
323 if not r is rel))): |
320 self._set_source_for_term(self.system_source, varobj) |
324 self._set_source_for_term(self.system_source, varobj) |
321 else: |
325 else: |
322 self._set_source_for_term(source, varobj) |
326 self._set_source_for_term(source, varobj) |
323 continue |
327 continue |
324 rels = varobj.stinfo['relations'] |
328 rels = varobj.stinfo['relations'] |