11.5. is_local_xxx ast helpers

The IS_LOCAL module provides compile-time checks for whether a variable is locally allocated (on the stack) versus heap-allocated. This enables writing generic code that optimizes differently based on allocation strategy.

All functions and symbols are in “is_local” module, use require to get access to it.

require daslib/is_local

11.5.1. Scope checks

is_local::is_local_expr(expr: ExpressionPtr) : bool()

Returns true if the expression is local to the current scope.

Arguments
is_local::is_local_or_global_expr(expr: ExpressionPtr) : bool()

Returns true if expression is local to the current scope or global scope.

Arguments
is_local::is_scope_expr(expr: ExpressionPtr) : bool()

Returns true if the expression is a scoped expression, i.e. eventually points to a variable.

Arguments
is_local::is_shared_expr(expr: ExpressionPtr) : bool()

Returns true if the expression refers to a global shared variable.

Arguments
is_local::is_temp_safe(expr: ExpressionPtr) : bool()

Returns true if the expression had no calls, [] or table [] operators of any kind. This is used to check expression can be safely casted to temp type.

Arguments