Module: Finitio::CollectionType

Included in:
SeqType, SetType
Defined in:
lib/finitio/type/collection_type.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#elm_typeObject (readonly)

Returns the value of attribute elm_type.



12
13
14
# File 'lib/finitio/type/collection_type.rb', line 12

def elm_type
  @elm_type
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



14
15
16
# File 'lib/finitio/type/collection_type.rb', line 14

def ==(other)
  super || (other.is_a?(self.class) && elm_type == other.elm_type)
end

#hashObject



19
20
21
# File 'lib/finitio/type/collection_type.rb', line 19

def hash
  self.class.hash ^ self.elm_type.hash
end

#initialize(elm_type, name = nil, metadata = nil) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/finitio/type/collection_type.rb', line 4

def initialize(elm_type, name = nil,  = nil)
  unless elm_type.is_a?(Type)
    raise ArgumentError, "Finitio::Type expected, got `#{elm_type}`"
  end

  super(name, )
  @elm_type = elm_type
end

#resolve_proxies(system) ⇒ Object



30
31
32
# File 'lib/finitio/type/collection_type.rb', line 30

def resolve_proxies(system)
  self.class.new(elm_type.resolve_proxies(system), name, )
end

#suppremum(other) ⇒ Object



23
24
25
26
27
28
# File 'lib/finitio/type/collection_type.rb', line 23

def suppremum(other)
  return super unless other.is_a?(CollectionType)
  return self if other.is_a?(CollectionType) && elm_type == other.elm_type
  builder = self.class == other.class ? self.class : SeqType
  builder.new(elm_type.suppremum(other.elm_type))
end

#unconstrainedObject



34
35
36
# File 'lib/finitio/type/collection_type.rb', line 34

def unconstrained
  self.class.new(elm_type.unconstrained, name, )
end