Sha256: 0ab8200a6d6db88d93ba98d3a19b4d0d173b02ee218c569d3229cfedcc0fadc8

Contents?: true

Size: 1.24 KB

Versions: 43

Compression:

Stored size: 1.24 KB

Contents

# typed: strict
# frozen_string_literal: true

module Tapioca
  module Gem
    module Listeners
      class Subconstants < Base
        extend T::Sig

        include Runtime::Reflection

        private

        sig { override.params(event: ScopeNodeAdded).void }
        def on_scope(event)
          symbol = event.symbol
          return if @pipeline.symbol_in_payload?(symbol) && event.node.empty?

          prefix = symbol == "Object" ? "" : symbol

          constant = event.constant
          constants_of(constant).sort.uniq.map do |constant_name|
            name = "#{prefix}::#{constant_name}"
            subconstant = constantize(name)

            # Don't compile modules of Object because Object::Foo == Foo
            # Don't compile modules of BasicObject because BasicObject::BasicObject == BasicObject
            next if (Object == constant || BasicObject == constant) && Module === subconstant
            next unless Runtime::Reflection.constant_defined?(subconstant)

            @pipeline.push_constant(name, subconstant)
          end
        end

        sig { override.params(event: NodeAdded).returns(T::Boolean) }
        def ignore?(event)
          event.is_a?(Tapioca::Gem::ForeignScopeNodeAdded)
        end
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 2 rubygems

Version Path
tapioca-0.11.17 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.16 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.15 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.14 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.13 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.12 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.11 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.10 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.9 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.8 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.7 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.6 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.5 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.4 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.3 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.2 lib/tapioca/gem/listeners/subconstants.rb
devcycle-ruby-server-sdk-2.0.0 vendor/bundle/ruby/3.0.0/gems/tapioca-0.11.1/lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.1 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.11.0 lib/tapioca/gem/listeners/subconstants.rb
tapioca-0.10.5 lib/tapioca/gem/listeners/subconstants.rb