Eliminate ReactorStmtCtx.boolFlag
[yangtools.git] / parser / yang-parser-reactor / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / ReplicaStatementContext.java
index c0872c56712a32c44b444c3835b37422dcaac7bc..3e00865a2727fbdc1b7d4593875e5a03ec590aa7 100644 (file)
@@ -34,6 +34,8 @@ final class ReplicaStatementContext<A, D extends DeclaredStatement<A>, E extends
         extends ReactorStmtCtx<A, D, E> {
     private final StatementContextBase<?, ?, ?> parent;
     private final ReactorStmtCtx<A, D, E> source;
+    // We need to drop source's reference count when we are being swept.
+    private final boolean haveSourceRef;
 
     ReplicaStatementContext(final StatementContextBase<?, ?, ?> parent, final ReactorStmtCtx<A, D, E> source) {
         super(source, null);
@@ -41,6 +43,9 @@ final class ReplicaStatementContext<A, D extends DeclaredStatement<A>, E extends
         this.source = requireNonNull(source);
         if (source.isSupportedToBuildEffective()) {
             source.incRef();
+            haveSourceRef = true;
+        } else {
+            haveSourceRef = false;
         }
     }
 
@@ -146,7 +151,7 @@ final class ReplicaStatementContext<A, D extends DeclaredStatement<A>, E extends
 
     @Override
     int sweepSubstatements() {
-        if (haveSourceReference()) {
+        if (haveSourceRef) {
             source.decRef();
         }
         return 0;