Details
Description
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
Attachments
Issue Links
- 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
-