Class: Tapioca::TypeVariableModule
- Inherits:
-
Module
- Object
- Module
- Tapioca::TypeVariableModule
show all
- Extended by:
- T::Sig
- Defined in:
- lib/tapioca/sorbet_ext/generic_name_patch.rb
Overview
This is subclassing from Module so that instances of this type will be modules. The reason why we want that is because that means those instances will automatically get bound to the constant names they are assigned to by Ruby. As a result, we don’t need to do any matching of constants to type variables to bind their names, Ruby will do that automatically for us and we get the name method for free from Module.
Defined Under Namespace
Classes: Type
Instance Method Summary
collapse
Methods inherited from Module
#autoload, #autoload_without_tapioca
Constructor Details
#initialize(context, type, variance, fixed, lower, upper, bounds_proc) ⇒ TypeVariableModule
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/tapioca/sorbet_ext/generic_name_patch.rb', line 158
def initialize(context, type, variance, fixed, lower, upper, bounds_proc)
@context = context
@type = type
@variance = variance
@bounds_proc = if bounds_proc
bounds_proc
else
build_bounds_proc(fixed, lower, upper)
end
super()
end
|
Instance Method Details
#coerce_to_type_variable ⇒ Object
212
213
214
|
# File 'lib/tapioca/sorbet_ext/generic_name_patch.rb', line 212
def coerce_to_type_variable
TypeVariable.new(name, @variance)
end
|
#fixed? ⇒ Boolean
192
193
194
|
# File 'lib/tapioca/sorbet_ext/generic_name_patch.rb', line 192
def fixed?
bounds.key?(:fixed)
end
|
#name ⇒ Object
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
# File 'lib/tapioca/sorbet_ext/generic_name_patch.rb', line 173
def name
constant_name = super
unless constant_name
constant_name = with_bound_name_pre_3_0 { super }
end
constant_name&.split("::")&.last
end
|
#serialize ⇒ Object
197
198
199
200
201
202
203
204
205
206
207
208
209
|
# File 'lib/tapioca/sorbet_ext/generic_name_patch.rb', line 197
def serialize
fixed = bounds[:fixed].to_s if fixed?
lower = bounds[:lower].to_s if bounds.key?(:lower)
upper = bounds[:upper].to_s if bounds.key?(:upper)
RBIHelper.serialize_type_variable(
@type.serialize,
@variance,
fixed,
upper,
lower,
)
end
|