Hi
Who can help me. Since Version mkgmap-r4136 i get a error with my style. Error in style: Error: (points:179): Invalid rule expression: $mkgmap:admin_level2!=DEU & $name:en=$name:de
This is a bug in mkgmap. The attached patch fixes it. Thanks for reporting this problem. Steve
Index: src/uk/me/parabola/mkgmap/osmstyle/ExpressionArranger.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- src/uk/me/parabola/mkgmap/osmstyle/ExpressionArranger.java (revision 4140) +++ src/uk/me/parabola/mkgmap/osmstyle/ExpressionArranger.java (date 1521717514000) @@ -553,8 +553,7 @@ * True if this operation can be indexed. It is a plain equality or Exists operation. */ private static boolean isIndexable(Op op) { - return op.isType(EQUALS) - && ((ValueOp) op.getFirst()).isIndexable() && op.getSecond().isType(VALUE) + return op.isType(EQUALS) && ((ValueOp) op.getFirst()).isIndexable() && (op.getSecond().isType(VALUE) || op.getSecond().isType(FUNCTION)) || NEED_EXISTS.contains(op.getType()) && ((ValueOp) op.getFirst()).isIndexable() && (op.getSecond().isType(VALUE) || op.getSecond().isType(FUNCTION)) || op.isType(EXISTS) && ((ValueOp) op.getFirst()).isIndexable(); Index: test/uk/me/parabola/mkgmap/osmstyle/ExpressionArrangerTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- test/uk/me/parabola/mkgmap/osmstyle/ExpressionArrangerTest.java (revision 4140) +++ test/uk/me/parabola/mkgmap/osmstyle/ExpressionArrangerTest.java (date 1521714890000) @@ -28,6 +28,7 @@ import static org.junit.Assert.*; import static uk.me.parabola.mkgmap.osmstyle.ExpressionArranger.fmtExpr; import static uk.me.parabola.mkgmap.osmstyle.ExpressionArranger.isSolved; +import static uk.me.parabola.mkgmap.osmstyle.eval.NodeType.AND; import static uk.me.parabola.mkgmap.osmstyle.eval.NodeType.EQUALS; @@ -193,7 +194,18 @@ assertTrue(isSolved(op)); assertTrue(op.getFirst().getType() != NodeType.FUNCTION); } - + + @Test + public void testEqualTagValue() { + Op op = createOp("c!=d & a=$b"); + op = arranger.arrange(op); + Iterator<Op> it = arranger.prepareForSave(op); + op = it.next(); + assertEquals(AND, op.getType()); + assertEquals("$a=* & $a=$b & $c!=d", op.toString()); + System.out.println(op.toString()); + } + private Op createOp(String s) { TokenScanner scanner = new TokenScanner("test.file", new StringReader(s)); ExpressionReader er = new ExpressionReader(scanner, FeatureKind.POLYLINE);
_______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev