[YANGTOOLS-1471] Fail to process unsupported augment statement Created: 04/Dec/22  Updated: 31/Dec/22  Resolved: 31/Dec/22

Status: Resolved
Project: yangtools
Component/s: parser
Affects Version/s: 10.0.1, 8.0.9, 9.0.5
Fix Version/s: 8.0.10, 9.0.6, 10.0.3

Type: Bug Priority: Medium
Reporter: Sangwook Ha Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 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

Generated at Wed Feb 07 20:56:14 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.