Sha256: 922f53c656ca185c4bc6fa5b89b3507a7cf628c76dfb5ad385fac3df172c09b8

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

# typed: true
# frozen_string_literal: true

require "tapioca/runtime/trackers/tracker"

module Tapioca
  module Runtime
    module Trackers
      extend T::Sig

      @trackers = T.let([], T::Array[Tracker])

      class << self
        extend T::Sig

        sig { void }
        def disable_all!
          @trackers.each(&:disable!)
        end

        sig { params(tracker: Tracker).void }
        def register_tracker(tracker)
          @trackers << tracker
        end
      end
    end
  end
end

# The load order below is important:
# ----------------------------------
# We want the mixin tracker to be the first thing that is
# loaded because other trackers might apply their own mixins
# into core types (like `Module` and `Kernel`). In order to
# catch and filter those mixins as coming from Tapioca, we need
# the mixin tracker to be in place, before any mixin operations
# are performed.
require "tapioca/runtime/trackers/mixin"
require "tapioca/runtime/trackers/constant_definition"
require "tapioca/runtime/trackers/autoload"
require "tapioca/runtime/trackers/required_ancestor"

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tapioca-0.10.4 lib/tapioca/runtime/trackers.rb
tapioca-0.10.3 lib/tapioca/runtime/trackers.rb
tapioca-0.10.2 lib/tapioca/runtime/trackers.rb