Gauche > Archives > 2019/07/07

2019/07/07 00:58:28 UTCshiro
#
load即実行があるとつらいですね。mainに書いておけるならそれで解決ですが、短く書きたいという要求がありますか?
2019/07/07 02:14:18 UTCkaki
#
ありますね。コード長も出るので。あと、手元で実行するときはトップレベルにべた書きでいいのに、AtCoderではmainに書かないとダメみたいな独自ルールを持ち込みたくないというのもあります。
2019/07/07 03:20:03 UTCshiro
#
gauche.test#test-scriptに:wrap-scriptオプションをつけてみました (コミット#2420a57)。スクリプト全体をダミーの関数定義の中に入れるので、トップレベルに書かれていたフォームも実行はされなくなります。これはこれでうまくいかない場合もあるとは思いますが (関数定義とトップレベル式が混ざってたりする場合)
2019/07/07 05:37:07 UTCkaki
#
use の後に define あるだけで駄目なのは厳しいですね。
2019/07/07 05:58:09 UTCshiro
#
あっそうか。
2019/07/07 06:30:22 UTCshiro
#
コミット#51fc0d1で、wrap-scriptオプションはやめてcompile-onlyというのをつけてみました。トップレベルフォームごとにコンパイルだけするので、precompがやってるのと同じです。その後でbindingのチェック等も行うので、未定義変数参照などは見つけられます。
#
スクリプト本体から他のコードをloadしている場合は、load自体が実行されないので、場合によって使い分ける必要はありそうです。
2019/07/07 07:48:11 UTCkaki
#
よさげなんですけど、未定義変数参照は報告されなくないですか?
2019/07/07 07:53:15 UTCshiro
#
ありゃ、確かにcompile-onlyだと出ないですね。あっそうかdefineが実行されないから定義のボディがチェック対象に追加されないんだ
2019/07/07 07:57:03 UTCkaki
#
特殊形式とマクロのチェックができるだけでも嬉しいですけどね。