Hi, "Bogaert, Bart (Nokia - BE/Antwerp)" <[email protected]> wrote: > Hi, > > We have a question on YANG module compilation. Assume the following > model: > > module test-feat-compile { > yang-version 1.1; > namespace "http://www.example.com/test-feat-compile"; > prefix "tfc"; > > identity failure-reason { > description > "The reason a failure occurred."; > } > > identity no-failure { > description > "No failure has occurred."; > } > > identity general-error { > base failure-reason; > description > "A general error occurred."; > } > > container failure { > description > "Objects associated with a failure."; > > leaf failure-reason { > type identityref { > base failure-reason; > } > description > "The reason the failure occurred."; > } > > leaf failure-string { > when "../failure-reason != 'no-failure'" { > description > "Only valid when there is a failure."; > } > type string; > description > "A text string indicating the reason for the failure when > either no defined reason exists or additional information > is available beyond the definition of the reason."; > } > } > } > > Looking at the when clause there is something obviously wrong (at > least this is how I see it): > > * The leaf 'failure-reason' is of type identityref with 'failure-reason' > as base > * Identity 'no-failure' does not have 'failure-reason' as base (see it > as having been forgotten) > Question is: shouldn't this be reported at compile time? Pyang > doesn't and the other compiler we use doesn't report this either. > > Even when 'no-failure' is modified into some arbitrary string it is > still accepted while this arbitrary string is not defined anywhere as > identity. > > And when it comes to the correct syntax, RFC 7950 states (section > 9.1.3) that identities in must and when statements should be prefixed > (so tfc:no-failure in this case). Also this "violation" passes. > > So: what can we expect to be checked at compile time in this case? > Now you can only detect these anomalies when using a system supporting > the modules and detect that things do not work as intended. It would > be better to have these erroneous constructions being detected at > compile time. If there is something in the RFC that allows the > compiler to behave as it does now it would be good to know.
Strictly speaking, the "when" expressions are not erroneous; they are proper XPath expressions that happen to always return "false". A good compiler could detect this and produce a warning, but it would be incorrect to flag this as an error. /martin _______________________________________________ netmod mailing list [email protected] https://www.ietf.org/mailman/listinfo/netmod
