﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	difficulty
1690	"Specializations using ""and"" (and/or other macros) don't work properly"	sjamaan		"[[https://lists.gnu.org/archive/html/chicken-hackers/2020-03/msg00012.html|Reported]] by Kon Lovett:

{{{
cat >matches-prob-test.scm <<'HERE'
(import scheme)
(import (chicken irregex))

(define (uses-predicate str)
  (and
    (string? str)
    (irregex-match? '(: ""foo"") str) ) )

(print ""uses-predicate: "" (uses-predicate """"))
HERE

csc ./matches-prob-test.scm
./matches-prob-test
#uses-predicate: #f                                                                                             

csc -specialize ./matches-prob-test.scm
./matches-prob-test
#Error: unbound variable: and                                                                                   
}}}

Interestingly, this goes all the way back to 4.9.0; in 4.8.0.5 this program (with suitable changes for C4) works as expected with `-specialize`.

It looks like the `and` that's being complained about is the one in the `irregex-match?` specialization in `types.db`.  This makes sense if the specialization is the last thing that happens, there's no more macro expansion step and stuff will break."	defect	closed	major	5.3	unknown	5.2.0	fixed	specialization		medium
