#484 closed defect (fixed)
-scrutinize not properly expanding match macro.
Reported by: | Alan Post | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 4.9.0 |
Component: | compiler | Version: | 4.6.x |
Keywords: | Cc: | ||
Estimated difficulty: |
Description
I've encountered a problem using the match macro while having '-scrutinize' enabled.
I've attached a .scm file that uses the match egg testing four cases. Compiling this file with the following command:
csc -feature compiling-extension -setup-mode -s -scrutinize -j testegg -o testegg.so testegg.scm
Gives me the following error:
Error: (caddr) bad argument type: * Call history: <syntax> (##core#let ((g670 ((make-bar "aisa" #f #t) "baz"))) (g670)) <syntax> ((make-bar "aisa" #f #t) "baz") <syntax> (##core#let ((g672 (make-bar "aisa" #f #t))) (g672 "baz")) <syntax> (make-bar "aisa" #f #t) <syntax> (##core#begin (g672 "baz")) <syntax> (g672 "baz") <syntax> (##core#begin (g670)) <syntax> (g670) <syntax> (newline) <syntax> (##core#undefined) <-- Error: shell command terminated with non-zero exit status 17920: /opt/chicken-master/bin/chicken testegg.scm -output-file testegg.c -dynamic -feature chicken-compile-shared -feature compiling-extension -setup-mode -scrutinize -emit-import-library testegg
This code compiles fine in the following conditions:
- it runs fine in csi, this problem relates to the compiler.
- it runs fine if you comment-out all but one case in match. The particular case doesn't matter, so long as there is only one of them.
- it runs fine without the -scrutinizer command-line option.
I've confirmed this problem on experimental (df0bb192a6ac069e9d845d8445d96bf173e117fa: updated manifest) and 4.6.0. I'm running OpenBSD 4.8. C-Keen has confirmed this problem with Chicken 4.6.0.
Attachments (1)
Change History (5)
Changed 14 years ago by
Attachment: | testegg.scm added |
---|
comment:1 Changed 14 years ago by
Against my hopes this is not fixed by the specialization branch as of commit 06d7fd21a4651b7850381061c8ad9dc8ea0f5835
comment:2 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
I have (hopefully) fixed the problem in commit de033ae ("experimental"). It was caused by an incorrectly implemented type-comparison in scrutinizer.scm
.
Thanks for reporting.
match example that bugs out -scrutinize