Class: TRuby::TypeCheckError

Inherits:
Object
  • Object
show all
Defined in:
lib/t_ruby/type_checker.rb

Overview

Represents a type checking error

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message:, location: nil, expected: nil, actual: nil, suggestion: nil, severity: :error) ⇒ TypeCheckError



8
9
10
11
12
13
14
15
# File 'lib/t_ruby/type_checker.rb', line 8

def initialize(message:, location: nil, expected: nil, actual: nil, suggestion: nil, severity: :error)
  @message = message
  @location = location
  @expected = expected
  @actual = actual
  @suggestion = suggestion
  @severity = severity
end

Instance Attribute Details

#actualObject (readonly)

Returns the value of attribute actual.



6
7
8
# File 'lib/t_ruby/type_checker.rb', line 6

def actual
  @actual
end

#expectedObject (readonly)

Returns the value of attribute expected.



6
7
8
# File 'lib/t_ruby/type_checker.rb', line 6

def expected
  @expected
end

#locationObject (readonly)

Returns the value of attribute location.



6
7
8
# File 'lib/t_ruby/type_checker.rb', line 6

def location
  @location
end

#messageObject (readonly)

Returns the value of attribute message.



6
7
8
# File 'lib/t_ruby/type_checker.rb', line 6

def message
  @message
end

#severityObject (readonly)

Returns the value of attribute severity.



6
7
8
# File 'lib/t_ruby/type_checker.rb', line 6

def severity
  @severity
end

#suggestionObject (readonly)

Returns the value of attribute suggestion.



6
7
8
# File 'lib/t_ruby/type_checker.rb', line 6

def suggestion
  @suggestion
end

Instance Method Details

#to_diagnosticObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/t_ruby/type_checker.rb', line 26

def to_diagnostic
  {
    severity: @severity,
    message: @message,
    location: @location,
    expected: @expected,
    actual: @actual,
    suggestion: @suggestion,
  }
end

#to_sObject



17
18
19
20
21
22
23
24
# File 'lib/t_ruby/type_checker.rb', line 17

def to_s
  parts = [@message]
  parts << "  Expected: #{@expected}" if @expected
  parts << "  Actual: #{@actual}" if @actual
  parts << "  Suggestion: #{@suggestion}" if @suggestion
  parts << "  at #{@location}" if @location
  parts.join("\n")
end