Class: RubyLsp::Ree::MissingErrorDefinitionsFormatter

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

Constant Summary

Constants included from ReeLspUtils

ReeLspUtils::Entry

Instance Method Summary collapse

Methods included from ReeLspUtils

#camelize, #find_local_file_path, #get_range_for_fn_insert, #get_ree_type, #get_uri_path, #package_name_from_spec_uri, #package_name_from_uri, #package_path_from_uri, #parameter_name, #path_from_package_folder, #signature_params_from_node, #spec_relative_file_path_from_uri, #underscore

Methods inherited from BaseFormatter

call, #initialize

Constructor Details

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

Instance Method Details

#call(source, _uri) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/ruby_lsp/ruby_lsp_ree/formatters/missing_error_definitions_formatter.rb', line 8

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.parse_links
  parsed_doc.parse_defined_classes
  parsed_doc.parse_defined_consts

  existing_error_classes = parsed_doc.error_definition_names + 
    parsed_doc.imported_constants + 
    parsed_doc.defined_classes + 
    parsed_doc.defined_consts

  missed_errors = []
  parsed_doc.doc_instance_methods.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

    missed_errors += raised_errors - existing_error_classes
  end

  missed_errors = missed_errors.uniq.reject{ Object.const_defined?(_1) }

  add_missed_error_definitions(source, parsed_doc, missed_errors.uniq)
end