Parsing of YANG models fails if a deviation statement targets a node conditionally augmented based on a feature and the feature is not supported.
In the following example with two modules, foo & bar, parsing fails if foo-feature is not supported.
foo.yang
module foo { namespace "urn:foo"; prefix "foo"; feature foo-feature; container foo { } augment /foo:foo { if-feature foo-feature; leaf foo-leaf { type string; } } }
bar.yang
module bar { namespace "urn:bar"; prefix "bar"; import foo { prefix foo; } deviation /foo:foo/foo:foo-leaf { deviate not-supported; } }
Parsing fails after trying to find the deviation target foo-leaf:
Caused by: org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException: Deviation target 'Absolute{qnames=[(urn:foo)foo, foo-leaf]}' not found. [at /volumes/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1485/augment/bar.yang:9:3] at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.4-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.AbstractDeviateStatementSupport$1.prerequisiteFailed(AbstractDeviateStatementSupport.java:167) at org.opendaylight.yangtools.yang.parser.reactor@10.0.4-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl.failModifier(ModifierImpl.java:86) at org.opendaylight.yangtools.yang.parser.reactor@10.0.4-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.failModifiers(SourceSpecificContext.java:375) at org.opendaylight.yangtools.yang.parser.reactor@10.0.4-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.addSourceExceptions(BuildGlobalContext.java:307) ... 80 more
- blocks
-
YANGTOOLS-1480 Fail to process deviation/augmentation from multiple modules
- Resolved
- relates to
-
YANGTOOLS-1370 NPE in parser reactor with if-feature inference
- Resolved