ringabout
9a2b0dd045
fixes #25697 ; {.borrow.} on iterator for distinct seq triggers internal error ( #25709 )
...
fixes #25697
This pull request improves the handling of borrowed routines in the
compiler transformation phase, making the code more robust and
maintainable. The main change is the introduction of a helper function
to properly resolve borrowed routine symbols, which is then used in
multiple places to ensure correct symbol resolution. Additionally, a new
test case is added to cover a previously reported bug related to
borrowed iterators on distinct types.
**Compiler improvements:**
* Added `resolveBorrowedRoutineSym` helper function to follow borrow
aliases and retrieve the underlying implementation symbol for borrowed
routines. This centralizes and clarifies the logic for resolving
borrowed symbols.
* Updated `transformSymAux` and `transformFor` to use the new helper
function, replacing duplicated logic and improving correctness when
handling borrowed routines.
[[1]](diffhunk://#diff-c7b80f51fb685eb22c5b56ee2f320d6c708706f3ae7293478ecd104a2b5b8096L139-R154)
[[2]](diffhunk://#diff-c7b80f51fb685eb22c5b56ee2f320d6c708706f3ae7293478ecd104a2b5b8096L788-R795)
**Testing:**
* Added a test case for bug #25697 to `tests/distinct/tborrow.nim`,
ensuring that iteration over a distinct type with a borrowed iterator
works as expected.
2026-04-09 11:08:03 +02:00
..
2026-01-16 12:19:17 +01:00
2025-11-13 21:31:24 +01:00
2023-08-06 14:26:21 +02:00
2023-12-15 10:20:57 +01:00
2026-03-23 09:35:30 +01:00
2026-03-19 21:25:11 +01:00
2025-12-01 22:59:12 +01:00
2026-03-15 07:57:16 +01:00
2024-04-16 12:46:59 +02:00
2024-07-12 15:23:09 +02:00
2023-10-11 17:44:14 +02:00
2026-02-10 13:21:35 +01:00
2024-11-19 08:51:54 +01:00
2026-01-05 15:21:59 +01:00
2024-11-18 17:34:37 +01:00
2024-11-18 17:34:37 +01:00
2026-04-02 07:19:43 +02:00
2026-04-02 07:19:43 +02:00
2026-04-02 07:19:43 +02:00
2022-11-30 21:51:13 +01:00
2025-10-06 21:55:31 +02:00
2026-04-02 07:19:43 +02:00
2024-11-18 17:34:37 +01:00
2024-11-18 17:34:37 +01:00
2026-04-02 07:19:43 +02:00
2025-03-10 11:20:44 +01:00
2026-04-02 07:19:43 +02:00
2025-12-29 00:20:33 +01:00
2025-12-11 18:22:38 +01:00
2026-03-16 16:56:18 +01:00
2024-03-28 11:04:12 +01:00
2026-03-27 10:19:35 +01:00
2023-06-18 16:06:14 +02:00
2025-12-31 13:33:57 +01:00
2026-02-01 17:06:33 +01:00
2017-01-07 22:35:09 +01:00
2022-06-10 20:40:08 +02:00
2023-10-29 14:48:11 +01:00
2026-01-22 04:26:20 +01:00
2026-02-10 13:21:35 +01:00
2023-08-06 14:26:21 +02:00
2026-03-27 10:20:10 +01:00
2025-11-13 21:31:24 +01:00
2023-11-20 21:12:13 +01:00
2025-12-11 18:22:38 +01:00
2025-12-11 18:22:38 +01:00
2024-08-28 20:46:36 +02:00
2025-07-14 23:14:06 +02:00
2023-10-29 14:48:11 +01:00
2023-10-29 14:48:11 +01:00
2023-10-29 14:48:11 +01:00
2025-12-11 18:22:38 +01:00
2025-11-21 21:26:43 +01:00
2023-10-29 14:48:11 +01:00
2026-01-22 04:26:20 +01:00
2020-06-01 19:21:41 +02:00
2026-03-07 15:10:01 +01:00
2025-11-25 12:49:23 +01:00
2025-10-13 13:47:06 +02:00
2026-04-02 07:19:43 +02:00
2024-12-27 19:42:18 +01:00
2026-03-05 23:08:51 +01:00
2025-07-14 23:15:44 +02:00
2026-04-04 19:47:01 +02:00
2026-04-02 07:19:43 +02:00
2023-12-13 10:39:10 +01:00
2026-01-23 22:50:00 +01:00
2026-04-02 11:46:49 +02:00
2025-12-11 18:22:38 +01:00
2026-03-19 07:39:18 +01:00
2026-01-23 22:50:00 +01:00
2026-04-02 07:19:43 +02:00
2026-01-16 12:19:17 +01:00
2025-12-11 18:22:38 +01:00
2021-01-12 09:36:51 +01:00
2026-03-07 07:39:57 +01:00
2026-01-16 12:19:17 +01:00
2024-04-05 08:54:48 +02:00
2026-03-19 07:35:24 +01:00
2026-01-09 13:10:04 +01:00
2025-11-13 21:31:24 +01:00
2026-02-10 13:21:35 +01:00
2026-03-24 21:34:46 +08:00
2026-02-07 20:46:50 +01:00
2025-12-11 18:22:38 +01:00
2026-02-24 09:40:21 +01:00
2026-01-07 13:45:26 +01:00
2023-12-15 08:13:25 +01:00
2025-10-23 09:05:05 +02:00
2025-11-13 21:31:24 +01:00
2023-10-29 14:48:11 +01:00
2023-10-29 14:48:11 +01:00
2025-12-11 18:22:38 +01:00
2023-10-29 14:48:11 +01:00
2024-08-12 15:33:26 +02:00
2023-04-17 20:55:22 +02:00
2025-04-03 12:54:00 +02:00
2026-02-10 00:04:11 +01:00
2023-08-06 14:26:21 +02:00
2025-11-13 21:31:24 +01:00
2025-09-24 06:29:57 +02:00
2025-07-14 23:15:02 +02:00
2022-08-24 09:44:16 +02:00
2026-01-16 12:19:17 +01:00
2023-10-29 14:48:11 +01:00
2025-04-12 08:39:11 +02:00
2026-01-24 06:07:41 +01:00
2023-03-03 07:36:38 +01:00
2025-10-13 13:47:06 +02:00
2018-05-27 19:19:12 +02:00
2026-02-10 13:21:35 +01:00
2023-10-29 14:48:11 +01:00
2024-04-10 14:41:16 +02:00
2024-09-03 09:19:52 +02:00
2023-07-02 22:36:05 +02:00
2026-01-24 06:07:41 +01:00
2023-10-29 14:48:11 +01:00
2025-04-12 08:39:11 +02:00
2023-11-06 18:33:28 +01:00
2023-08-10 14:26:40 +02:00
2020-09-11 01:04:07 +02:00
2026-02-10 00:04:11 +01:00
2026-02-10 13:21:35 +01:00
2026-04-01 21:01:55 +02:00
2026-04-08 00:51:47 +02:00
2026-04-01 21:01:55 +02:00
2025-12-11 18:22:38 +01:00
2025-12-30 23:09:01 +01:00
2025-12-11 18:22:38 +01:00
2025-12-26 21:59:38 +01:00
2025-12-11 18:22:38 +01:00
2026-04-07 06:59:24 +02:00
2025-12-11 18:22:38 +01:00
2025-12-11 18:22:38 +01:00
2026-04-08 00:51:47 +02:00
2026-04-05 14:00:04 +02:00
2022-12-11 16:58:50 +01:00
2026-01-16 12:19:17 +01:00
2026-03-26 20:38:54 +01:00
2026-02-24 10:47:14 +01:00
2026-02-13 22:59:21 +01:00
2026-04-01 21:01:55 +02:00
2025-12-26 21:59:38 +01:00
2025-12-11 18:22:38 +01:00
2024-03-16 08:35:18 +08:00
2026-02-10 13:21:35 +01:00
2025-12-29 13:52:22 +01:00
2025-07-18 08:44:36 +02:00
2024-04-10 14:41:16 +02:00
2023-08-10 14:26:40 +02:00
2026-04-09 11:08:03 +02:00
2025-04-12 08:39:11 +02:00
2025-12-31 13:33:57 +01:00
2026-03-30 15:09:11 +02:00
2026-03-20 07:07:26 +01:00
2026-04-02 11:46:49 +02:00
2023-10-29 14:48:11 +01:00
2025-11-13 21:31:24 +01:00
2026-02-10 13:21:35 +01:00
2023-12-12 16:54:50 +01:00
2025-12-25 00:04:18 +01:00
2026-03-09 11:59:12 +01:00
2026-04-01 00:24:06 +02:00
2023-08-10 14:26:40 +02:00
2024-04-10 14:41:16 +02:00
2025-05-10 08:26:21 +02:00
2025-11-13 21:31:24 +01:00
2026-01-16 12:19:17 +01:00
2023-12-25 07:12:54 +01:00