const (object -- immutableView)
Inputs
object: Current stack object whose view may become immutable.
Outputs
immutableView: Resulting stack object in immutable view where valid.
const is a current stack object immutable-view conversion builtin. It converts the current stack object to an immutable view where valid.
For Ref inputs, only the current stack object changes. The referenced storage and any other references remain unchanged.
Behavior
- A mutable Ref input becomes the corresponding immutable Ref to the same target.
- An immutable Ref input is returned unchanged.
NAMEon a non-static, non-callable In-place local is valid because that form already produces an immutableRefview; see selection.- Code and Text inputs are returned unchanged, including callable non-
NILCode inputs. - Meta inputs are returned unchanged and still report
FALSEunderisConst. - In-place inputs are invalid.
Example
{} 0 {} [
value: 7;
codeLocal: {} () {} codeRef;
unknownText: 0 ("") dynamic @; # an unknown Text
[] !codeLocal # a non-NIL Code
"-- current Ref view only --" printCompilerMessage
@value printStack _:;
@value const printStack _:;
@value printStack _:;
value printStack _:;
value const printStack _:;
@value isConst printStack _:;
@value const isConst printStack _:;
value const isConst printStack _:;
"-- accepted non-Ref inputs are unchanged --" printCompilerMessage
"hi" const printStack _:;
unknownText const isConst printStack _:;
{} () {} codeRef const isConst printStack _:;
@codeLocal const isConst printStack _:;
() const isConst printStack _:;
0
] "main" exportFunction
Expected Output During Compilation
-- current Ref view only --
7 Ref
7 Cref
7 Ref
7 Cref
7 Cref
FALSE
TRUE
TRUE
-- accepted non-Ref inputs are unchanged --
"hi"
TRUE
TRUE
TRUE
FALSE
See also
fieldIsRefbuiltin(schema ordinal -- isRefLike)Ref-like test for one selected item schema.isConstbuiltin(object -- isConst)Current stack object immutability test.isRefbuiltin(object -- object isRefLike)Current stack object Ref-like predicate.managed?builtin(schema -- isManaged)Managed-lifetime schema test.unconstbuiltin(object -- mutableView)Mutable view conversion for the current stack object.