Sha256: 8769574ddb1a8463735b00c76f2931e0e4d095f9ce23b109793917ac84b821e0

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

# typed: strict

module ThreadWeaver
  module ThreadInstruction
    extend T::Sig
    extend T::Helpers
    interface!
    sealed!

    sig { abstract.params(m: Module).returns(T::Boolean) }
    def is_a?(m)
    end
  end

  class PauseAtThreadStart < T::Struct
    include ThreadInstruction
  end

  class ContinueToThreadEnd < T::Struct
    include ThreadInstruction
  end

  class PauseWhenLineCount < T::Struct
    include ThreadInstruction
    extend T::Sig

    const :count, Integer
    const :target_classes, T::Array[Module]

    sig { returns(PauseWhenLineCount) }
    def next
      PauseWhenLineCount.new(
        count: count + 1,
        target_classes: target_classes
      )
    end
  end

  class PauseAtMethodCall < T::Struct
    include ThreadInstruction

    const :klass, Class
    const :method_name, Symbol
  end

  class PauseAtMethodReturn < T::Struct
    include ThreadInstruction

    const :klass, Class
    const :method_name, Symbol
  end

  class PauseAtSourceLine < T::Struct
    include ThreadInstruction
    extend T::Sig

    const :path_suffix, String
    const :line, Integer

    sig { returns(PauseAtSourceLine) }
    def next
      PauseAtSourceLine.new(
        line: line + 1,
        path_suffix: path_suffix
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
thread_weaver-0.1.0 lib/thread_weaver/thread_instruction.rb