このへん若干不審っぽい動作なんだよね
def はメソッド登録だけすると思ってもらえるといいんだけどさ
def の中身がどうなっているかは def 登録時には関与しない

puts b
def b; "B!!"; end
がアウトで

def a; puts b; end
def b; "B!!"; end
がいいのは理不尽っぽい気がちょっとだけする