Sha256: 7f50870bcd03371d96732b6dddff85ce2ed23f0a14ac9d59863be1a540539c5c

Contents?: true

Size: 738 Bytes

Versions: 2

Compression:

Stored size: 738 Bytes

Contents

module TypeProf
  class Diagnostic
    def initialize(node, meth, msg)
      @node = node
      @meth = meth
      @msg = msg
      @severity = :error # TODO: keyword argument
      @tags = nil # TODO: keyword argument
    end

    def reuse(new_node)
      @node = new_node
    end

    attr_reader :msg, :severity

    def code_range
      @node.send(@meth)
    end

    SEVERITY = { error: 1, warning: 2, info: 3, hint: 4 }
    TAG = { unnecessary: 1, deprecated: 2 }

    def to_lsp
      json = {
        range: code_range.to_lsp,
        source: "TypeProf",
        message: @msg,
      }
      json[:severity] = SEVERITY[@severity] if @severity
      json[:tags] = @tags.map {|tag| TAG[tag] } if @tags
      json
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
typeprof-0.30.1 lib/typeprof/diagnostic.rb
typeprof-0.30.0 lib/typeprof/diagnostic.rb