(
builder: LowLevelIRBuilder, vec: Value, begin: Value, end: Value, line: int
)
| 570 | |
| 571 | |
| 572 | def vec_slice( |
| 573 | builder: LowLevelIRBuilder, vec: Value, begin: Value, end: Value, line: int |
| 574 | ) -> Value: |
| 575 | assert isinstance(vec.type, RVec) |
| 576 | vec_type = vec.type |
| 577 | item_type = vec_type.item_type |
| 578 | begin = builder.coerce(begin, int64_rprimitive, line) |
| 579 | end = builder.coerce(end, int64_rprimitive, line) |
| 580 | api_name = vec_api_by_item_type.get(item_type) |
| 581 | if api_name is not None: |
| 582 | name = f"{api_name}.slice" |
| 583 | elif vec_type.depth() == 0: |
| 584 | name = "VecTApi.slice" |
| 585 | else: |
| 586 | name = "VecNestedApi.slice" |
| 587 | call = CallC( |
| 588 | name, |
| 589 | [vec, begin, end], |
| 590 | vec_type, |
| 591 | steals=[False, False, False], |
| 592 | is_borrowed=False, |
| 593 | error_kind=ERR_MAGIC, |
| 594 | line=line, |
| 595 | ) |
| 596 | return builder.add(call) |
| 597 | |
| 598 | |
| 599 | def vec_to_list(builder: LowLevelIRBuilder, vec: Value, line: int) -> Value | None: |
no test coverage detected
searching dependent graphs…