Sha256: 9066f3544fc9ab27ff0f36a4d94a5688edfefbf21f33203d09f622ce469a7468

Contents?: true

Size: 743 Bytes

Versions: 4

Compression:

Stored size: 743 Bytes

Contents

require 'securerandom'

module Yoda
  module Typing
    module Types
      class Var < Base
        def initialize(label = nil, ref = nil)
          @id = SecureRandom.alphanumeric(20)
          @label = label
          @ref = ref
        end

        # @param new_ref [Base]
        def ref=(new_ref)
          return if new_ref == self
          @ref = new_ref
        end

        def reference?
          true
        end

        # @return [Base, nil]
        def ref
          @ref&.ref
        end

        def to_expression
          ref&.to_expression || Store::TypeExpressions::UnknownType.new
        end

        def to_type_string
          ref ? ref.to_type_string : "var(#{label}:#{id})"
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/typing/types/var.rb
yoda-language-server-0.10.0 lib/yoda/typing/types/var.rb
yoda-language-server-0.9.0 lib/yoda/typing/types/var.rb
yoda-language-server-0.8.0 lib/yoda/typing/types/var.rb