<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:56:25 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[YANGTOOLS-1532] Fail to parse YANG module with a node with if-feature augmented within grouping</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1532</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Parsing of a YANG module fails when the module has the following schema:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;A node with &lt;tt&gt;if-feature&lt;/tt&gt; is augmented to a grouping within another grouping&lt;/li&gt;
	&lt;li&gt;The augmented node has a sibling node under the same &lt;tt&gt;augment&lt;/tt&gt; statement but the sibling does not have &lt;tt&gt;if-feature&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;the augmentation target node is augmented again when the grouping is used.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For example, the following YANG modules cannot be compiled if the feature (&lt;tt&gt;foo:alpha&lt;/tt&gt;) is not supported:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;module foo {
  namespace &quot;urn:foo&quot;;
  prefix &quot;foo&quot;;

  feature alpha;

  grouping foo-group {
    container foo;
  }

  grouping bar-group {
    uses foo-group {
      augment foo {
        leaf bar1 {
          if-feature alpha;
          type string;
        }
        leaf bar2 {
          type string;
        }
      }
    }
  }    

  uses bar-group {
    augment foo {
      leaf baz {
        type string;
      }
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This happens even when the sibling node is just &lt;tt&gt;description&lt;/tt&gt;.&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;module foo {
  namespace &quot;urn:foo&quot;;
  prefix &quot;foo&quot;;

  feature alpha;

  grouping foo-group {
    container foo;
  }

  grouping bar-group {
    uses foo-group {
      augment foo {
        description &quot;augmentation to foo&quot;;
        leaf bar1 {
          if-feature alpha;
          type string;
        }
        leaf bar2 {
          if-feature alpha;
          type string;
        }
      }
    }
  }    

  uses bar-group {
    augment foo {
      leaf baz {
        type string;
      }
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The issue goes away if &lt;tt&gt;description&lt;/tt&gt; is removed.&lt;/p&gt;

&lt;p&gt;The following shows the backtrace when this error happens - it complains that &quot;Leaf is missing a &apos;type&apos; statement&quot;:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;Caused by: org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException: Some of EFFECTIVE_MODEL modifiers for statements were not resolved.
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.propagateException(BuildGlobalContext.java:199)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.transformEffective(BuildGlobalContext.java:213)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:174)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:231)
	at org.opendaylight.yangtools.yang.parser.rfc7950@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.stmt.TestUtils.loadModules(TestUtils.java:79)
	at org.opendaylight.yangtools.yang.parser.rfc7950@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.stmt.TestUtils.loadModules(TestUtils.java:64)
	at org.opendaylight.yangtools.yang.parser.rfc7950@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.stmt.AbstractYangTest.assertEffectiveModelDir(AbstractYangTest.java:62)
	... 129 more
Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Leaf is missing a &apos;type&apos; statement [at /Users/sangwook/Dev/Projects/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1532/augment-with-no-description-one-leaf-with-if-feature/foo.yang:14:9]
	at org.opendaylight.yangtools.yang.parser.spi@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.source.SourceException.throwIfNull(SourceException.java:205)
	at org.opendaylight.yangtools.yang.parser.rfc7950@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LeafStatementSupport.validateEffective(LeafStatementSupport.java:107)
	at org.opendaylight.yangtools.yang.parser.rfc7950@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LeafStatementSupport.createEffective(LeafStatementSupport.java:93)
	at org.opendaylight.yangtools.yang.parser.rfc7950@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LeafStatementSupport.createEffective(LeafStatementSupport.java:45)
	at org.opendaylight.yangtools.yang.parser.spi@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:75)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:137)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:122)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:419)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:377)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:373)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.canReuseCurrent(StatementContextBase.java:743)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.asEffectiveChildOf(StatementContextBase.java:737)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.effectiveCopy(InferredStatementContext.java:614)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.effectiveCopy(InferredStatementContext.java:591)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReusePrototype(InferredStatementContext.java:265)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createEffective(InferredStatementContext.java:224)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:419)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:377)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:373)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.opendaylight.yangtools.yang.parser.spi@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements(AbstractStatementSupport.java:129)
	at org.opendaylight.yangtools.yang.parser.spi@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:75)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:137)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createInferredEffective(AbstractResumedStatement.java:209)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createInferredEffective(InferredStatementContext.java:235)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createInferredEffective(InferredStatementContext.java:228)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createEffective(InferredStatementContext.java:224)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:419)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:377)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:373)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.opendaylight.yangtools.yang.parser.spi@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements(AbstractStatementSupport.java:129)
	at org.opendaylight.yangtools.yang.parser.rfc7950@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.module.ModuleStatementSupport.buildEffectiveSubstatements(ModuleStatementSupport.java:190)
	at org.opendaylight.yangtools.yang.parser.spi@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:75)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:137)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:122)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:419)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:377)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:373)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.effectiveRoot(SourceSpecificContext.java:227)
	at org.opendaylight.yangtools.yang.parser.reactor@11.0.1-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.transformEffective(BuildGlobalContext.java:211)
	... 134 more
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This issue affects parsing of &lt;a href=&quot;https://github.com/YangModels/yang/blob/main/standard/ietf/RFC/ietf-subscribed-notifications%402019-09-09.yang#L599&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ietf-subscribed-notifications@2019-09-09.yang&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="37193">YANGTOOLS-1532</key>
            <summary>Fail to parse YANG module with a node with if-feature augmented within grouping</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="rovarga">Robert Varga</assignee>
                                    <reporter username="sangwookha">Sangwook Ha</reporter>
                        <labels>
                            <label>pt</label>
                    </labels>
                <created>Thu, 10 Aug 2023 23:05:12 +0000</created>
                <updated>Tue, 17 Oct 2023 19:24:16 +0000</updated>
                            <resolved>Tue, 17 Oct 2023 19:24:16 +0000</resolved>
                                    <version>11.0.0</version>
                    <version>9.0.8</version>
                    <version>10.0.9</version>
                                    <fixVersion>12.0.0</fixVersion>
                    <fixVersion>9.0.9</fixVersion>
                    <fixVersion>11.0.4</fixVersion>
                    <fixVersion>10.0.11</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                        <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i04693:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>