Fix uses-refine statement reference counting
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / uses / UsesStatementSupport.java
index 72cf842b13a026791285276115cff06a49ccd1e0..1aaee67cd9e7b94ffe9dcaabea09e0c3d0d7add2 100644 (file)
@@ -341,14 +341,13 @@ public final class UsesStatementSupport
                 refineSubstatementCtx.getRoot().rawArgument(), refineSubstatementCtx.coerceParentContext().argument(),
                 refineSubstatementCtx.publicDefinition(), refineTargetNodeCtx.publicDefinition());
 
-        if (isAllowedToAddByRefine(refineSubstatementDef)) {
-            refineTargetNodeCtx.addEffectiveSubstatement(refineSubstatementCtx);
-        } else {
+        if (!isAllowedToAddByRefine(refineSubstatementDef)) {
             refineTargetNodeCtx.removeStatementFromEffectiveSubstatements(refineSubstatementDef);
-            refineTargetNodeCtx.addEffectiveSubstatement(refineSubstatementCtx);
         }
+        refineTargetNodeCtx.addEffectiveSubstatement(refineSubstatementCtx.replicaAsChildOf(refineTargetNodeCtx));
     }
 
+    // FIXME: clarify this and inline into single caller
     private static boolean isAllowedToAddByRefine(final StatementDefinition publicDefinition) {
         return YangStmtMapping.MUST.equals(publicDefinition);
     }