(state: State, data: ReadBuffer)
| 830 | |
| 831 | |
| 832 | def read_type(state: State, data: ReadBuffer) -> Type: |
| 833 | tag = read_tag(data) |
| 834 | if tag == types.UNBOUND_TYPE: |
| 835 | name = read_str(data) |
| 836 | expect_tag(data, LIST_GEN) |
| 837 | n = read_int_bare(data) |
| 838 | args = tuple(read_type(state, data) for i in range(n)) |
| 839 | empty_tuple_index = read_bool(data) |
| 840 | t = read_tag(data) |
| 841 | if t == LITERAL_NONE: |
| 842 | original_str_expr = None |
| 843 | elif t == LITERAL_STR: |
| 844 | original_str_expr = read_str_bare(data) |
| 845 | else: |
| 846 | assert False, f"Unexpected tag for original_str_expr: {t}" |
| 847 | t = read_tag(data) |
| 848 | if t == LITERAL_NONE: |
| 849 | original_str_fallback = None |
| 850 | elif t == LITERAL_STR: |
| 851 | original_str_fallback = read_str_bare(data) |
| 852 | else: |
| 853 | assert False, f"Unexpected tag for original_str_fallback: {t}" |
| 854 | unbound = UnboundType( |
| 855 | name, |
| 856 | args, |
| 857 | empty_tuple_index=empty_tuple_index, |
| 858 | original_str_expr=original_str_expr, |
| 859 | original_str_fallback=original_str_fallback, |
| 860 | ) |
| 861 | read_loc(data, unbound) |
| 862 | expect_end_tag(data) |
| 863 | return unbound |
| 864 | elif tag == types.UNION_TYPE: |
| 865 | expect_tag(data, LIST_GEN) |
| 866 | n = read_int_bare(data) |
| 867 | items = [read_type(state, data) for i in range(n)] |
| 868 | uses_pep604_syntax = read_bool(data) |
| 869 | t = read_tag(data) |
| 870 | if t == LITERAL_NONE: |
| 871 | original_str_expr = None |
| 872 | elif t == LITERAL_STR: |
| 873 | original_str_expr = read_str_bare(data) |
| 874 | else: |
| 875 | assert False, f"Unexpected tag for original_str_expr: {t}" |
| 876 | t = read_tag(data) |
| 877 | if t == LITERAL_NONE: |
| 878 | original_str_fallback = None |
| 879 | elif t == LITERAL_STR: |
| 880 | original_str_fallback = read_str_bare(data) |
| 881 | else: |
| 882 | assert False, f"Unexpected tag for original_str_fallback: {t}" |
| 883 | union = UnionType(items, uses_pep604_syntax=uses_pep604_syntax) |
| 884 | union.original_str_expr = original_str_expr |
| 885 | union.original_str_fallback = original_str_fallback |
| 886 | union.is_evaluated = read_bool(data) |
| 887 | read_loc(data, union) |
| 888 | expect_end_tag(data) |
| 889 | return union |
no test coverage detected
searching dependent graphs…