Class: MilkTea::ContainsRefTypeVisitor
- Inherits:
-
TypeVisitor
- Object
- TypeVisitor
- MilkTea::ContainsRefTypeVisitor
- Defined in:
- lib/milk_tea/core/types/visitor.rb
Instance Method Summary collapse
- #found? ⇒ Boolean
-
#initialize(allow_lifetimes: []) ⇒ ContainsRefTypeVisitor
constructor
A new instance of ContainsRefTypeVisitor.
- #visit_generic_instance(type) ⇒ Object
Methods inherited from TypeVisitor
#dispatch, #visit, #visit_children, #visit_default, #visit_dyn, #visit_event, #visit_function, #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
#initialize(allow_lifetimes: []) ⇒ ContainsRefTypeVisitor
Returns a new instance of ContainsRefTypeVisitor.
95 96 97 98 99 |
# File 'lib/milk_tea/core/types/visitor.rb', line 95 def initialize(allow_lifetimes: []) super() @found = false @allow_lifetimes = allow_lifetimes end |
Instance Method Details
#found? ⇒ Boolean
101 102 103 |
# File 'lib/milk_tea/core/types/visitor.rb', line 101 def found? @found end |
#visit_generic_instance(type) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/milk_tea/core/types/visitor.rb', line 105 def visit_generic_instance(type) if type.name == "ref" && [1, 2].include?(type.arguments.length) if type.arguments.length == 2 lt = type.arguments.first if lt.is_a?(String) && @allow_lifetimes.include?(lt) visit_children(type) return end end @found = true return end visit_children(type) end |