107 lines
2.1 KiB
Ruby
Raw Normal View History

2020-10-10 14:16:11 +02:00
# typed: true
# frozen_string_literal: true
2021-01-16 11:49:01 -08:00
require "singleton"
2016-11-03 16:28:16 -07:00
class Version
2021-01-16 11:49:01 -08:00
# A pseudo-version representing the absence of a version.
#
# @api private
class NullVersion < Version
2020-10-20 12:03:48 +02:00
extend T::Sig
2016-11-03 16:28:16 -07:00
include Comparable
2021-01-16 11:49:01 -08:00
include Singleton
2016-11-03 16:28:16 -07:00
2021-01-16 11:49:01 -08:00
sig { override.params(_other: T.untyped).returns(Integer) }
2016-11-03 16:28:16 -07:00
def <=>(_other)
-1
end
2021-01-16 11:49:01 -08:00
sig { override.params(_other: T.untyped).returns(T::Boolean) }
2016-11-03 16:28:16 -07:00
def eql?(_other)
# Makes sure that the same instance of Version::NULL
# will never equal itself; normally Comparable#==
# will return true for this regardless of the return
# value of #<=>
false
end
2021-01-16 11:49:01 -08:00
sig { override.returns(T::Boolean) }
2016-11-03 16:28:16 -07:00
def detected_from_url?
false
end
2021-01-16 11:49:01 -08:00
sig { override.returns(T::Boolean) }
2016-11-03 16:28:16 -07:00
def head?
false
end
2021-01-16 11:49:01 -08:00
sig { override.returns(T::Boolean) }
2016-11-03 16:28:16 -07:00
def null?
true
end
# For {OS::Mac::Version} compatibility.
2020-10-20 12:03:48 +02:00
sig { returns(T::Boolean) }
def requires_nehalem_cpu?
false
end
2021-01-16 11:49:01 -08:00
alias requires_sse4? requires_nehalem_cpu?
alias requires_sse41? requires_nehalem_cpu?
alias requires_sse42? requires_nehalem_cpu?
alias requires_popcnt? requires_nehalem_cpu?
alias outdated_release? requires_nehalem_cpu?
2021-01-16 11:49:01 -08:00
sig { override.returns(Token) }
def major
NULL_TOKEN
end
2021-01-16 11:49:01 -08:00
sig { override.returns(Token) }
def minor
NULL_TOKEN
end
2021-01-16 11:49:01 -08:00
sig { override.returns(Token) }
def patch
NULL_TOKEN
end
sig { override.returns(T.self_type) }
def major_minor
self
end
sig { override.returns(T.self_type) }
def major_minor_patch
self
end
2021-01-16 11:49:01 -08:00
sig { override.returns(Float) }
2016-11-03 16:28:16 -07:00
def to_f
Float::NAN
end
2021-01-16 11:49:01 -08:00
sig { override.returns(Integer) }
def to_i
0
end
2021-01-16 11:49:01 -08:00
sig { override.returns(String) }
2016-11-03 16:28:16 -07:00
def to_s
""
end
2021-01-16 11:49:01 -08:00
alias to_str to_s
2021-01-16 11:49:01 -08:00
sig { override.returns(String) }
def inspect
"#<Version::NULL>"
end
2021-01-16 11:49:01 -08:00
end
private_constant :NullVersion
# Represents the absence of a version.
NULL = NullVersion.instance.freeze
2016-11-03 16:28:16 -07:00
end