Module: Solargraph::RbsMap::CoreFills

Defined in:
lib/solargraph/rbs_map/core_fills.rb

Overview

Override pins to fill gaps in RbsMap::CoreMap coverage

Constant Summary collapse

Override =
Pin::Reference::Override
KEYWORDS =
[
  '__ENCODING__', '__LINE__', '__FILE__', 'BEGIN', 'END', 'alias', 'and',
  'begin', 'break', 'case', 'class', 'def', 'defined?', 'do', 'else',
  'elsif', 'end', 'ensure', 'false', 'for', 'if', 'in', 'module', 'next',
  'nil', 'not', 'or', 'redo', 'rescue', 'retry', 'return', 'self', 'super',
  'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
].map { |k| Pin::Keyword.new(k, source: :core_fill) }
MISSING =
[
  Solargraph::Pin::Method.new(name: 'class', scope: :instance,
                              closure: Solargraph::Pin::Namespace.new(name: 'Object', source: :core_fill), comments: '@return [::Class<self>]',
                              source: :core_fill)
]
OVERRIDES =
[
  Override.from_comment('BasicObject#instance_eval', '@yieldreceiver [self]',
                        source: :core_fill),
  Override.from_comment('BasicObject#instance_exec', '@yieldreceiver [self]',
                        source: :core_fill),
  Override.from_comment('Module#define_method', '@yieldreceiver [::Object<self>]',
                        source: :core_fill),
  Override.from_comment('Module#class_eval', '@yieldreceiver [::Class<self>]',
                        source: :core_fill),
  Override.from_comment('Module#class_exec', '@yieldreceiver [::Class<self>]',
                        source: :core_fill),
  Override.from_comment('Module#module_eval', '@yieldreceiver [::Module<self>]',
                        source: :core_fill),
  Override.from_comment('Module#module_exec', '@yieldreceiver [::Module<self>]',
                        source: :core_fill),
  # RBS does not define Class with a generic, so all calls to
  # generic() return an 'untyped'.  We can do better:
  Override.method_return('Class#allocate', 'self', source: :core_fill),
]
INCLUDES =
[
  Solargraph::Pin::Reference::Include.new(name: '_ToAry',
                                          closure: Solargraph::Pin::Namespace.new(name: 'Array', source: :core_fill),
                                          generic_values: ['generic<Elem>'],
                                          source: :core_fill)
]
ERRNOS =
errnos
ALL =
KEYWORDS + MISSING + OVERRIDES + ERRNOS + INCLUDES