| 1902 | # Use an AST visitor that notes all the offsets. |
| 1903 | lines, end_lines, columns, end_columns = set(), set(), set(), set() |
| 1904 | class SourceOffsetVisitor(ast.NodeVisitor): |
| 1905 | def generic_visit(self, node): |
| 1906 | super().generic_visit(node) |
| 1907 | if not isinstance(node, (ast.expr, ast.stmt, ast.pattern)): |
| 1908 | return |
| 1909 | lines.add(node.lineno) |
| 1910 | end_lines.add(node.end_lineno) |
| 1911 | columns.add(node.col_offset) |
| 1912 | end_columns.add(node.end_col_offset) |
| 1913 | |
| 1914 | SourceOffsetVisitor().visit(ast_tree) |
| 1915 |
no outgoing calls
searching dependent graphs…