]> Cypherpunks repositories - keks.git/commitdiff
Existence check does not play any role for root element
authorSergey Matveev <stargrave@stargrave.org>
Sat, 28 Jun 2025 09:17:34 +0000 (12:17 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 28 Jun 2025 09:18:22 +0000 (12:18 +0300)
tcl/schema.tcl

index db7007d1be474386dcb9b41a8df05e00742a710a52c098ce8ad332182483000f..30d193da242374871cf85bc4e15ab855f5bc6fb460af37a509a8e738b2aba985 100755 (executable)
@@ -61,6 +61,11 @@ proc field {k types args} {
     upvar _cmds _cmds buf buf
     if {$k != "."} {
         lappend _cmds [TAKE $k]
+        if {[lsearch -exact $args !exists] != -1} {
+            lappend _cmds [!EXISTS]
+        } elseif {[lsearch -exact $args optional] == -1} {
+            lappend _cmds [EXISTS]
+        }
     }
     if {[lindex $types 0] == "with"} {
         lappend _cmds [SCHEMA [lindex $types 1]]
@@ -77,11 +82,6 @@ proc field {k types args} {
         lappend _cmds [TYPE {NIL}]
         lappend _cmds [TAKE $k]
     }
-    if {[lsearch -exact $args !exists] != -1} {
-        lappend _cmds [!EXISTS]
-    } elseif {[lsearch -exact $args optional] == -1} {
-        lappend _cmds [EXISTS]
-    }
     set i [lsearch -glob $args "len=*"]
     if {$i != -1} {
         set n [string range [lindex $args $i] 4 end]