(builder: LowLevelIRBuilder, vec: Value, item: Value, line: int)
| 405 | |
| 406 | |
| 407 | def vec_append(builder: LowLevelIRBuilder, vec: Value, item: Value, line: int) -> Value: |
| 408 | vec_type = vec.type |
| 409 | assert isinstance(vec_type, RVec) |
| 410 | item_type = vec_type.item_type |
| 411 | coerced_item = builder.coerce(item, item_type, line) |
| 412 | item_type_arg = [] |
| 413 | api_name = vec_api_by_item_type.get(item_type) |
| 414 | if api_name is not None: |
| 415 | name = f"{api_name}.append" |
| 416 | elif vec_type.depth() == 0: |
| 417 | name = "VecTApi.append" |
| 418 | item_type_arg = [vec_item_type(builder, item_type, line)] |
| 419 | else: |
| 420 | coerced_item = convert_to_t_ext_item(builder, coerced_item) |
| 421 | name = "VecNestedApi.append" |
| 422 | call = builder.add( |
| 423 | CallC( |
| 424 | name, |
| 425 | [vec, coerced_item] + item_type_arg, |
| 426 | vec_type, |
| 427 | steals=[True, False] + ([False] if item_type_arg else []), |
| 428 | is_borrowed=False, |
| 429 | error_kind=ERR_MAGIC, |
| 430 | line=line, |
| 431 | ) |
| 432 | ) |
| 433 | if vec_type.depth() > 0: |
| 434 | builder.keep_alive([item], line) |
| 435 | return call |
| 436 | |
| 437 | |
| 438 | def vec_extend(builder: LowLevelIRBuilder, vec: Value, iterable: Value, line: int) -> Value: |
no test coverage detected
searching dependent graphs…