Class: Ibex::Runtime::SyntaxSessionResult

Inherits:
Object
  • Object
show all
Defined in:
lib/ibex/runtime/syntax_session.rb

Overview

Immutable public snapshot of one completed syntax-session operation.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(revision:, syntax_root:, diagnostics:, expected_tokens:, metrics:, status:) ⇒ SyntaxSessionResult

Returns a new instance of SyntaxSessionResult.

Raises:

  • (ArgumentError)


176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/ibex/runtime/syntax_session.rb', line 176

def initialize(revision:, syntax_root:, diagnostics:, expected_tokens:, metrics:, status:)
  raise ArgumentError, "revision must be a nonnegative Integer" unless revision.is_a?(Integer) && revision >= 0
  unless diagnostics.is_a?(Array) && diagnostics.all?(SyntaxSessionDiagnostic)
    raise ArgumentError, "diagnostics must contain only SyntaxSessionDiagnostic values"
  end
  unless expected_tokens.is_a?(Array) && expected_tokens.all?(String)
    raise ArgumentError, "expected_tokens must contain only Strings"
  end
  unless metrics.is_a?(SyntaxSessionMetrics)
    raise ArgumentError, "metrics must be an Ibex::Runtime::SyntaxSessionMetrics"
  end
  raise ArgumentError, "status must be :ok or :syntax_error" unless %i[ok syntax_error].include?(status)

  @revision = revision
  @syntax_root = syntax_root
  @diagnostics = diagnostics.dup.freeze
  @expected_tokens = expected_tokens.map { |token| token.dup.freeze }.freeze
  @metrics = metrics
  @status = status
  freeze
end

Instance Attribute Details

#diagnosticsObject (readonly)

: Array



169
170
171
# File 'lib/ibex/runtime/syntax_session.rb', line 169

def diagnostics
  @diagnostics
end

#expected_tokensObject (readonly)

: Array



170
171
172
# File 'lib/ibex/runtime/syntax_session.rb', line 170

def expected_tokens
  @expected_tokens
end

#metricsObject (readonly)

: SyntaxSessionMetrics



171
172
173
# File 'lib/ibex/runtime/syntax_session.rb', line 171

def metrics
  @metrics
end

#revisionObject (readonly)

: Integer



167
168
169
# File 'lib/ibex/runtime/syntax_session.rb', line 167

def revision
  @revision
end

#statusObject (readonly)

: Symbol



172
173
174
# File 'lib/ibex/runtime/syntax_session.rb', line 172

def status
  @status
end

#syntax_rootObject (readonly)

: CST::SyntaxNode



168
169
170
# File 'lib/ibex/runtime/syntax_session.rb', line 168

def syntax_root
  @syntax_root
end

Instance Method Details

#success?Boolean

Returns:

  • (Boolean)


199
200
201
# File 'lib/ibex/runtime/syntax_session.rb', line 199

def success?
  @status == :ok
end