ExecutionContext class

Represents a single execution context in the context stack.

Each context tracks:

  • Working directory for relative path resolution
  • Source file being executed (null for interactive)
  • Session recording preference
  • Output suppression (silent mode)
  • Multiline mode and buffer (per-context to fix nesting bug)

Example context stack during nested replay:

1. cli.replay('setup.d4rt')
   └── Context: { cwd: '/project', file: 'setup.d4rt' }

2. setup.d4rt calls .load libs/common.d4rt
   └── Context: { cwd: '/project/libs', file: 'common.d4rt' }

3. common.d4rt completes → pop → restore cwd to '/project'
4. setup.d4rt completes → pop → restore original cwd

Constructors

ExecutionContext({required String workingDirectory, String? sourceFile, bool recordToSession = true, bool silent = false, ExecutionContext? parent})
Creates an execution context.

Properties

depth int
The depth of this context (0 for root).
no setter
hashCode int
The hash code for this object.
no setterinherited
isMultilineMode bool
Whether this context is in multiline mode.
no setter
isRoot bool
Whether this is the root (interactive) context.
no setter
multilineBuffer List<String>
Accumulated lines in multiline mode for this context.
final
multilineMode MultilineMode
Current multiline input mode for this context.
getter/setter pair
parent ExecutionContext?
The parent context in the stack.
final
recordToSession bool
Whether commands should be recorded to the active session.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
silent bool
Whether output is suppressed.
final
sourceFile String?
The source file being executed.
final
workingDirectory String
The working directory for this context.
final

Methods

addMultilineLine(String line) → void
Adds a line to the multiline buffer.
clearMultilineBuffer() → void
Clears the multiline buffer and resets mode to none.
getMultilineCode() String
Gets the accumulated multiline buffer as joined code.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
startMultilineMode(MultilineMode mode) → void
Starts multiline mode with the given type.
toString() String
A string representation of this object.
override

Operators

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