# `CEL.Expr.Ident`
[🔗](https://github.com/hansihe/pb_ex/blob/v0.2.0/cel_ex/lib/cel/expr.ex#L54)

A name, resolved by the checker.

`name` is the fully qualified name, after the container and abbreviations
are applied, so a select chain such as `pkg.Enum.VALUE` that names one
thing is a single `Ident`. `scope` says what it names:

  * `:var` — a variable declared in the `CEL.Env`.
  * `:local` — a variable a macro binds, such as `x` in `l.all(x, x > 0)`.
  * `:type` — a type, as in `type(x) == int` or `type(m) == pkg.Message`.
  * `:enum` — an enum value, such as `pkg.Enum.VALUE`.

# `t`

```elixir
@type t() :: %CEL.Expr.Ident{
  id: CEL.Checked.expr_id(),
  name: String.t(),
  scope: CEL.Expr.scope(),
  type: CEL.Expr.type()
}
```

---

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