-
Improvement
-
Resolution: Done
-
Highest
-
None
-
None
-
None
-
Operating System: All
Platform: All
In order to implement efficient grouping inlining with working augment/deviate statements, we need to have the concept of a node which represents a tree of potential nodes. This cannot be realized via internals of parser.stmt.reactor because it changes the mechanics of how NamespaceBehaviours work.
Current design assumption is that namespaces are populated eagerly with key/value pairs and inference actions can be registered to respond to those key/values.
Efficient inlining (YANGTOOLS-694) requires that not all nodes are instantiated, which would lead to under-populated namespaces and listeners not triggering, all of which is centered about StmtContext and StmtContext.Mutable.
Currently the only use of listeners is to perform mutation, which simplifies the contract, as we really need to have a way to:
- understand that a node represents a tree (and is otherwise a StmtContext.Mutable)
- understand that a listener is interested in some of its children
- request such a node to give us a StmtContext.Mutable representation of its specific child (potentially again a MutableTree)
Further simplification comes from the fact that we need this to work only in one specific namespace, which is ChildSchemaNodeNamespace.
- blocks
-
YANGTOOLS-694 Eliminate duplicate DescriptionEffectiveStatementImpl objects
- Resolved
- is blocked by
-
YANGTOOLS-1155 Reactor may fail if listeners fire recursively
- Resolved
- relates to
-
YANGTOOLS-956 Augment of mandatory leaf not allowed from within submodule
- Resolved