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_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.
200
201
202
203
|
# File 'lib/milk_tea/core/types/visitor.rb', line 200
def initialize
super
@sendable = true
end
|
Instance Method Details
#sendable? ⇒ Boolean
205
206
207
|
# File 'lib/milk_tea/core/types/visitor.rb', line 205
def sendable?
@sendable
end
|
#visit_children(type) ⇒ Object
209
210
211
212
213
214
|
# File 'lib/milk_tea/core/types/visitor.rb', line 209
def visit_children(type)
type.children.each do |child|
visit(child)
return unless @sendable
end
end
|
#visit_default(type) ⇒ Object
257
258
259
260
261
262
263
264
|
# File 'lib/milk_tea/core/types/visitor.rb', line 257
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
220
221
222
|
# File 'lib/milk_tea/core/types/visitor.rb', line 220
def visit_dyn(type)
@sendable = false
end
|
#visit_event(type) ⇒ Object
216
217
218
|
# File 'lib/milk_tea/core/types/visitor.rb', line 216
def visit_event(type)
@sendable = false
end
|
#visit_function(type) ⇒ Object
232
|
# File 'lib/milk_tea/core/types/visitor.rb', line 232
def visit_function(type); end
|
#visit_generic_instance(type) ⇒ Object
234
235
236
237
238
239
240
241
242
243
244
245
246
|
# File 'lib/milk_tea/core/types/visitor.rb', line 234
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
228
229
230
|
# File 'lib/milk_tea/core/types/visitor.rb', line 228
def visit_proc(type)
@sendable = false
end
|
#visit_span(type) ⇒ Object
224
225
226
|
# File 'lib/milk_tea/core/types/visitor.rb', line 224
def visit_span(type)
@sendable = false
end
|
#visit_struct(type) ⇒ Object
Also known as:
visit_struct_instance
248
249
250
251
252
253
254
|
# File 'lib/milk_tea/core/types/visitor.rb', line 248
def visit_struct(type)
if type.respond_to?(:has_events?) && type.has_events?
@sendable = false
return
end
visit_children(type)
end
|