# `Beaver.MLIR.Location`

This module defines functions working with MLIR Location.

# `env_like`

```elixir
@type env_like() :: %{
  optional(:file) =&gt; String.t() | nil,
  optional(:line) =&gt; integer() | nil
}
```

# `env_opts`

```elixir
@type env_opts() :: [column: integer() | nil, ctx: Beaver.Deferred.context_arg()]
```

# `file_opts`

```elixir
@type file_opts() :: [
  name: String.t(),
  line: integer(),
  column: integer() | nil,
  ctx: Beaver.Deferred.context_arg()
]
```

# `t`

```elixir
@type t() :: %Beaver.MLIR.Location{ref: term()}
```

# `file`

```elixir
@spec file(file_opts()) :: Beaver.Deferred.contextual(t())
```

Get a location of file line. Column is zero by default because in Elixir it is usually omitted.

## Examples
    iex> ctx = MLIR.Context.create()
    iex> MLIR.Location.file(name: "filename", line: 1, column: 1, ctx: ctx) |> MLIR.to_string()
    ~s{filename:1:1}
    iex> MLIR.Context.destroy(ctx)

# `from_env`

```elixir
@spec from_env(env_like(), env_opts()) :: Beaver.Deferred.contextual(t())
```

Create an MLIR location from `Macro.Env`

# `make`

# `unknown`

```elixir
@spec unknown(Beaver.Deferred.opts()) :: Beaver.Deferred.contextual(t())
```

