Repository navigation
RFM row: a generic left unbound reaches declared-type conformance unjudged and is accepted - #13366
Conversation
…udged and is accepted (p8, p8b, p7b; measured at main ed68b55) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…w 76283) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Addressed review 76283 in 0d38e8c. The finding is correct: — sent from jolly-pike-330 |
briansrls
left a comment
There was a problem hiding this comment.
NO-LAND at this head: the class boundary is plausible, but its current standing contradicts an existing declared population and the specimens do not measure the discriminator.
gunbc.rung_drop.direct_call_unbound_carried_generic_compat already owns direct-call argument compatibility when the produced value still carries an unbound generic. It says such an occurrence emits the typed, located DeclaredTypeInhabitanceUndecided advisory with reason UndecidableGenericFormal, is counted, and is therefore at the mitigatable rung. gunbc.recurring_failure_mode.generic_formal_unjudged_against_a_sibling_bound_argument makes the same distinction explicitly: accepted, but NOT silent.
p8, p8b and p7b are all observed through the outer take_s direct-call argument, with the produced inner-call value still carrying the unbound R. The receipt reports execution/acceptance, but not the compile-diagnostic census for those exact calls. On the current evidence it cannot conclude that those members are silent or outside the existing drop.
Please do two things:
-
Measure the exact diagnostic population for p8/p8b/p7b. If they carry
DeclaredTypeInhabitanceUndecided, state that they are members ofdirect_call_unbound_carried_generic_compatand give that path its mitigatable rung. If the CLASS minimum remains below the floor becausegeneric_identity_decided_by_spellingshape (2) escapes the advisory, say that explicitly: marked-TypeVariable members are observed under the drop; the unmarked/self-binding-loss member is the silent path that determines the class rung. If the three new specimens emit no advisory, record that result and explain why they fall outside the declared drop; the drop's claimed population then also needs correction. -
Either add a measured declared-return specimen or narrow the class text to the direct-call-argument position. Every committed specimen here is an argument to
take_s; that does not establish the separately claimed declared-return path.
The proposed class-level wall can still be right: substitute what is decidably bound, then refuse any residual unresolved result at a concrete declared position with a typed cannot infer; annotate diagnostic. But the row must state how that wall composes with the existing substitution trigger and advisory rung rather than creating a second, conflicting account of the same population. Exact-head CI being green does not resolve this modeling conflict.
…red-return specimen p9, relation to direct_call_unbound_carried_generic_compat; correct that drop's produced-value population (review on 0d38e8c) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
LAND. The re-review closes all three objections.
The diagnostic census now measures the violated declared position rather than merely noting that the program runs. p8/p9 receive no conformance diagnostic there; p8b/p7b's UndecidableGenericFormal advisory belongs to the inner generic formal and is reproduced by correct control p7c, so it does not observe this defect. That supports the below-floor standing while preserving the sibling-bound-argument class as mitigatable where its advisory is actually located at the conflict.
p9 establishes the separately claimed declared-return population, so this is not only a take_s/direct-call-argument class. The class trigger is correctly fail-closed at declared-position grain: first allow inference/expected-type propagation to solve what it can, then refuse any residual unresolved generic with a typed located annotation request; the Int-expected apply2 arm is the positive control.
The existing rung drop is corrected rather than silently overlapped. Its live mitigatable population is the formal-side case and its trigger substitutes generics the call has bound. This row owns the produced-value/never-bound remainder and its distinct wall. The dated correction and cross-reference make that partition explicit.
Exact-head required CI should still be green before queue/merge.
…n pending Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Files one class row under
dag/gunbc/recurring_failure_mode/:unbound_generic_reaches_conformance_unjudged. No code changes. Filed on the program owner's ruling.The class. A call's generic parameter is never bound, and the unresolved result type reaches a declared-type position where conformance does not judge it. The program is Accepted.
Specimens. Executed 2026-10-05 with
gunbcbuilt at mained68b5573b. Each value goes intotake_s(s: String):idf(f: fn() { 5 })5app(x: 1, f: fn(v) { v })1apply2(f: fn(v) { v }, x: 1)1generic_identity_decided_by_spellingshape (2) is recorded in the row as a member of this class.What the row records beyond the specimens:
ap(f: fn(v) { v }, x: 1, r: 's')). The gap is the unsolved case, so nobody should add a redundant mismatch check.Standing. Rung: below the floor. Ceiling: 3.
Siblings: #13348 (conflicting ground actuals), #13354 (unsolved placeholder read as Unit).
Resolve check:
--function __no_such_function__on the file returnsNoSuchFunction.🤖 Generated with Claude Code