Class: MilkTea::Types::SendableCheckVisitor
- Inherits:
-
Visitor
- Object
- Visitor
- MilkTea::Types::SendableCheckVisitor
show all
- Defined in:
- lib/milk_tea/core/types/visitor.rb
Instance Method Summary
collapse
Methods inherited from Visitor
#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.
201
202
203
204
|
# File 'lib/milk_tea/core/types/visitor.rb', line 201
def initialize
super
@sendable = true
end
|
Instance Method Details
#sendable? ⇒ Boolean
206
207
208
|
# File 'lib/milk_tea/core/types/visitor.rb', line 206
def sendable?
@sendable
end
|
#visit_children(type) ⇒ Object
210
211
212
213
214
215
|
# File 'lib/milk_tea/core/types/visitor.rb', line 210
def visit_children(type)
type.children.each do |child|
visit(child)
return unless @sendable
end
end
|
#visit_default(type) ⇒ Object
258
259
260
261
262
263
264
265
|
# File 'lib/milk_tea/core/types/visitor.rb', line 258
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
221
222
223
|
# File 'lib/milk_tea/core/types/visitor.rb', line 221
def visit_dyn(type)
@sendable = false
end
|
#visit_event(type) ⇒ Object
217
218
219
|
# File 'lib/milk_tea/core/types/visitor.rb', line 217
def visit_event(type)
@sendable = false
end
|
#visit_function(type) ⇒ Object
233
|
# File 'lib/milk_tea/core/types/visitor.rb', line 233
def visit_function(type); end
|
#visit_generic_instance(type) ⇒ Object
235
236
237
238
239
240
241
242
243
244
245
246
247
|
# File 'lib/milk_tea/core/types/visitor.rb', line 235
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
229
230
231
|
# File 'lib/milk_tea/core/types/visitor.rb', line 229
def visit_proc(type)
@sendable = false
end
|
#visit_span(type) ⇒ Object
225
226
227
|
# File 'lib/milk_tea/core/types/visitor.rb', line 225
def visit_span(type)
@sendable = false
end
|
#visit_struct(type) ⇒ Object
Also known as:
visit_struct_instance
249
250
251
252
253
254
255
|
# File 'lib/milk_tea/core/types/visitor.rb', line 249
def visit_struct(type)
if type.respond_to?(:has_events?) && type.has_events?
@sendable = false
return
end
visit_children(type)
end
|