Sha256: 5ca65a61dfac7daafa1c0ed6ae98bd1e90ee05e963d636086a82c5081a3c8d85

Contents?: true

Size: 737 Bytes

Versions: 2

Compression:

Stored size: 737 Bytes

Contents

# frozen_string_literal: true

module Yardcheck
  class ProcessedSource
    include Concord.new(:raw_source), Adamantium::Flat

    # @see https://bugs.ruby-lang.org/issues/13369
    def tracepoint_bug_candidate?
      resbodies = find_resbodies
      resbodies.any? do |node|
        find_type(node, :return).any?
      end
    end

    private

    def find_resbodies(node = ast)
      find_type(node, :resbody)
    end

    def find_type(node, type)
      return nil unless node.is_a?(Parser::AST::Node)
      return [node] if node.type == type

      node.children.map { |child| find_type(child, type) }.flatten.compact
    end

    def ast
      Parser::CurrentRuby.parse(raw_source)
    end
  end # ProcessedSource
end # Yardcheck

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yardcheck-0.0.3 lib/yardcheck/processed_source.rb
yardcheck-0.0.2 lib/yardcheck/processed_source.rb