Class: Rigor::Type::Singleton

Inherits:
Object
  • Object
show all
Includes:
AcceptanceRouter, ValueSemantics
Defined in:
lib/rigor/type/singleton.rb

Overview

The singleton type for a Ruby class or module. Inhabitants are the class object itself (e.g. the constant ‘Foo`), not its instances. In RBS this corresponds to `singleton(Foo)`.

Singleton` and `Nominal` share the same `class_name` but are NEVER equal; they describe disjoint values (the class object vs. instances of the class).

See docs/type-specification/rbs-compatible-types.md (singleton(T)).

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ValueSemantics

included

Methods included from AcceptanceRouter

#accepts

Constructor Details

#initialize(class_name) ⇒ Singleton

Returns a new instance of Singleton.

Raises:

  • (ArgumentError)


21
22
23
24
25
26
27
# File 'lib/rigor/type/singleton.rb', line 21

def initialize(class_name)
  raise ArgumentError, "class_name must be a String, got #{class_name.class}" unless class_name.is_a?(String)
  raise ArgumentError, "class_name must not be empty" if class_name.empty?

  @class_name = class_name.freeze
  freeze
end

Instance Attribute Details

#class_nameObject (readonly)

Returns the value of attribute class_name.



19
20
21
# File 'lib/rigor/type/singleton.rb', line 19

def class_name
  @class_name
end

Instance Method Details

#botObject



41
42
43
# File 'lib/rigor/type/singleton.rb', line 41

def bot
  Trinary.no
end

#describe(_verbosity = :short) ⇒ Object



29
30
31
# File 'lib/rigor/type/singleton.rb', line 29

def describe(_verbosity = :short)
  "singleton(#{class_name})"
end

#dynamicObject



45
46
47
# File 'lib/rigor/type/singleton.rb', line 45

def dynamic
  Trinary.no
end

#erase_to_rbsObject



33
34
35
# File 'lib/rigor/type/singleton.rb', line 33

def erase_to_rbs
  "singleton(#{class_name})"
end

#inspectObject



55
56
57
# File 'lib/rigor/type/singleton.rb', line 55

def inspect
  "#<Rigor::Type::Singleton #{class_name}>"
end

#topObject



37
38
39
# File 'lib/rigor/type/singleton.rb', line 37

def top
  Trinary.no
end