(builder: LowLevelIRBuilder, vec: Value, iterable: Value, line: int)
| 436 | |
| 437 | |
| 438 | def vec_extend(builder: LowLevelIRBuilder, vec: Value, iterable: Value, line: int) -> Value: |
| 439 | vec_type = vec.type |
| 440 | assert isinstance(vec_type, RVec) |
| 441 | item_type = vec_type.item_type |
| 442 | if isinstance(iterable.type, RVec) and iterable.type == vec_type: |
| 443 | suffix = "_vec" |
| 444 | src = iterable |
| 445 | else: |
| 446 | suffix = "" |
| 447 | src = builder.coerce(iterable, object_rprimitive, line) |
| 448 | item_type_arg: list[Value] = [] |
| 449 | api_name = vec_api_by_item_type.get(item_type) |
| 450 | if api_name is not None: |
| 451 | name = f"{api_name}.extend{suffix}" |
| 452 | elif vec_type.depth() == 0: |
| 453 | name = f"VecTApi.extend{suffix}" |
| 454 | item_type_arg = [vec_item_type(builder, item_type, line)] |
| 455 | else: |
| 456 | name = f"VecNestedApi.extend{suffix}" |
| 457 | return builder.add( |
| 458 | CallC( |
| 459 | name, |
| 460 | [vec, src] + item_type_arg, |
| 461 | vec_type, |
| 462 | steals=[True, False] + ([False] if item_type_arg else []), |
| 463 | is_borrowed=False, |
| 464 | error_kind=ERR_MAGIC, |
| 465 | line=line, |
| 466 | ) |
| 467 | ) |
| 468 | |
| 469 | |
| 470 | def vec_pop(builder: LowLevelIRBuilder, base: Value, index: Value, line: int) -> Value: |
no test coverage detected
searching dependent graphs…