class T::Types::TypeVariable
provides some syntax for the static type checker
Since we do type erasure at runtime, this just validates the variance and
def build_type
def build_type nil end
def initialize(variance)
def initialize(variance) case variance when Hash then raise ArgumentError.new("Pass bounds using a block. Got: #{variance}") when *VALID_VARIANCES then nil else raise TypeError.new("invalid variance #{variance}") end @variance = variance end
def name
def name Untyped.new.name end
def subtype_of_single?(type)
def subtype_of_single?(type) true end
def valid?(obj)
def valid?(obj) true end