summaryrefslogtreecommitdiff
path: root/doc/bugs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-05-24 21:33:54 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-05-24 21:46:33 -0400
commitb2a2c996ad935e87b1f28eb77d12a895986073af (patch)
tree13f55b5e0e6d57ee87f09d2123b10ebbbfc0473e /doc/bugs
parentd4aec55d1c815eb5c9a2264de1d5ca2bad31bf8c (diff)
Fix bug in parsing of parens in some preferred content expressions. This fixes the behavior of the manual mode group.
The current manual mode preferred content expression is: "present and (((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) or (not copies=semitrusted+:1))" The old matcher misparsed this, to basically: OR (present and (...)) (not copies=semitrusted+:1)) The paren handling and indeed the whole conversion from tokens to the matcher was just wrong. The new way may not be the cleverest, but I think it is correct, and you can see how it pattern matches structurally against the expressions when parsing them. That expression is now parsed to: MAnd (MOp <function>) (MOr (MOr (MAnd (MOp <function>) (MOp <function>)) (MNot (MOr (MOp <function>) (MOp <function>)))) (MNot (MOp <function>))) Which appears correct, and behaves correct in testing. Also threw in a simplifier, so the final generated Matcher has less unnecessary clutter in it. Mostly so that I could more easily read & confirm them. Also, added a simple test of the Matcher to the test suite. There is a small chance of badly formed preferred content expressions behaving differently than before due to this rewrite.
Diffstat (limited to 'doc/bugs')
-rw-r--r--doc/bugs/Manual_content_mode_isn__39__t_manual.mdwn5
1 files changed, 5 insertions, 0 deletions
diff --git a/doc/bugs/Manual_content_mode_isn__39__t_manual.mdwn b/doc/bugs/Manual_content_mode_isn__39__t_manual.mdwn
index 3bbf298ed..cb0247766 100644
--- a/doc/bugs/Manual_content_mode_isn__39__t_manual.mdwn
+++ b/doc/bugs/Manual_content_mode_isn__39__t_manual.mdwn
@@ -82,3 +82,8 @@ To /home/valorin/workspace/tmp/test2
Everything up-to-date
Everything up-to-date
"""]]
+
+> It turns out there was a bug in the preferred content expression parser,
+> that made it parse the expression for manual mode (but I think no other standard
+> expression) quite wrong, as if it had parens in the wrong place. This explains
+> the broken behavior. [[fixed|done]] --[[Joey]]