Sha256: 43e8b9a551316efae53e4458086b7cfdd7c7789bb61d7ea1de0e5f304c0a511b

Contents?: true

Size: 825 Bytes

Versions: 8

Compression:

Stored size: 825 Bytes

Contents

# typed: strict
# frozen_string_literal: true

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

        include Runtime::Reflection

        private

        sig { override.params(event: ScopeNodeAdded).void }
        def on_scope(event)
          constant = event.constant
          node = event.node

          abstract_type = T::Private::Abstract::Data.get(constant, :abstract_type) ||
            T::Private::Abstract::Data.get(singleton_class_of(constant), :abstract_type)

          node << RBI::Helper.new(abstract_type.to_s) if abstract_type
          node << RBI::Helper.new("final") if T::Private::Final.final_module?(constant)
          node << RBI::Helper.new("sealed") if T::Private::Sealed.sealed_module?(constant)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
tapioca-0.8.3 lib/tapioca/gem/listeners/sorbet_helpers.rb
tapioca-0.8.2 lib/tapioca/gem/listeners/sorbet_helpers.rb
tapioca-0.7.3 lib/tapioca/gem/listeners/sorbet_helpers.rb
tapioca-0.8.1 lib/tapioca/gem/listeners/sorbet_helpers.rb
tapioca-0.8.0 lib/tapioca/gem/listeners/sorbet_helpers.rb
tapioca-0.7.2 lib/tapioca/gem/listeners/sorbet_helpers.rb
tapioca-0.7.1 lib/tapioca/gem/listeners/sorbet_helpers.rb
tapioca-0.7.0 lib/tapioca/gem/listeners/sorbet_helpers.rb