# `ExDoc.DocNode`
[🔗](https://github.com/elixir-lang/ex_doc/blob/v0.40.3/lib/ex_doc/nodes.ex#L52)

Represents a function, macro, callback, or type.

# `annotation`

```elixir
@type annotation() :: String.t()
```

# `function_default`

```elixir
@type function_default() :: {name :: atom(), arity :: non_neg_integer()}
```

# `spec_ast`

```elixir
@type spec_ast() :: term()
```

# `t`

```elixir
@type t() :: %ExDoc.DocNode{
  annotations: [annotation()],
  arity: non_neg_integer(),
  defaults: [function_default()],
  deprecated: String.t() | nil,
  doc: ExDoc.DocAST.t() | nil,
  doc_file: String.t(),
  doc_line: non_neg_integer(),
  group: String.t() | nil,
  id: String.t(),
  name: atom(),
  signature: String.t(),
  source_doc: term() | nil,
  source_specs: [spec_ast()],
  source_url: String.t() | nil,
  specs: [String.t()],
  type: atom()
}
```

---

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