Opened 6 years ago
Last modified 6 years ago
#1690 closed defect
Specializations using "and" (and/or other macros) don't work properly — at Version 1
| Reported by: | sjamaan | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 5.3 |
| Component: | unknown | Version: | 5.2.0 |
| Keywords: | specialization | Cc: | |
| Estimated difficulty: | medium |
Description (last modified by )
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.
Change History (1)
comment:1 Changed 6 years ago by
| Description: | modified (diff) |
|---|---|
| Summary: | Specialization breaks "and" macro? → Specializations using "and" (and/or other macros) don't work properly |
Note: See
TracTickets for help on using
tickets.
