Sha256: 9d023e44f17ad10e4e4fcbbec1bceb22006630b9d117aab308889fb31bb421b3

Contents?: true

Size: 1.58 KB

Versions: 23

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true
require_relative 'code_context'
require_relative 'singleton_method_context'

module Reek
  module Context
    # Semi-transparent context to represent a metaclass while building the
    # context tree. This context will not be part of the resulting tree, but
    # will track context and visibility separately while building is in
    # progress.
    class GhostContext < ModuleContext
      attr_reader :children

      def register_with_parent(parent)
        @parent = parent
      end

      def append_child_context(child)
        real_parent = parent.append_child_context(child)
        super
        real_parent
      end

      # Return the correct class for child method contexts (representing nodes
      # of type `:def`). For GhostContext, this is the class that represents
      # singleton methods.
      def method_context_class
        SingletonMethodContext
      end

      # Return the correct class for child attribute contexts. For
      # GhostContext, this is the class that represents singleton attributes.
      def attribute_context_class
        SingletonAttributeContext
      end

      def track_visibility(visibility, names)
        visibility_tracker.track_visibility children: children,
                                            visibility: visibility,
                                            names: names
      end

      def track_singleton_visibility(_visibility, _names)
      end

      def record_use_of_self
        parent.record_use_of_self
      end

      def statement_counter
        parent.statement_counter
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
reek-4.5.3 lib/reek/context/ghost_context.rb
reek-4.5.2 lib/reek/context/ghost_context.rb
reek-4.5.1 lib/reek/context/ghost_context.rb
reek-4.5.0 lib/reek/context/ghost_context.rb
reek-4.4.2 lib/reek/context/ghost_context.rb
reek-4.4.1 lib/reek/context/ghost_context.rb
reek-4.4.0 lib/reek/context/ghost_context.rb
reek-4.3.0 lib/reek/context/ghost_context.rb
reek-4.2.5 lib/reek/context/ghost_context.rb
reek-4.2.4 lib/reek/context/ghost_context.rb
reek-4.2.3 lib/reek/context/ghost_context.rb
reek-4.2.2 lib/reek/context/ghost_context.rb
reek-4.2.1 lib/reek/context/ghost_context.rb
reek-4.2.0 lib/reek/context/ghost_context.rb
reek-4.1.1 lib/reek/context/ghost_context.rb
reek-4.1.0 lib/reek/context/ghost_context.rb
reek-4.0.5 lib/reek/context/ghost_context.rb
reek-4.0.4 lib/reek/context/ghost_context.rb
reek-4.0.3 lib/reek/context/ghost_context.rb
reek-4.0.2 lib/reek/context/ghost_context.rb