Class: MilkTea::ContainsArrayStorageVisitor

Inherits:
TypeVisitor
  • Object
show all
Defined in:
lib/milk_tea/core/types/visitor.rb

Instance Method Summary collapse

Methods inherited from TypeVisitor

#visit, #visit_default, #visit_dyn, #visit_event, #visit_function, #visit_generic_instance, #visit_generic_struct_definition, #visit_generic_variant_definition, #visit_lifetime_ref, #visit_null, #visit_nullable, #visit_parameter, #visit_proc, #visit_simd, #visit_soa, #visit_span, #visit_struct, #visit_struct_instance, #visit_task, #visit_tuple, #visit_type_var, #visit_union, #visit_variant, #visit_variant_arm_payload, #visit_variant_instance

Constructor Details

#initializeContainsArrayStorageVisitor

Returns a new instance of ContainsArrayStorageVisitor.



338
339
340
341
# File 'lib/milk_tea/core/types/visitor.rb', line 338

def initialize
  super
  @found = false
end

Instance Method Details

#dispatch(type) ⇒ Object



347
348
349
350
351
352
353
354
355
356
# File 'lib/milk_tea/core/types/visitor.rb', line 347

def dispatch(type)
  case type
  when Types::Nullable, Types::Struct, Types::StructInstance
    visit_children(type)
  when Types::GenericInstance
    if type.name == "array"
      @found = true
    end
  end
end

#found?Boolean

Returns:

  • (Boolean)


343
344
345
# File 'lib/milk_tea/core/types/visitor.rb', line 343

def found?
  @found
end

#visit_children(type) ⇒ Object



358
359
360
361
362
363
# File 'lib/milk_tea/core/types/visitor.rb', line 358

def visit_children(type)
  type.children.each do |child|
    visit(child)
    return if @found
  end
end