[Gauche-devel-jp] Re: test-moduleの拡張

Back to archive index

Shiro Kawai shiro****@lava*****
2006年 4月 2日 (日) 19:20:26 JST


From: Kazuki Tsujimoto <kazuk****@callc*****>
Subject: [Gauche-devel-jp] Re: test-moduleの拡張
Date: Sun, 02 Apr 2006 03:52:35 +0900

> 辻本です。
> 
> チェックから除外する変数を、あらかじめtest-moduleへの引数にするなどして
> テストスクリプト中で指定しておくというのはどうでしょうか。テストの目的を
> 意図しないtypoの検出に置くならば、意図してチェックから除外するのも構わないと
> 思います。

これいいですね。
別案として、何らかの宣言構文でもって参照が未束縛である可能性をソースの
方に書いておくことも考えたのですが (宣言構文はいずれ最適化等のために
入れることになると思います)、まだ影響が読みきれないので躊躇してました。
テストの方に明示するなら、影響範囲がはっきりしているので良いと思います。

> 逆にデメリットには対象変数を指定するときにシンボルしか与えない場合、除外すべき
> identifier/glocオブジェクトをきちんと識別できるか分からないということが挙げられます。
> 多分大丈夫だとは思うのですが、考えが浅いかもしれません。

確かに、

- 対象モジュールAがuseしているモジュールX中でR5RSマクロxが定義されていて、
  xの展開形はモジュールプライベートな変数yを参照する。
  ただ、yは条件によっては定義されない場合がある。
- Aの中で変数yを定義し、使っている。xも呼んでいる。

という場合。モジュールZ中の変数zをZ#zと表すことにすると、

- Aのコンパイル後のコードにはX#yへの参照が含まれる。
- X#yが定義されない条件の場合、test-moduleは未束縛変数の参照エラーを報告。
- シンボルyを除外する指定をすると、A#yの参照チェックも省かれてしまう

なんてケースが考えられます。厳密にやるなら除外する変数をモジュールと
シンボルの組で表すべきでしょうか。ただ、このような場合、モジュールXを
使うあらゆるモジュールで同じように対応せねばならないので、それなら
むしろモジュールXの方に条件に合わない場合は X#y にダミーの束縛を
用意しておくくらいの配慮を求めていいんじゃないかと思います。

--shiro






Gauche-devel-jp メーリングリストの案内
Back to archive index