diff roundup/backends/back_anydbm.py @ 6399:f3fcd6628c0c

Allow '-1' (empty) in multilink expression
author Ralf Schlatterbeck <rsc@runtux.com>
date Sat, 08 May 2021 09:45:38 +0200
parents 75a53956cf13
children 8bc5faeb7677
line wrap: on
line diff
--- a/roundup/backends/back_anydbm.py	Fri May 07 22:26:37 2021 -0400
+++ b/roundup/backends/back_anydbm.py	Sat May 08 09:45:38 2021 +0200
@@ -77,6 +77,14 @@
     def visit(self, visitor):
         visitor(self)
 
+class Empty(Unary):
+
+    def evaluate(self, v):
+        return not v
+
+    def visit(self, visitor):
+        visitor(self)
+
 class Not(Unary):
 
     def evaluate(self, v):
@@ -110,7 +118,8 @@
     stack = []
     push, pop = stack.append, stack.pop
     for opcode in opcodes:
-        if   opcode == -2: push(Not(pop()))
+        if   opcode == -1: push(Empty(opcode))
+        elif opcode == -2: push(Not(pop()))
         elif opcode == -3: push(And(pop(), pop()))
         elif opcode == -4: push(Or(pop(), pop()))
         else:              push(Equals(opcode))

Roundup Issue Tracker: http://roundup-tracker.org/