Module: Solargraph

Defined in:
lib/solargraph.rb,
lib/solargraph/pin.rb,
lib/solargraph/page.rb,
lib/solargraph/bench.rb,
lib/solargraph/range.rb,
lib/solargraph/shell.rb,
lib/solargraph/parser.rb,
lib/solargraph/source.rb,
lib/solargraph/yardoc.rb,
lib/solargraph/api_map.rb,
lib/solargraph/doc_map.rb,
lib/solargraph/environ.rb,
lib/solargraph/library.rb,
lib/solargraph/logging.rb,
lib/solargraph/rbs_map.rb,
lib/solargraph/version.rb,
lib/solargraph/equality.rb,
lib/solargraph/gem_pins.rb,
lib/solargraph/location.rb,
lib/solargraph/pin/base.rb,
lib/solargraph/position.rb,
lib/solargraph/yard_map.rb,
lib/solargraph/pin/block.rb,
lib/solargraph/pin/until.rb,
lib/solargraph/pin/while.rb,
lib/solargraph/pin_cache.rb,
lib/solargraph/workspace.rb,
lib/solargraph/yard_tags.rb,
lib/solargraph/convention.rb,
lib/solargraph/pin/common.rb,
lib/solargraph/pin/method.rb,
lib/solargraph/pin/search.rb,
lib/solargraph/pin/symbol.rb,
lib/solargraph/source_map.rb,
lib/solargraph/diagnostics.rb,
lib/solargraph/pin/closure.rb,
lib/solargraph/pin/keyword.rb,
lib/solargraph/complex_type.rb,
lib/solargraph/pin/callable.rb,
lib/solargraph/pin/constant.rb,
lib/solargraph/source/chain.rb,
lib/solargraph/type_checker.rb,
lib/solargraph/api_map/cache.rb,
lib/solargraph/api_map/index.rb,
lib/solargraph/api_map/store.rb,
lib/solargraph/parser/region.rb,
lib/solargraph/pin/breakable.rb,
lib/solargraph/pin/namespace.rb,
lib/solargraph/pin/parameter.rb,
lib/solargraph/pin/reference.rb,
lib/solargraph/pin/signature.rb,
lib/solargraph/pin/singleton.rb,
lib/solargraph/source/change.rb,
lib/solargraph/source/cursor.rb,
lib/solargraph/parser/snippet.rb,
lib/solargraph/pin/proxy_type.rb,
lib/solargraph/server_methods.rb,
lib/solargraph/source/updater.rb,
lib/solargraph/yard_map/cache.rb,
lib/solargraph/convention/base.rb,
lib/solargraph/language_server.rb,
lib/solargraph/pin/conversions.rb,
lib/solargraph/pin/documenting.rb,
lib/solargraph/pin/duck_method.rb,
lib/solargraph/source/chain/if.rb,
lib/solargraph/source/chain/or.rb,
lib/solargraph/source_map/clip.rb,
lib/solargraph/source_map/data.rb,
lib/solargraph/yard_map/mapper.rb,
lib/solargraph/diagnostics/base.rb,
lib/solargraph/pin/method_alias.rb,
lib/solargraph/rbs_map/core_map.rb,
lib/solargraph/workspace/config.rb,
lib/solargraph/yard_map/helpers.rb,
lib/solargraph/api_map/constants.rb,
lib/solargraph/parser/parser_gem.rb,
lib/solargraph/pin/base_variable.rb,
lib/solargraph/pin/keyword_param.rb,
lib/solargraph/source/chain/call.rb,
lib/solargraph/source/chain/hash.rb,
lib/solargraph/source/chain/head.rb,
lib/solargraph/source/chain/link.rb,
lib/solargraph/source_map/mapper.rb,
lib/solargraph/convention/gemfile.rb,
lib/solargraph/convention/gemspec.rb,
lib/solargraph/pin/class_variable.rb,
lib/solargraph/pin/local_variable.rb,
lib/solargraph/rbs_map/core_fills.rb,
lib/solargraph/rbs_map/stdlib_map.rb,
lib/solargraph/source/chain/array.rb,
lib/solargraph/type_checker/rules.rb,
lib/solargraph/workspace/gemspecs.rb,
lib/solargraph/convention/rakefile.rb,
lib/solargraph/diagnostics/rubocop.rb,
lib/solargraph/pin/global_variable.rb,
lib/solargraph/rbs_map/conversions.rb,
lib/solargraph/source/chain/q_call.rb,
lib/solargraph/language_server/host.rb,
lib/solargraph/pin/delegated_method.rb,
lib/solargraph/pin/reference/extend.rb,
lib/solargraph/source/chain/literal.rb,
lib/solargraph/source/chain/z_super.rb,
lib/solargraph/type_checker/problem.rb,
lib/solargraph/parser/comment_ripper.rb,
lib/solargraph/parser/node_processor.rb,
lib/solargraph/pin/instance_variable.rb,
lib/solargraph/pin/reference/include.rb,
lib/solargraph/pin/reference/prepend.rb,
lib/solargraph/pin/reference/require.rb,
lib/solargraph/source/chain/constant.rb,
lib/solargraph/source/chain/variable.rb,
lib/solargraph/source/encoding_fixes.rb,
lib/solargraph/source/source_chainer.rb,
lib/solargraph/source_map/completion.rb,
lib/solargraph/api_map/source_to_yard.rb,
lib/solargraph/diagnostics/severities.rb,
lib/solargraph/diagnostics/type_check.rb,
lib/solargraph/pin/compound_statement.rb,
lib/solargraph/pin/reference/override.rb,
lib/solargraph/language_server/message.rb,
lib/solargraph/language_server/request.rb,
lib/solargraph/workspace/require_paths.rb,
lib/solargraph/complex_type/conformance.rb,
lib/solargraph/complex_type/unique_type.rb,
lib/solargraph/language_server/progress.rb,
lib/solargraph/pin/reference/superclass.rb,
lib/solargraph/pin/reference/type_alias.rb,
lib/solargraph/complex_type/type_methods.rb,
lib/solargraph/diagnostics/update_errors.rb,
lib/solargraph/language_server/transport.rb,
lib/solargraph/source/chain/block_symbol.rb,
lib/solargraph/yard_map/mapper/to_method.rb,
lib/solargraph/convention/data_definition.rb,
lib/solargraph/parser/node_processor/base.rb,
lib/solargraph/diagnostics/rubocop_helpers.rb,
lib/solargraph/language_server/error_codes.rb,
lib/solargraph/language_server/uri_helpers.rb,
lib/solargraph/source/chain/block_variable.rb,
lib/solargraph/source/chain/class_variable.rb,
lib/solargraph/yard_map/mapper/to_constant.rb,
lib/solargraph/convention/struct_definition.rb,
lib/solargraph/language_server/host/sources.rb,
lib/solargraph/language_server/message/base.rb,
lib/solargraph/language_server/symbol_kinds.rb,
lib/solargraph/parser/flow_sensitive_typing.rb,
lib/solargraph/source/chain/global_variable.rb,
lib/solargraph/yard_map/mapper/to_namespace.rb,
lib/solargraph/diagnostics/require_not_found.rb,
lib/solargraph/language_server/host/dispatch.rb,
lib/solargraph/language_server/message_types.rb,
lib/solargraph/language_server/host/diagnoser.rb,
lib/solargraph/language_server/message/client.rb,
lib/solargraph/parser/parser_gem/node_chainer.rb,
lib/solargraph/parser/parser_gem/node_methods.rb,
lib/solargraph/source/chain/instance_variable.rb,
lib/solargraph/parser/parser_gem/class_methods.rb,
lib/solargraph/language_server/message/extended.rb,
lib/solargraph/language_server/message/shutdown.rb,
lib/solargraph/parser/parser_gem/flawed_builder.rb,
lib/solargraph/convention/active_support_concern.rb,
lib/solargraph/language_server/message/workspace.rb,
lib/solargraph/language_server/transport/adapter.rb,
lib/solargraph/parser/parser_gem/node_processors.rb,
lib/solargraph/language_server/message/initialize.rb,
lib/solargraph/language_server/host/message_worker.rb,
lib/solargraph/language_server/message/initialized.rb,
lib/solargraph/language_server/completion_item_kinds.rb,
lib/solargraph/language_server/message/text_document.rb,
lib/solargraph/language_server/transport/data_reader.rb,
lib/solargraph/language_server/message/cancel_request.rb,
lib/solargraph/language_server/message/completion_item.rb,
lib/solargraph/language_server/message/extended/search.rb,
lib/solargraph/language_server/message/method_not_found.rb,
lib/solargraph/language_server/message/exit_notification.rb,
lib/solargraph/language_server/message/extended/document.rb,
lib/solargraph/parser/parser_gem/node_processors/if_node.rb,
lib/solargraph/parser/parser_gem/node_processors/or_node.rb,
lib/solargraph/language_server/message/text_document/base.rb,
lib/solargraph/parser/parser_gem/node_processors/and_node.rb,
lib/solargraph/parser/parser_gem/node_processors/def_node.rb,
lib/solargraph/parser/parser_gem/node_processors/sym_node.rb,
lib/solargraph/language_server/message/text_document/hover.rb,
lib/solargraph/parser/parser_gem/node_processors/args_node.rb,
lib/solargraph/parser/parser_gem/node_processors/defs_node.rb,
lib/solargraph/parser/parser_gem/node_processors/send_node.rb,
lib/solargraph/parser/parser_gem/node_processors/when_node.rb,
lib/solargraph/language_server/message/extended/environment.rb,
lib/solargraph/language_server/message/text_document/rename.rb,
lib/solargraph/parser/parser_gem/node_processors/alias_node.rb,
lib/solargraph/parser/parser_gem/node_processors/begin_node.rb,
lib/solargraph/parser/parser_gem/node_processors/block_node.rb,
lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/until_node.rb,
lib/solargraph/parser/parser_gem/node_processors/while_node.rb,
lib/solargraph/parser/parser_gem/node_processors/cvasgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb,
lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb,
lib/solargraph/language_server/message/extended/document_gems.rb,
lib/solargraph/language_server/message/extended/download_core.rb,
lib/solargraph/language_server/message/method_not_implemented.rb,
lib/solargraph/language_server/message/text_document/did_open.rb,
lib/solargraph/language_server/message/text_document/did_save.rb,
lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb,
lib/solargraph/convention/data_definition/data_assignment_node.rb,
lib/solargraph/convention/data_definition/data_definition_node.rb,
lib/solargraph/language_server/message/completion_item/resolve.rb,
lib/solargraph/language_server/message/text_document/did_close.rb,
lib/solargraph/language_server/message/text_document/completion.rb,
lib/solargraph/language_server/message/text_document/definition.rb,
lib/solargraph/language_server/message/text_document/did_change.rb,
lib/solargraph/language_server/message/text_document/formatting.rb,
lib/solargraph/language_server/message/text_document/references.rb,
lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb,
lib/solargraph/language_server/message/text_document/code_action.rb,
lib/solargraph/language_server/message/client/register_capability.rb,
lib/solargraph/language_server/message/extended/check_gem_version.rb,
lib/solargraph/language_server/message/workspace/workspace_symbol.rb,
lib/solargraph/convention/struct_definition/struct_assignment_node.rb,
lib/solargraph/convention/struct_definition/struct_definition_node.rb,
lib/solargraph/language_server/message/text_document/folding_range.rb,
lib/solargraph/language_server/message/text_document/prepare_rename.rb,
lib/solargraph/language_server/message/text_document/signature_help.rb,
lib/solargraph/language_server/message/text_document/document_symbol.rb,
lib/solargraph/language_server/message/text_document/type_definition.rb,
lib/solargraph/language_server/message/text_document/document_highlight.rb,
lib/solargraph/language_server/message/text_document/on_type_formatting.rb,
lib/solargraph/language_server/message/workspace/did_change_configuration.rb,
lib/solargraph/language_server/message/workspace/did_change_watched_files.rb,
lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb

Overview

Defined Under Namespace

Modules: Convention, Diagnostics, Equality, GemPins, LanguageServer, Logging, Parser, Pin, PinCache, ServerMethods, Yardoc Classes: ApiMap, Bench, BundleNotFoundError, ComplexType, ComplexTypeError, DiagnosticsError, DocMap, DomainDirective, Environ, FileNotFoundError, InvalidOffsetError, InvalidRubocopVersionError, Library, Location, Page, Position, Range, RbsMap, Shell, Source, SourceMap, SourceNotAvailableError, TypeChecker, Workspace, WorkspaceTooLargeError, YardMap

Constant Summary collapse

VIEWS_PATH =
File.join(dir, 'solargraph', 'views')
CHDIR_MUTEX =
Mutex.new
VERSION =
ENV.fetch('SOLARGRAPH_FORCE_VERSION', '0.59.0')

Class Method Summary collapse

Class Method Details

.assert_or_log(type, msg = nil, &block) ⇒ void

This method returns an undefined value.

Parameters:

  • type (Symbol)

    The type of assertion to perform.

  • msg (String, nil) (defaults to: nil)

    An optional message to log

  • block (Proc)

    A block that returns a message to log



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/solargraph.rb', line 74

def self.assert_or_log type, msg = nil, &block
  if asserts_on?
    # @type [String, nil]
    msg ||= block.call

    raise "No message given for #{type.inspect}" if msg.nil?

    # conditional aliases to handle compatibility corner cases
    # @sg-ignore flow sensitive typing needs to handle 'raise if'
    return if type == :alias_target_missing && msg.include?('highline/compatibility.rb')
    # @sg-ignore flow sensitive typing needs to handle 'raise if'
    return if type == :alias_target_missing && msg.include?('lib/json/add/date.rb')
    # @sg-ignore flow sensitive typing needs to handle 'raise if'
    return if type == :alias_target_missing && msg.include?('rubocop-ast.rbs')
    # @todo :combine_with_visibility is not ready for prime time -
    #  lots of disagreements found in practice that heuristics need
    #  to be created for and/or debugging needs to resolve in pin
    #  generation.
    # @todo :api_map_namespace_pin_stack triggers in a badly handled
    #   self type case - 'keeps track of self type in method
    #   parameters in subclass' in call_spec.rb
    return if %i[api_map_namespace_pin_stack combine_with_visibility].include?(type)

    raise msg
  end
  logger.info msg, &block
end

.asserts_on?Boolean

Returns:

  • (Boolean)


58
59
60
61
62
63
64
65
66
67
68
# File 'lib/solargraph.rb', line 58

def self.asserts_on?
  # @sg-ignore Translate to something flow sensitive typing understands
  if ENV['SOLARGRAPH_ASSERTS'].nil? || ENV['SOLARGRAPH_ASSERTS'].empty?
    false
  elsif ENV['SOLARGRAPH_ASSERTS'] == 'on'
    true
  else
    logger.warn "Unrecognized SOLARGRAPH_ASSERTS value: #{ENV['SOLARGRAPH_ASSERTS']}"
    false
  end
end

.loggerLogger

A convenience method for Solargraph::Logging.logger.

Returns:

  • (Logger)


105
106
107
# File 'lib/solargraph.rb', line 105

def self.logger
  Solargraph::Logging.logger
end

.with_clean_env(&block) ⇒ generic<T>

A helper method that runs Bundler.with_unbundled_env or falls back to Bundler.with_clean_env for earlier versions of Bundler.

@sg-ignore dynamic call, but both functions behave the same

Yield Returns:

  • (generic<T>)

Returns:

  • (generic<T>)


116
117
118
119
120
121
122
123
# File 'lib/solargraph.rb', line 116

def self.with_clean_env &block
  meth = if Bundler.respond_to?(:with_original_env)
           :with_original_env
         else
           :with_clean_env
         end
  Bundler.send meth, &block
end