Martin Vogel and Gen Li
87091edd24
fix(extract): receiver-aware self-recursion detection
...
The recursion detector flagged any call whose short name matched the
enclosing def as self-recursion, so super().save() inside save,
axios.get() inside get, and console.error() inside error were all
false positives feeding is_recursive, recursion_in_loop and
unguarded_recursion.
Add is_self_receiver() and AND it into the short-name comparison: a
qualified callee only counts when its whole receiver chain (everything
before the last '.') names the same object — self/this/cls/@self, or
the enclosing def's own receiver identifier parsed from
CBMDefinition.receiver (Go: s in 'func (s *Store) save()'). Bare names
keep the prior behavior. Matching the full chain keeps self.obj.recur()
(a field's same-named method) out, and the dynamic receiver whitelist
keeps Go s.save() detected.
Distilled from PR #699 with two corrections: the receiver chain is
matched via the last dot instead of the first segment (self.obj.recur
was still a false positive), and the enclosing-receiver whitelist so
Go method self-recursion is not lost.
Closes #599
Co-authored-by: Gen Li <lg320531124@users.noreply.github.com >
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com >
2026-07-03 20:20:49 +02:00
..
2026-07-02 20:15:11 +02:00
2026-07-01 20:17:11 +02:00
2026-04-01 23:22:44 +02:00
2026-03-15 19:26:12 +01:00
2026-05-30 18:26:44 +02:00
2026-03-17 22:05:57 +01:00
2026-07-03 20:20:49 +02:00
2026-06-27 13:54:51 +02:00
2026-06-28 18:47:39 +02:00
2026-05-30 17:02:06 +02:00
2026-07-03 10:08:01 +09:00
2026-05-28 13:55:48 +02:00
2026-06-08 22:55:23 +02:00
2026-06-27 17:40:48 +02:00
2026-05-29 00:34:18 +02:00
2026-06-08 22:55:23 +02:00
2026-05-28 13:55:48 +02:00
2026-05-08 23:26:32 +02:00
2026-06-28 13:40:53 +02:00
2026-06-02 18:50:55 +02:00
2026-05-08 23:26:32 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-06-01 18:28:36 +02:00
2026-06-01 18:28:36 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-07 10:46:21 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-07 10:46:21 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-07 10:46:21 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-07 10:46:21 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-07-01 20:17:11 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-05-09 11:50:05 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-06-01 18:07:05 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-04-15 21:28:51 +02:00
2026-03-07 18:01:27 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-04-15 21:28:51 +02:00
2026-06-28 18:47:39 +02:00
2026-06-28 18:47:39 +02:00
2026-06-28 08:12:23 +02:00
2026-06-22 19:56:46 -04:00
2026-06-03 02:13:30 +02:00
2026-04-01 23:22:44 +02:00
2026-03-15 19:26:12 +01:00
2026-03-13 00:07:28 +01:00
2026-03-15 19:26:12 +01:00
2026-06-22 22:04:31 +02:00
2026-05-21 16:28:55 +02:00
2026-06-10 16:42:20 +02:00
2026-06-03 22:31:17 +02:00
2026-03-05 22:39:01 +01:00
2026-04-15 23:56:03 +02:00
2026-04-15 23:56:03 +02:00