Gauche > Archives > 2012/04/19

2012/04/19 06:23:11 UTC(び)
#
うはー、HEADのGaucheだとKahua動かんなー
#
週末に直そう
2012/04/19 06:24:10 UTCshiro
#
え、まじ? うちのKahua運用マシンはHEAD追従じゃないから気づかなかった。
#
JenkinsでKahuaのテストも回すか
2012/04/19 06:28:31 UTC(び)
#
うちも最近Kahuaマシンはほぼ放置中なので、気づきませんでした。
#
そろそろ真面目にKahuaのgithub移行を進めねば。
2012/04/19 07:02:34 UTC(び)
#
どうやら define-generic で宣言してるだけのメソッドを呼ぶコードが同一モジュール内にある場合に、test-moduleが引数チェックでエラーを吐くらしい。
#
あとはentry-methodがエラーになる。こっちはまだ追い切れてません。
2012/04/19 07:06:35 UTCshiro
#
ああそうか、メソッドがひとつもないとapplicable?が#tにならないのか。メソッドが足されることを期待してdefine-genericだけ書いとくってのはあり得るパターンなので、test-moduleの方でそういう場合はアリティチェックを除外してもいいかも。
2012/04/19 07:10:16 UTC(び)
#
確かにそうですね。毎回空のメソッドを追加するのも無駄な手間です。
2012/04/19 07:12:06 UTCshiro
#
これでdefine-generic問題通ります? https://gist.github.com/2419310
2012/04/19 07:14:17 UTC(び)
#
しばしお待ちを
2012/04/19 07:20:00 UTC(び)
#
んー
#
test bindings in module kahua.persistence: expects () => got "procedures received wrong number of argument: read-kahua-instance(kahua-instance) got 3, read-kahua-instance((#f G274)) got 4, read-kahua-instance((#f G321)) got 3"
#
これだけエラーが残りました。define-genericされていて、かつ引数のパターンが複数あるケースです。
#
あ、ちがう
#
test bindings in module kahua.persistence: expects () => got "procedures received wrong number of argument: read-kahua-instance(kahua-instance) got 3, read-kahua-instance((#f G274)) got 4, read-kahua-instance((#f G321)) got 3"
#
誤爆
#
(define-method read-kahua-instance ((object <kahua-persistent-base>))
  ;; This is very transitional code.
  (guard (e (else (read-kahua-instance (current-db) (current-class-of object) (key-of object))))
    (read-kahua-instance (current-db) (current-class-of object) (kahua-persistent-id object))))
#
定義してました
2012/04/19 07:24:59 UTCshiro
#
ああそうか。サブクラスが引数の多いメソッドを追加することを期待してるんだよね。これは:bypass-arity-checkにリストしてもらっとくしかないかなあ。
2012/04/19 07:25:30 UTC(び)
#
あ、そういうのがあるんですか
#
ドキュメント見たらあった。
#
そうですね。これでバイパスするのがよさそうです。
2012/04/19 07:27:51 UTCshiro
#
具体的に使うケースが念頭にあったわけではないけど、用意しといて良かった
2012/04/19 07:28:05 UTC(び)
#
初ユーザ ;-)
2012/04/19 07:29:32 UTCeyasuyuki@twitter
#
期待アゲ RT : (び): そろそろ真面目にKahuaのgithub移行を進めねば。 http://t.co/t6O0vFLJ
2012/04/19 07:30:34 UTC(び)
#
うまく行きました。
#
あとはこれ:
#
Testing entry-method ...                                         *** ERROR: Compile Error: improper list not allowed: ((#<identifier kahua.server#_> #<identifier kahua.server#<entry-method>>) arg1 . rargs)
"./entry-method.kahua":43:(define-entry-method show (arg1 :res ...

Stack Trace:
_______________________________________
  0  (report-error e)
        At line 120 of "../src/kahua-server.scm"
  1  (map identity args)
        At line 822 of "../src/kahua/server.scm"
  2  (load-kahua-module (car mods))
        At line 209 of "../src/kahua-server.scm"
gosh: "error": "(input string port)":line 1: #\#' unexpected

make[2]: *** [entry-method] Error 1
make[1]: *** [check] Error 2
make: *** [check] Error 2
#
これはちゃんとデバッグする必要がありそう。
2012/04/19 07:34:24 UTCshiro
#
む。これって以前のGaucheのmapがバグってた (dotted listが渡ってきても最後のcdrを無視してた) せいかな
#
(map identity args)の行を(map* identity (^x'()) args)に変えてみてください。
2012/04/19 07:42:32 UTC(び)
#
--- a/src/kahua/server.scm
+++ b/src/kahua/server.scm
@@ -819,7 +819,7 @@
 
 (define-macro (define-method-rule name args . body)
   (let* ((rarg (if (dotted-list? args) (cdr (last-pair args)) '()))
-         (args (map identity args))
+         (args (map* identity (^x'()) args))
          (specs (append (gen-specializers args) (if (null? rarg) rarg 'rarg)))
          (rules (append (gen-rules args) rarg))
          (method-args (append (gen-method-args args) rarg))
@@ -836,7 +836,7 @@
                            '())
        (define-method ,name ,method-args
          (let1 rules (hash-table-get (ref ,name 'rules) ',specs)
-           (,apply-rule rules (append (list ,@(map identity lambda-args)) ,rarg
+           (,apply-rule rules (append (list ,@(map* identity (^x '()) lambda-ar
 
 ;;
 ;; kahua-call-with-current-context
#
ですが、変わらないですね
2012/04/19 07:47:30 UTCshiro
#
いや、エラーの出る場所が変わってるはず。これで如何。
#
--- src/kahua/server.scm	(revision 3566)
+++ src/kahua/server.scm	(working copy)
@@ -773,10 +773,11 @@
 ;; ((arg1 <class1>) G93 arg3 ...)
 ;; => (arg1 G93 arg3 ...)
 (define (gen-lambda-args specs)
-  (map (lambda (spec)
-         (cond ((pair? spec) (car spec))
-               (else spec)))
-       specs))
+  (map* (lambda (spec)
+          (cond ((pair? spec) (car spec))
+                (else spec)))
+        (^x'())
+        specs))
 
 ;; ((arg1 <class1>) "str1" "str2" ...)
 ;; => ((1 . "str1") (2 . "str2") ...)
@@ -819,7 +820,7 @@
 
 (define-macro (define-method-rule name args . body)
   (let* ((rarg (if (dotted-list? args) (cdr (last-pair args)) '()))
-         (args (map identity args))
+         (args (map* identity (^x'()) args))
          (specs (append (gen-specializers args) (if (null? rarg) rarg 'rarg)))
          (rules (append (gen-rules args) rarg))
          (method-args (append (gen-method-args args) rarg))
@@ -836,7 +837,7 @@
                            '())
        (define-method ,name ,method-args
          (let1 rules (hash-table-get (ref ,name 'rules) ',specs)
-           (,apply-rule rules (append (list ,@(map identity lambda-args)) ,rarg)))))))
+           (,apply-rule rules (append (list ,@(map* identity (^x'()) lambda-args)) ,rarg)))))))
 
 ;;
 ;; kahua-call-with-current-context
2012/04/19 07:49:31 UTC(び)
#
通りました。ありがとうございます。
#
あとは、plugin managerのテストがfailするな...
#
おうふ、filterが(use srfi-1)する前は存在しないことに依存したテストががが
2012/04/19 07:56:53 UTCshiro
#
むー、互換性難しい… srfi-1の手続きは多分lset関連以外はいずれコアに移す予定です
2012/04/19 07:59:51 UTC(び)
#
とりあえず件のテストをコメントアウトしたら全部のテストが通りました。ありがとうございます。
#
週末にこの修正を入れて、stable版出しちゃいます。何か問題があって止めてたはずですが、もう思い出せないので。
#
yasuyukiそういえば、yasuyukiがstableに何か入れてたけど、HEADには入れてくれてない気がする。
2012/04/19 08:09:29 UTCshiro
#
あ、:bypass-arity-checkって0.9.2には無いから、Gauche HEADでしか動かなくなるね… 0.9.3をさっさと出さないとってことになるか。
2012/04/19 08:17:09 UTC(び)
#
うぉぉ... では、0.9.3待ちでリリースします。
#
どのみち、gistに張っていただいた変更もふくまれてないですしね。
#
s/張/貼/