From: "jeremyevans0 (Jeremy Evans)" Date: 2022-02-04T21:12:06+00:00 Subject: [ruby-core:107488] [Ruby master Bug#18569] RubyVM::InstructionSequence#disasm returns nil for composed functions Issue #18569 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Rejected I agree, this is expected behavior, since there is no instruction sequence for a composed proc. If you would like an instruction sequence, you need to manually compose the proc in Ruby. ---------------------------------------- Bug #18569: RubyVM::InstructionSequence#disasm returns nil for composed functions https://bugs.ruby-lang.org/issues/18569#change-96390 * Author: GabrielMalakias (Gabriel Malaquias) * Status: Rejected * Priority: Normal * ruby -v: 3.1.0 * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- I was testing function composition Proc#>> (https://ruby-doc.org/core-2.6/Proc.html#method-i-3E-3E) and noticed that when disassembling composed functions it always returns nil. ``` ruby first_proc = proc { |x| x + 2 } puts RubyVM::InstructionSequence.disasm(first_proc) # returns # == disasm: #@disasm.rb:3 (3,18)-(3,31)> (catch: FALSE) # local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) # [ 1] x@0 # 0000 getlocal_WC_0 x@0 ( 3)[LiBc] # 0002 putobject 2 # 0004 opt_plus [CcCr] # 0006 leave [Br] # ------------------------------------- puts RubyVM::InstructionSequence.disasm(first_proc >> first_proc) # return nil ``` Is this expected or there is something weird happening here? I'm happy to help fixing it with some help in case it's a bug ---Files-------------------------------- disasm.rb (631 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: