Class: MilkTea::SendableCheckVisitor
Instance Method Summary
collapse
Methods inherited from TypeVisitor
#dispatch, #visit, #visit_generic_struct_definition, #visit_generic_variant_definition, #visit_lifetime_ref, #visit_null, #visit_nullable, #visit_parameter, #visit_simd, #visit_soa, #visit_task, #visit_tuple, #visit_type_var, #visit_union, #visit_variant, #visit_variant_arm_payload, #visit_variant_instance
Constructor Details
Returns a new instance of SendableCheckVisitor.
202
203
204
205
|
# File 'lib/milk_tea/core/types/visitor.rb', line 202
def initialize
super
@sendable = true
end
|
Instance Method Details
#sendable? ⇒ Boolean
207
208
209
|
# File 'lib/milk_tea/core/types/visitor.rb', line 207
def sendable?
@sendable
end
|
#visit_children(type) ⇒ Object
211
212
213
214
215
216
|
# File 'lib/milk_tea/core/types/visitor.rb', line 211
def visit_children(type)
type.children.each do |child|
visit(child)
return unless @sendable
end
end
|
#visit_default(type) ⇒ Object
259
260
261
262
263
264
265
266
|
# File 'lib/milk_tea/core/types/visitor.rb', line 259
def visit_default(type)
case type
when Types::Primitive
@sendable = false if type.name == "str"
when Types::Error, Types::Opaque, Types::StringView
@sendable = false
end
end
|
#visit_dyn(type) ⇒ Object
222
223
224
|
# File 'lib/milk_tea/core/types/visitor.rb', line 222
def visit_dyn(type)
@sendable = false
end
|
#visit_event(type) ⇒ Object
218
219
220
|
# File 'lib/milk_tea/core/types/visitor.rb', line 218
def visit_event(type)
@sendable = false
end
|
#visit_function(type) ⇒ Object
234
|
# File 'lib/milk_tea/core/types/visitor.rb', line 234
def visit_function(type); end
|
#visit_generic_instance(type) ⇒ Object
236
237
238
239
240
241
242
243
244
245
246
247
248
|
# File 'lib/milk_tea/core/types/visitor.rb', line 236
def visit_generic_instance(type)
case type.name
when "ptr", "const_ptr", "own", "ref"
@sendable = false
when "array"
el = type.arguments.first
visit(el) unless el.is_a?(Types::LiteralTypeArg)
when "str_buffer", "atomic"
else
@sendable = false
end
end
|
#visit_proc(type) ⇒ Object
230
231
232
|
# File 'lib/milk_tea/core/types/visitor.rb', line 230
def visit_proc(type)
@sendable = false
end
|
#visit_span(type) ⇒ Object
226
227
228
|
# File 'lib/milk_tea/core/types/visitor.rb', line 226
def visit_span(type)
@sendable = false
end
|
#visit_struct(type) ⇒ Object
Also known as:
visit_struct_instance
250
251
252
253
254
255
256
|
# File 'lib/milk_tea/core/types/visitor.rb', line 250
def visit_struct(type)
if type.respond_to?(:has_events?) && type.has_events?
@sendable = false
return
end
visit_children(type)
end
|