ContextStack class

Manages the execution context stack.

The context stack tracks nested execution contexts, allowing proper handling of:

  • Working directory during nested replay files
  • Per-context multiline state
  • Session recording control
  • Error unwinding

Example:

final stack = ContextStack('/home/user/.tom/d4rt');

// Interactive context is created automatically
print(stack.cwd); // '/home/user/.tom/d4rt'

// Push context for file execution
stack.push(ExecutionContext(
  workingDirectory: '/project',
  sourceFile: 'setup.d4rt',
  recordToSession: false,
));

print(stack.depth); // 1
print(stack.cwd);   // '/project'

// Pop after execution
stack.pop();
print(stack.cwd);   // '/home/user/.tom/d4rt'

Constructors

ContextStack(String initialWorkingDirectory)
Creates a context stack with the given initial working directory.

Properties

current ExecutionContext
The current (top) execution context.
no setter
cwd String
Current working directory (from current context).
no setter
depth int
Depth of nesting (0 = interactive root).
no setter
hashCode int
The hash code for this object.
no setterinherited
isMultilineMode bool
Whether currently in multiline mode (from current context).
no setter
isRoot bool
Whether at the root (interactive) context.
no setter
length int
Number of contexts in the stack.
no setter
multilineBuffer List<String>
Current multiline buffer (from current context).
no setter
multilineMode MultilineMode
Current multiline mode (from current context).
no setter
recordToSession bool
Whether to record to session (from current context).
no setter
root ExecutionContext
The root (interactive) context.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
silent bool
Whether output is currently suppressed (from current context).
no setter

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
pop() ExecutionContext
Pops the current context and returns to the parent.
popToRoot() → void
Pops all contexts above the root, returning to interactive mode.
push(ExecutionContext context) → void
Pushes a new execution context onto the stack.
toString() String
A string representation of this object.
override
updateWorkingDirectory(String newDirectory) → void
Updates the working directory of the current context.

Operators

operator ==(Object other) bool
The equality operator.
inherited

Constants

maxDepth → const int
Maximum nesting depth to prevent infinite recursion.