Class: RubyLsp::Ree::MissingErrorContractsFormatter

Inherits:
BaseFormatter
  • Object
show all
Defined in:
lib/ruby_lsp/ruby_lsp_ree/formatters/missing_error_contracts_formatter.rb

Instance Method Summary collapse

Methods inherited from BaseFormatter

call, #initialize

Constructor Details

This class inherits a constructor from RubyLsp::Ree::BaseFormatter

Instance Method Details

#call(source, _uri) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ruby_lsp/ruby_lsp_ree/formatters/missing_error_contracts_formatter.rb', line 6

def call(source, _uri)
  parsed_doc = RubyLsp::Ree::ParsedDocumentBuilder.build_from_source(source)
  return source if !parsed_doc || !parsed_doc.has_root_class?

  parsed_doc.parse_error_definitions
  parsed_doc.parse_instance_methods

  parsed_doc.doc_instance_methods.select(&:has_contract?).each do |doc_instance_method|
    doc_instance_method.parse_nested_local_methods(parsed_doc.doc_instance_methods)

    raised_errors = doc_instance_method.raised_errors_nested
    throws_errors = doc_instance_method.throws_errors

    missed_errors = raised_errors - throws_errors
    source = add_missed_errors(source, doc_instance_method, missed_errors)
  end

  source
end