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
expr : ExpressionPtr
- is_local::is_local_or_global_expr(expr: ExpressionPtr) : bool()
Returns true if expression is local to the current scope or global scope.
- Arguments
expr : ExpressionPtr
- 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
expr : ExpressionPtr
Returns true if the expression refers to a global shared variable.
- Arguments
expr : ExpressionPtr
- 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
expr : ExpressionPtr