| 1572 | return self._find(**implicit, **explicit) |
| 1573 | |
| 1574 | def _find(self, filename=None, funcname=None, name=None, kind=None): |
| 1575 | for decl in self._decls.values(): |
| 1576 | if filename and decl.filename != filename: |
| 1577 | continue |
| 1578 | if funcname: |
| 1579 | if decl.kind is not KIND.VARIABLE: |
| 1580 | continue |
| 1581 | if decl.parent.name != funcname: |
| 1582 | continue |
| 1583 | if name and decl.name != name: |
| 1584 | continue |
| 1585 | if kind: |
| 1586 | kinds = KIND.resolve_group(kind) |
| 1587 | if decl.kind not in kinds: |
| 1588 | continue |
| 1589 | yield decl |
| 1590 | |
| 1591 | def _add_decl(self, decl, key=None): |
| 1592 | if key: |