Sha256: 7e9623232694816a99f1c5fdcefab0b86752c6f79d5665549236e1781886aef6

Contents?: true

Size: 696 Bytes

Versions: 2

Compression:

Stored size: 696 Bytes

Contents

module Yoda
  module Typing
    module Tree
      class Case < Base
        # @return [[Store::Types::Base, Environment]]
        def infer_case_node
          # TODO
          Types::Union.new([*when_body_nodes, else_node].map { |node| infer(node) })
        end

        def children
          @children ||= [subject, *when_branches, else_branch]
        end

        def subject
          @subject ||= build_child(node.children.first)
        end

        def when_branches
          @when_branches ||= node.children.slice(1, -2).map(&method(:build_child))
        end

        def else_branch
          @else_branch ||= build_child(node.children.last)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yoda-language-server-0.9.0 lib/yoda/typing/tree/case.rb
yoda-language-server-0.8.0 lib/yoda/typing/tree/case.rb