Sha256: bd21566dbcc740368345c37fb579f332e2317e3c9f540b408173399fc2ebe811

Contents?: true

Size: 1.34 KB

Versions: 15

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

require_relative 'const'

module DeepCover
  class Node
    class ModuleName < Node
      has_child scope: [Node, nil]
      has_child const_name: Symbol

      def flow_completion_count
        parent.execution_count
      end

      def execution_count
        if scope
          scope.flow_completion_count
        else
          super
        end
      end
    end

    def self.define_module_class
      check_completion
      has_tracker :body_entry
      yield
      has_child body: Node,
                can_be_empty: -> { base_node.loc.end.begin },
                rewrite: '%{body_entry_tracker};%{node}',
                is_statement: true,
                flow_entry_count: :body_entry_tracker_hits
      executed_loc_keys :keyword

      class_eval do
        def execution_count # Overrides ExecutedAfterChildren
          body_entry_tracker_hits
        end
      end
    end

    class Module < Node
      define_module_class do
        has_child const: {const: ModuleName}
      end
    end

    class Class < Node
      define_module_class do
        has_child const: {const: ModuleName}
        has_child inherit: [Node, nil] # TODO
      end
    end

    # class << foo
    class Sclass < Node
      define_module_class do
        has_child object: Node
      end
      executed_loc_keys :keyword, :operator
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
deep-cover-core-1.1.0 lib/deep_cover/node/module.rb
deep-cover-core-1.0.0 lib/deep_cover/node/module.rb
deep-cover-core-0.8.1 lib/deep_cover/node/module.rb
deep-cover-core-0.8.0 lib/deep_cover/node/module.rb
deep-cover-core-0.7.10 lib/deep_cover/node/module.rb
deep-cover-core-0.7.9 lib/deep_cover/node/module.rb
deep-cover-core-0.7.8 lib/deep_cover/node/module.rb
deep-cover-core-0.7.7 lib/deep_cover/node/module.rb
deep-cover-core-0.7.6 lib/deep_cover/node/module.rb
deep-cover-core-0.7.5 lib/deep_cover/node/module.rb
deep-cover-core-0.7.4 lib/deep_cover/node/module.rb
deep-cover-core-0.7.3 lib/deep_cover/node/module.rb
deep-cover-core-0.7.2 lib/deep_cover/node/module.rb
deep-cover-core-0.7.1 lib/deep_cover/node/module.rb
deep-cover-core-0.7.0 lib/deep_cover/node/module.rb