> > I adjusted the typecheck to allow multiple keys and labels inside a > > subtree. We have to check that concat keys doesn't overlap, and that > > union is disjoint. Hence: > > > > let lns = key /[a]*/ . key /[a]*/ => concat.get ambiguity > > let lns = key "a" | label "a" => union.put ambiguity
> Is it really necessary to introduce the atype_complete flag ? Doesn't > the fact whether the atype is NULL tell us that ? I tried to set atype to NULL, but it was cumbersome because the number of groups in the regexp was not matching anymore the lens hierarchy, and not was creating a lot of corner cases. It was necessary, because the atype is really important at subtree and above, inside a subtree, only ktype and vtype should be taken into account for typechecking. > The abstract type of a lens is really a tree language; but since dealing > with those is a little involved, we used as the atype the regular > language describing possible key/value pairs of the children of a node, > i.e. we disregarded the key and value of the node. Let's continue > calling that the atype, as it is in the code. One effect of this > simplification is that the typechecker would trip over false positives. Yeah, for example : dels "x" | dels "y" was reported as union.put ambiguous, because both have atype=() Francis _______________________________________________ augeas-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/augeas-devel
