scrml.dev v0.7.1
Reference › Errors

E-VALIDATOR-CIRCULAR-DEP

Validator predicate arguments form a cycle.

Error Compile-time SPEC §31.4 (normative)

What it means

Cross-field validators may reference other fields — eq(), comparisons against sibling cells — and those references form a dependency graph. That graph must be a DAG: validation is evaluated in dependency order, so a cycle has no valid evaluation order. The code fires both for a direct self-reference (a field whose validator reads itself) and for a longer cycle across several fields.

Minimal reproducer

This is the exact source compiled against the linked compiler and verified to produce E-VALIDATOR-CIRCULAR-DEP.

<program title="p">
    <signup>
        <email req eq(@signup.email)> = <input type="email"/>
    </>
    <errors of=@signup.email/>
</>

How to fix

  1. Break the self-reference. A field's own validator should constrain its value, not compare it to itself; the self-reference is usually a typo for a sibling field.
  2. Make the dependency one-directional. For a confirm-password pair, only the confirmation field references the original — not both.

Related

Specification

Normative text: §31.4, §53.6.1, §55.11, §55.15, §34. Spec lives at compiler/SPEC.md .

← Reference