pub type pm_scope_t = pm_scope;Expand description
This struct represents a node in a linked list of scopes. Some scopes can see into their parent scopes, while others cannot.
Aliased Type§
#[repr(C)]pub struct pm_scope_t {
pub previous: *mut pm_scope,
pub locals: pm_locals,
pub implicit_parameters: pm_node_list,
pub parameters: u8,
pub shareable_constant: u8,
pub closed: bool,
}Fields§
§previous: *mut pm_scopeA pointer to the previous scope in the linked list.
locals: pm_localsThe IDs of the locals in the given scope.
implicit_parameters: pm_node_listThis is a list of the implicit parameters contained within the block. These will be processed after the block is parsed to determine the kind of parameters node that should be used and to check if any errors need to be added.
parameters: u8This is a bitfield that indicates the parameters that are being used in this scope. It is a combination of the PM_SCOPE_PARAMETERS_* constants. There are three different kinds of parameters that can be used in a scope:
- Ordinary parameters (e.g., def foo(bar); end)
- Numbered parameters (e.g., def foo; _1; end)
- The it parameter (e.g., def foo; it; end)
If ordinary parameters are being used, then certain parameters can be forwarded to another method/structure. Those are indicated by four additional bits in the params field. For example, some combinations of:
- def foo(*); end
- def foo(**); end
- def foo(&); end
- def foo(…); end
The current state of constant shareability for this scope. This is changed by magic shareable_constant_value comments.
closed: boolA boolean indicating whether or not this scope can see into its parent. If closed is true, then the scope cannot see into its parent.