lib/rbs/environment.rb in rbs-2.2.2 vs lib/rbs/environment.rb in rbs-2.3.0

- old
+ new

@@ -7,23 +7,27 @@ attr_reader :alias_decls attr_reader :constant_decls attr_reader :global_decls module ContextUtil - def context - @context ||= begin - (outer + [decl]).each.with_object([Namespace.root]) do |decl, array| - first = array.first or raise - array.unshift(first + decl.name.to_namespace) - end - end + def calculate_context(decls) + decls.each.with_object([Namespace.root]) do |decl, array| + first = array.first or raise + array.unshift(first + decl.name.to_namespace) + end end end class MultiEntry D = _ = Struct.new(:decl, :outer, keyword_init: true) do + # @implements D[M] + include ContextUtil + + def context + @context ||= calculate_context(outer + [decl]) + end end attr_reader :name attr_reader :decls @@ -37,22 +41,20 @@ @primary = nil end def validate_type_params unless decls.empty? - # @type var hd_decl: MultiEntry::D[module_decl] - # @type var tl_decls: Array[MultiEntry::D[module_decl]] hd_decl, *tl_decls = decls raise unless hd_decl hd_params = hd_decl.decl.type_params tl_decls.each do |tl_decl| tl_params = tl_decl.decl.type_params unless compatible_params?(hd_params, tl_params) - raise GenericParameterMismatchError.new(name: name, decl: tl_decl.decl) + raise GenericParameterMismatchError.new(name: name, decl: _ = tl_decl.decl) end end end end @@ -84,29 +86,39 @@ decls.first or raise("decls cannot be empty") end end end + def foo + a = [1].sample() + return unless a + a + 1 + end + class ClassEntry < MultiEntry def primary @primary ||= begin validate_type_params decls.find {|d| d.decl.super_class } || decls.first or raise("decls cannot be empty") end end end class SingleEntry - include ContextUtil - attr_reader :name attr_reader :outer attr_reader :decl def initialize(name:, decl:, outer:) @name = name @decl = decl @outer = outer + end + + include ContextUtil + + def context + @context = calculate_context(outer) end end def initialize @buffers = []