Diagnostics · unsupported

unsupported[not-operator]

The text NOT appears outside a string, comment or source tag.

v1 has no negation. The bounds scan refuses the three letters NOT wherever they occur, including inside names such as CANNOT_MERGE or ANNOTATION: use lower-case names for those. Write the opposite comparison instead (see Patterns).

Example

Through compileSource
CONTRACT Claim {
  ENFORCEMENT_MODE: enforced
  CONTEXT {
    ENTITIES Request {
      count: int
      region: string
      ready: bool
      ratio: float
    }
    CONSTANTS {
      zero: int == 0 [SOURCE:POLICY]
      cap: int == 25 [SOURCE:POLICY]
    }
  }
  TRIGGER {
    grant()
  }
  GUARANTEE {
    ENSURE grant() WHEN Request.ready == true [SOURCE:must_be_ready]
  }
  PROHIBITION {
    FORBID grant WHEN NOT Request.ready == true [SOURCE:not_ready]
  }
}

rejected unsupported[not-operator] at 22:23 NOT is refused before recursive parsing

Fix

Through compileSource
CONTRACT Claim {
  ENFORCEMENT_MODE: enforced
  CONTEXT {
    ENTITIES Request {
      count: int
      region: string
      ready: bool
      ratio: float
    }
    CONSTANTS {
      zero: int == 0 [SOURCE:POLICY]
      cap: int == 25 [SOURCE:POLICY]
    }
  }
  TRIGGER {
    grant()
  }
  GUARANTEE {
    ENSURE grant() WHEN Request.ready == true [SOURCE:must_be_ready]
  }
  PROHIBITION {
    FORBID grant WHEN Request.ready == false [SOURCE:not_ready]
  }
}

accepted

See also: the specification.