class Tapioca::Dsl::Compilers::ActiveRecordRelations

def create_association_relation_class

: -> void
def create_association_relation_class
  superclass = "::ActiveRecord::AssociationRelation"
  # Association subclasses include the generated association relation module
  model.create_class(AssociationRelationClassName, superclass_name: superclass) do |klass|
    klass.create_include(CommonRelationMethodsModuleName)
    klass.create_include(AssociationRelationMethodsModuleName)
    klass.create_type_variable("Elem", type: "type_member", fixed: constant_name)
    TO_ARRAY_METHODS.each do |method_name|
      klass.create_method(method_name.to_s, return_type: "T::Array[#{constant_name}]")
    end
  end
  create_association_relation_group_chain_class
  create_association_relation_where_chain_class
end