# `Expresso.VerifierTransformer`
[🔗](https://github.com/rellen/expresso/blob/main/lib/expresso/verifier_transformer.ex#L1)

The Spark transformer that runs the checks that give only errors

It runs one time for each deck module at compile time, after the other
transformers. It calls `verify/1` of each module of `checks/0`, and an error
stops the compile. More than one error gives one `Spark.Error.DslError` with
the message of each error.

The checks change nothing. They run in a transformer and not as verifiers,
because Spark raises an error from a transformer, and the compile stops.
Spark runs a verifier in an `@after_verify` callback, and it reports the
error of a verifier as a warning. `Expresso.PlacementTransformer` gives the
same reason. The checks that give only warnings stay verifiers of
`Expresso.Extension`.

# `after?`

```elixir
@spec after?(module()) :: boolean()
```

Run this transformer after each other transformer

The checks read the steps and the names of the style sheet, which the other
transformers write.

# `after_compile?`

# `before?`

# `checks`

```elixir
@spec checks() :: [module()]
```

Return the modules of the checks that this transformer runs

    iex> Expresso.Overlay.EffectVerifier in Expresso.VerifierTransformer.checks()
    true

# `transform`

```elixir
@spec transform(map()) :: {:ok, map()} | {:error, Spark.Error.DslError.t()}
```

Run each check on the state of the DSL, and return an error for each error of a check

---

*Consult [api-reference.md](api-reference.md) for complete listing*
