mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 14:23:45 +00:00
fixes #17630 ## Recursive Concept Cycle Detection - Track (conceptId, typeId) pairs during matching to detect cycles - Changed marker from IntSet to HashSet[ConceptTypePair] - Removed unused depthCount field - Added recursive concepts documentation to manual - Added tests for recursive concepts, distinct chains, and co-dependent concepts ## Fix Flaky `tasyncclosestall` Test The macOS ARM64 CI jobs were failing due to a flaky async socket test (unrelated to concepts). The test only accepted `EBADF` as a valid error code when closing a socket with pending writes. However, depending on timing, the kernel may report `ECONNRESET` or `EPIPE` instead: - **EBADF**: Socket was closed locally before kernel detected remote state - **ECONNRESET**: Remote peer sent RST packet (detected first) - **EPIPE**: Socket is no longer connected (broken pipe) All three are valid disconnection errors. The fix accepts any of them, making the test reliable across platforms. --------- Co-authored-by: Andreas Rumpf <araq4k@proton.me>
16 lines
300 B
Nim
16 lines
300 B
Nim
discard """
|
|
action: "compile"
|
|
"""
|
|
|
|
# https://github.com/nim-lang/Nim/issues/17630
|
|
# A concept that references itself in a proc signature
|
|
# should not cause infinite recursion / stack overflow
|
|
|
|
type
|
|
A = concept
|
|
proc test(x: Self, y: A)
|
|
|
|
proc test(x: int, y: int) = discard
|
|
|
|
discard (int is A)
|