; Fieldtest series-step1.4 (MUST FAIL) — param-in error quality for a
; disallowed element type.
;
; Task framing: an author who has used Series for Int/Float reaches for
; "a ring of the last N log lines" — i.e. (con Series (con Str)). The
; element type Str is NOT in Series's param-in set {Int, Float}, so this
; must be rejected. The axis question is the QUALITY of the diagnostic:
;   - does it name Series and the offending type Str?
;   - does it state the allowed set?
;   - does it point at a location?
;
; This fixture is otherwise valid: a single push of a Str literal into a
; Series of Str. The ONLY defect is the element type.
;
; Expected: `ail check` rejects. The whitepaper (0007 §param-in) names the
; diagnostic ParamNotInRestrictedSet, "naming the offending type and the
; allowed set." We record what actually surfaces.

(module series-step1_4_paramin_str_reject

  (fn main
    (type (fn-type (params) (ret (own (con Unit))) (effects IO)))
    (params)
    (body
      (let s (new Series (con Str) 3)
        (let s2 (app Series.push s "hello")
          (do io/print_str "unreachable\n"))))))
