Details
Description
Parsing of a data model with an augment statement with if-feature sub-statement fails if
- the feature is not supported
- the augment statement targets a node defined with a nested grouping and dependent on the feature
For example, parsing of the following example fails when bar-feature is not supported:
module foo {
namespace "urn:foo";
prefix "foo";
feature bar-feature;
grouping baz-group {
container baz;
}
grouping bar-group {
container bar {
if-feature bar-feature;
uses baz-group;
}
}
container foo {
uses bar-group;
}
augment "/foo/bar/baz" {
if-feature bar-feature;
leaf baz-leaf {
type string;
}
}
}
Parser complains that /foo/bar/baz does not exist but it shouldn't attempt to augment the path:
Caused by: org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException: Augment target 'Absolute{qnames=[(urn:foo)foo, bar, baz]}' not found [at /volumes/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1471/augment-if-feature-nested-grouping/foo.yang:22:3]
at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.2-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentInferenceAction.prerequisiteFailed(AugmentInferenceAction.java:109)
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)
... 51 more