Pertama-tama: .say
apakah tidak memberikan nilai identitas, karena yang memanggil .gist
metode pada ekspresi yang diberikan. Untuk nilai identitas, Anda perlu memanggil .WHICH
metode tersebut. Untungnya, Block.gist
metode ini tidak memasukkan nilai identitas dalam pengetatannya. Tapi itu tidak dijamin untuk semua objek.
Apa yang Anda lihat di sana, adalah pengoptimal statis di tempat kerja: karena tidak ada yang terjadi di dalam blok, itu dapat dibuang. Dalam satu kasus di mana hal ini berbeda (di mana Anda tentukan tanda tangan alternatif), itu adalah berbeda. Jika Anda menjalankan skrip ini dengan --optimize=0
atau --optimize=1
, maka semua blok akan memiliki nilai identitas yang berbeda.
Saya kira Anda bisa menyebutnya masalah yang menyebutkan &?BLOCK
tidak menghambat pengoptimal statis dari meratakan cakupan. Di sisi lain, Anda juga bisa menyebutnya sebagai kasus DIHWIDT (Dokter, Rasanya Sakit Ketika Saya Melakukan Ini). Jadi jangan lakukan itu :-)
UPDATE: itu adalah tanda tangan berbeda yang membuat perbedaan. Daniel Mita ++