nyash-codex
88400e7e22
feat(joinir): Phase 171-C-2 Trim pattern detection in LoopBodyCarrierPromoter
Implements the Trim pattern detection logic for carrier promotion:
- find_definition_in_body(): Iterative AST traversal to locate variable definitions
- is_substring_method_call(): Detects substring() method calls
- extract_equality_literals(): Extracts string literals from OR chains (ch == " " || ch == "\t")
- TrimPatternInfo: Captures detected pattern details for carrier promotion
This enables Pattern 5 to detect trim-style loops:
```hako
loop(start < end) {
local ch = s.substring(start, start+1)
if ch == " " || ch == "\t" || ch == "\n" || ch == "\r" {
start = start + 1
} else {
break
}
}
```
Unit tests cover:
- Simple and nested definition detection
- substring method call detection
- Single and chained equality literal extraction
- Full Trim pattern detection with 2-4 whitespace characters
Next: Phase 171-C-3 integration with Pattern 2/4 routing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 23:09:25 +09:00
..
2025-12-03 13:42:05 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 01:45:03 +09:00
2025-09-17 10:58:12 +09:00
2025-12-04 10:52:10 +09:00
2025-12-05 16:08:56 +09:00
2025-12-04 06:02:03 +09:00
2025-12-04 06:02:03 +09:00
2025-12-03 13:59:06 +09:00
2025-12-05 23:33:06 +09:00
2025-12-05 23:33:06 +09:00
2025-12-02 21:52:18 +09:00
2025-12-04 15:00:45 +09:00
2025-12-04 06:02:03 +09:00
2025-12-07 23:09:25 +09:00
2025-12-03 14:33:04 +09:00
2025-12-06 16:22:38 +09:00
2025-12-04 17:47:19 +09:00
2025-12-06 03:30:03 +09:00
2025-12-06 03:30:03 +09:00
2025-11-27 17:05:46 +09:00
2025-12-05 14:41:24 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-11-29 15:57:14 +09:00
2025-11-29 15:57:14 +09:00
2025-11-29 15:57:14 +09:00
2025-11-30 08:54:18 +09:00
2025-12-02 09:45:54 +09:00
2025-11-30 10:10:45 +09:00
2025-12-02 10:19:07 +09:00
2025-12-02 11:16:01 +09:00
2025-12-02 12:36:28 +09:00
2025-12-02 19:37:01 +09:00
2025-12-02 19:37:01 +09:00
2025-12-02 19:37:01 +09:00
2025-12-02 19:37:01 +09:00
2025-12-02 20:18:13 +09:00
2025-12-02 20:18:13 +09:00
2025-12-02 20:18:13 +09:00
2025-12-02 20:30:22 +09:00
2025-12-02 20:18:13 +09:00
2025-12-02 19:37:01 +09:00
2025-12-02 19:37:01 +09:00
2025-12-02 21:09:15 +09:00
2025-12-02 21:09:15 +09:00
2025-12-03 18:16:49 +09:00
2025-12-03 19:37:32 +09:00
2025-12-03 19:37:32 +09:00
2025-12-03 19:22:55 +09:00
2025-12-03 21:32:14 +09:00
2025-12-03 21:12:37 +09:00
2025-12-03 22:03:16 +09:00
2025-12-04 03:35:25 +09:00
2025-12-04 03:58:02 +09:00
2025-12-04 04:30:30 +09:00
2025-12-04 04:30:30 +09:00
2025-12-04 04:42:32 +09:00
2025-12-04 06:26:59 +09:00
2025-12-04 04:42:32 +09:00
2025-12-04 04:42:32 +09:00
2025-12-04 06:02:03 +09:00
2025-12-04 06:02:03 +09:00
2025-12-04 06:02:03 +09:00
2025-12-04 06:17:10 +09:00
2025-12-04 06:24:03 +09:00
2025-12-04 06:02:03 +09:00
2025-12-04 06:02:03 +09:00
2025-12-04 06:02:03 +09:00
2025-12-04 11:04:29 +09:00
2025-12-04 10:57:13 +09:00
2025-12-04 11:28:55 +09:00
2025-12-04 11:44:55 +09:00
2025-12-04 12:06:34 +09:00
2025-12-04 12:22:55 +09:00
2025-12-04 12:27:44 +09:00
2025-12-04 13:07:12 +09:00
2025-12-04 13:07:12 +09:00
2025-12-04 13:33:44 +09:00
2025-12-04 13:54:45 +09:00
2025-12-04 14:10:51 +09:00
2025-12-04 14:19:48 +09:00
2025-12-04 15:15:27 +09:00
2025-12-04 15:00:45 +09:00
2025-12-04 15:00:45 +09:00
2025-12-04 15:00:45 +09:00
2025-12-04 15:23:43 +09:00
2025-12-04 16:16:56 +09:00
2025-12-04 19:37:18 +09:00
2025-12-04 19:34:19 +09:00
2025-12-06 16:22:38 +09:00
2025-12-04 19:38:06 +09:00
2025-12-04 19:37:18 +09:00
2025-12-05 23:26:55 +09:00
2025-12-05 23:26:55 +09:00
2025-12-07 23:09:25 +09:00
2025-12-07 01:45:03 +09:00
2025-12-07 01:45:03 +09:00
2025-12-04 16:16:56 +09:00
2025-12-07 14:17:58 +09:00
2025-12-07 23:09:25 +09:00
2025-12-07 23:09:25 +09:00
2025-12-07 23:09:25 +09:00
2025-12-07 23:09:25 +09:00
2025-12-07 21:29:19 +09:00
2025-12-07 01:45:03 +09:00
2025-12-04 16:55:11 +09:00
2025-12-07 01:45:03 +09:00
2025-12-04 17:03:14 +09:00
2025-12-07 01:45:03 +09:00
2025-12-07 01:45:03 +09:00
2025-12-07 01:45:03 +09:00
2025-12-07 23:09:25 +09:00
2025-12-04 16:35:34 +09:00
2025-12-04 16:55:11 +09:00
2025-12-04 17:47:19 +09:00
2025-12-04 17:47:19 +09:00
2025-12-04 17:47:19 +09:00
2025-12-04 17:47:19 +09:00
2025-12-04 18:20:07 +09:00
2025-12-04 18:20:07 +09:00
2025-12-04 18:20:07 +09:00
2025-12-04 17:47:19 +09:00
2025-12-04 19:34:19 +09:00
2025-12-05 16:05:32 +09:00
2025-12-06 03:30:03 +09:00
2025-12-06 11:09:52 +09:00
2025-12-06 11:09:03 +09:00
2025-12-06 16:22:38 +09:00
2025-12-06 14:46:33 +09:00
2025-12-06 14:46:33 +09:00
2025-12-07 21:02:20 +09:00
2025-12-07 21:02:20 +09:00
2025-12-05 16:06:39 +09:00
2025-12-06 11:10:38 +09:00
2025-11-23 05:53:27 +09:00
2025-12-07 21:02:20 +09:00
2025-12-04 03:58:02 +09:00
2025-12-04 12:40:01 +09:00
2025-11-21 07:00:05 +09:00
2025-11-21 08:03:03 +09:00
2025-11-21 08:03:03 +09:00
2025-11-20 17:10:03 +09:00
2025-11-20 17:10:03 +09:00
2025-11-20 17:10:03 +09:00