Search documentation of stdlib

# erl_id_trans (stdlib v8.0.2)

Copy Markdown View Source

This module performs an identity parse transformation of Erlang code.

It is included as an example for users who wants to write their own parse transformers. If option `{parse_transform,Module}` is passed to the compiler, a user-written function `parse_transform/2` is called by the compiler before the code is checked for errors.

Before the function `parse_transform/2` is called, the Erlang Compiler checks if the parse transformation can handle abstract code with column numbers: If the function `parse_transform_info/0` is implemented and returns a map where the key `error_location` is associated with the value `line`, the compiler removes column numbers from the abstract code before calling the parse transform. Otherwise, the compiler passes the abstract code on without modification.

## Parse Transformations

Parse transformations are used if a programmer wants to use Erlang syntax, but with different semantics. The original Erlang code is then transformed into other Erlang code.

#### Note

Programmers are strongly advised not to engage in parse transformations. No support is offered for problems encountered.

## See Also

`erl_parse` and `compile`.

## Summary

### Functions

parse_transform(Forms, Options)

Performs an identity transformation on Erlang forms, as an example.

parse_transform_info()

Returns information about the parse transform itself.

## Functions

# parse_transform(Forms, Options)

    -spec parse_transform(Forms, Options) -> NewForms
                             when
                                 Forms :: [erl_parse:abstract_form() | erl_parse:form_info()],
                                 NewForms :: Forms,
                                 Options :: [compile:option()].

Performs an identity transformation on Erlang forms, as an example.

# parse_transform_info()

(since OTP 24.0)

    -spec parse_transform_info() -> #{error_location => column | line}.

Returns information about the parse transform itself.