Details
Description
Parser fails to find the argument node of a unique statement if a node is augmented to the list with the unique statement.
For example, in the following example a node (foo-leaf) is augmented to the list (bar-list) with a unique statement (unique bar-leaf2;):
module foo {
namespace "urn:foo";
prefix "foo";
import bar {
prefix bar;
}
container foo {
uses bar:bar-group;
}
augment "/foo:foo/foo:bar-list" {
leaf foo-leaf {
type string;
}
}
}
module bar {
namespace "urn:bar";
prefix "bar";
grouping bar-group {
list bar-list {
key bar-leaf1;
unique bar-leaf2;
leaf bar-leaf1 {
type string;
}
leaf bar-leaf2 {
type string;
}
}
}
}
and parser complains that the argument node bar-leaf2 does not exist.
Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Following components of unique statement argument refer to non-existent nodes: [Descendant{qnames=[(urn:bar)bar-leaf2]}] [at /volumes/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1470/bar.yang:8:7]
at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.2-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.UniqueStatementSupport$RequireLeafDescendants.prerequisiteFailed(UniqueStatementSupport.java:201)
at org.opendaylight.yangtools.yang.parser.reactor@10.0.2-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl.failModifier(ModifierImpl.java:86)
at org.opendaylight.yangtools.yang.parser.reactor@10.0.2-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.failModifiers(SourceSpecificContext.java:375)
at org.opendaylight.yangtools.yang.parser.reactor@10.0.2-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.addSourceExceptions(BuildGlobalContext.java:307)
... 50 more