Hi Gerd
Thanks Gerd, that should be commited.
I tried adding a test for isSolved() at the end of the
ExpressionArranger and several tests failed. So there
may be other problems, but it seems to me that it is isSolved()
that has the problem. Needs more investigation.
The current problem was not caught by RuleTest as there were no
tests of '=' with no-indexable functions. I have added terms
like 'type()=way' which catches this error.
I don't see how we can make is_closed() indexable.
Steve
the problem is in the ExpressionArranger, it changes the order of the terms in
man_made=* & is_closed()=true {add area=yes; echotags 'mm'}
to
is_closed()=true & man_made=* {add area=yes; echotags 'mm'}
and thus creates an invalid input for the RuleIndex.
Attached patch fixes this problem, but I think we should add more code in
ExpressionArranger
to make sure that it never produces such an invalid input.
@Steve: I think ExpressionArranger should call isSolved()
and stop if that returns false. In that case it would be great to print an
error message
that shows the original expression and the file and line number of the rule
file.
When we add a check in RuleIndex we can only print the re-arranged rule and
that will
only confuse the user.
BTW: Maybe we can also change the code so that is_closed() is indexable?
Gerd
_______________________________________________
mkgmap-dev mailing list
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev