Details
-
Type:
Defect
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Completed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
-
Environment:Clojure 1.3
Leiningen 1.7.1 on Java 1.6.0_26
core.match "0.2.0-alpha9"
Description
The following source example:
https://github.com/narkisr/match-issue/blob/master/src/match_issue/core.clj
The defrule macro calls a function called lhs that use the match library,
this function calls it self recursively and print out the rest of body left to be matched,
When running lein compile two different results appear (in non deterministic fashion):
(when $message :> Message (== level 6) :from (entry-point event-stream))
($message :> Message (== level 6) :from (entry-point event-stream))
(Message (== level 6) :from (entry-point event-stream))
((== level 6) :from (entry-point event-stream))
This is the bug, as (== level 6) should be matched by:
[([([(o :when operator?) f s] :seq) :as c & r] :seq)]
In other cases the output is (the correct one):
(when $message :> Message (== level 6) :from (entry-point event-stream))
($message :> Message (== level 6) :from (entry-point event-stream))
(Message (== level 6) :from (entry-point event-stream))
((== level 6) :from (entry-point event-stream))
(:from (entry-point event-stream))
(entry-point event-stream)
()
()
Activity
| Field | Original Value | New Value |
|---|---|---|
| Priority | Critical [ 2 ] | Minor [ 4 ] |
| Priority | Minor [ 4 ] | Major [ 3 ] |
| Resolution | Completed [ 1 ] | |
| Status | Open [ 1 ] | Resolved [ 5 ] |