Add parent refcount cache
[yangtools.git] / yang / yang-parser-reactor / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / InferredStatementContext.java
index b3f7278a884c32f1c12dded48f8ab356a05bac72..0119c6bc329b9526f867bc8f07bf9397898add43 100644 (file)
@@ -247,8 +247,8 @@ final class InferredStatementContext<A, D extends DeclaredStatement<A>, E extend
 
         @SuppressWarnings("unchecked")
         final Mutable<QName, Y, Z> ret = (Mutable<QName, Y, Z>) copySubstatement((Mutable<?, ?, ?>) template)
-            .orElseThrow(() -> new InferenceException(sourceReference(),
-                "Failed to materialize child %s template %s", qname, template));
+            .orElseThrow(
+                () -> new InferenceException(this, "Failed to materialize child %s template %s", qname, template));
         ensureCompletedPhase(ret);
         addMaterialized(template, ret);
 
@@ -294,6 +294,14 @@ final class InferredStatementContext<A, D extends DeclaredStatement<A>, E extend
         verify(substatements != SWEPT_SUBSTATEMENTS, "Attempted to access substatements of %s", this);
     }
 
+    @Override
+    void markNoParentRef() {
+        final Object local = substatements;
+        if (local != null) {
+            markNoParentRef(castEffective(local));
+        }
+    }
+
     @Override
     int sweepSubstatements() {
         final Object local = substatements;