Class: Ibex::Runtime::SyntaxSessionResult

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

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.

RBS:

  • (revision: Integer, syntax_root: CST::SyntaxNode, diagnostics: Array[SyntaxSessionDiagnostic], expected_tokens: Array[String], metrics: SyntaxSessionMetrics, status: Symbol) -> void

Parameters:



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

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

#diagnosticsArray[SyntaxSessionDiagnostic] (readonly)

Signature:

  • Array[SyntaxSessionDiagnostic]

Returns:



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

def diagnostics
  @diagnostics
end

#expected_tokensArray[String] (readonly)

Signature:

  • Array[String]

Returns:

  • (Array[String])


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

def expected_tokens
  @expected_tokens
end

#metricsSyntaxSessionMetrics (readonly)

Signature:

  • SyntaxSessionMetrics

Returns:



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

def metrics
  @metrics
end

#revisionInteger (readonly)

Signature:

  • Integer

Returns:

  • (Integer)


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

def revision
  @revision
end

#statusSymbol (readonly)

Signature:

  • Symbol

Returns:

  • (Symbol)


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

def status
  @status
end

#syntax_rootCST::SyntaxNode (readonly)

Signature:

  • CST::SyntaxNode

Returns:



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

def syntax_root
  @syntax_root
end

Instance Method Details

#success?Boolean

RBS:

  • () -> bool

Returns:

  • (Boolean)


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

def success?
  @status == :ok
end