(cl: ClassIR, table: SlotTable, emitter: Emitter)
| 175 | |
| 176 | |
| 177 | def generate_slots(cl: ClassIR, table: SlotTable, emitter: Emitter) -> dict[str, str]: |
| 178 | fields: dict[str, str] = {} |
| 179 | generated: dict[str, str] = {} |
| 180 | # Sort for determinism on Python 3.5 |
| 181 | for name, (slot, generator) in sorted(table.items(), key=lambda x: slot_key(x[0])): |
| 182 | method_cls = cl.get_method_and_class(name) |
| 183 | if method_cls and (method_cls[1] == cl or name in ALWAYS_FILL): |
| 184 | if slot in generated: |
| 185 | # Reuse previously generated wrapper. |
| 186 | fields[slot] = generated[slot] |
| 187 | else: |
| 188 | # Generate new wrapper. |
| 189 | name = generator(cl, method_cls[0], emitter) |
| 190 | fields[slot] = name |
| 191 | generated[slot] = name |
| 192 | |
| 193 | return fields |
| 194 | |
| 195 | |
| 196 | def generate_class_type_decl( |
no test coverage detected
searching dependent graphs…