[YANGTOOLS-1283] SchemaInferenceStack is cannot handle leafs under choice/case Created: 03/May/21  Updated: 03/May/21  Resolved: 03/May/21

Status: Resolved
Project: yangtools
Component/s: model-util
Affects Version/s: 7.0.0
Fix Version/s: 7.0.1

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


 Description   

Attempting to resolve a leafref path via SchemaInferenceStack results in:

java.lang.IllegalStateException: Unexpected current DeclaredCaseEffectiveStatement[qname=(urn:ietf:params:xml:ns:yang:ietf-te-topology?revision=2020-08-06)bundle] 
    at com.google.common.base.Preconditions.checkState (Preconditions.java:591) 
    at org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.exitToDataTree (SchemaInferenceStack.java:483) 
    at org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.resolveLocationPath (SchemaInferenceStack.java:573) 
    at org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.resolvePathExpression (SchemaInferenceStack.java:523) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.strictResolvePath (GeneratorReactor.java:306) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.resolveLeafref (GeneratorReactor.java:297) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.AbstractTypeObjectGenerator.bindTypeDefinition (AbstractTypeObjectGenerator.java:323) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.AbstractTypeAwareGenerator.bindTypeDefinition (AbstractTypeAwareGenerator.java:53) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.bindTypeDefinition (GeneratorReactor.java:399) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.bindTypeDefinition (GeneratorReactor.java:401) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.bindTypeDefinition (GeneratorReactor.java:401) 
    at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.execute (GeneratorReactor.java:155) 
    at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateFor (DefaultBindingGenerator.java:78) 
    at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateTypes (DefaultBindingGenerator.java:48) 
    at org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl.generateSources (CodeGeneratorImpl.java:79) 
    at org.opendaylight.yangtools.yang2sources.plugin.CodeGeneratorTask.execute (CodeGeneratorTask.java:49) 
    at org.opendaylight.yangtools.yang2sources.plugin.CodeGeneratorTask.execute (CodeGeneratorTask.java:24) 
    at org.opendaylight.yangtools.yang2sources.plugin.GeneratorTask.execute (GeneratorTask.java:36) 
    at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSources (YangToSourcesProcessor.java:335) 
    at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.conditionalExecute (YangToSourcesProcessor.java:214) 
    at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesMojo.execute (YangToSourcesMojo.java:139)

when faced with something like:

module foo {
  container foo {
    choice foo {
      case foo {
        leaf foo {
          type leafref {
            path ../../bar;
          }
        }
      }
    }
  }

  leaf bar {
    type string;
  }
}

 

 


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