Java Tiny Console で同名のクラスを extends すると補完時に無限ループ
するようだったので直した。原因は たとえば foo.Hoge クラスが bar.Hoge クラスを extends すると、補完のための .lst ファイルには FQCN じゃなくて Hoge クラスの親は Hoge という情報しか残らないため、補完しようとしたときに親のメソッドも見に行こうとして、 Hoge の親は Hoge で、Hoge の親は Hoge で、、、というように見に行って無限ループになるという点だった。そこで、親の情報を構築するときに同じクラス名だったらはじくという設定を記述。
xyzzy/site-list/jtc/jtc-complete.l のload-completion-file1 関数の
の
「; メンバ単位でループ」っていう部分の手前を
-
- -
(when (not (equal p q))
(setf (gethash p *jtc-superclass-hash*) q)
(setf (gethash (list p) *jtc-jcinfo-hash*) v))
-
- -
という感じに。