class Tapioca::Dsl::Compilers::MixedInClassAttributes

~~~
end
end
def tag?; end
def tag=(value); end
def tag; end
module GeneratedInstanceMethods
end
def tag?; end
def tag=(value); end
def tag; end
module GeneratedClassMethods
mixes_in_class_methods GeneratedClassMethods
include GeneratedInstanceMethods
module Taggeable
# typed: strong
~~~rbi
this compiler will produce the RBI file ‘taggeable.rbi` with the following content:
~~~
end
end
class_attribute :tag
included do
extend ActiveSupport::Concern
module Taggeable
~~~rb
For example, given the following concern
`class_attribute` on classes.
`Tapioca::Dsl::Compilers::MixedInClassAttributes` generates RBI files for modules that dynamically use

def decorate

def decorate
  mixin_compiler = Runtime::DynamicMixinCompiler.new(constant)
  return if mixin_compiler.empty_attributes?
  root.create_path(constant) do |mod|
    mixin_compiler.compile_class_attributes(mod)
  end
end

def gather_constants

def gather_constants
  # Select all non-anonymous modules that have overridden Module.included
  all_modules.select do |mod|
    !mod.is_a?(Class) && name_of(mod) && Runtime::Reflection.method_of(mod, :included).owner != Module
  end
end