Skip to content

Commit 26659ba

Browse files
committed
Flatten Variable Derivation Chains
1 parent 8685353 commit 26659ba

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

liquidjava-verifier/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>io.github.liquid-java</groupId>
1313
<artifactId>liquidjava-verifier</artifactId>
14-
<version>0.0.8</version>
14+
<version>0.0.10</version>
1515
<name>liquidjava-verifier</name>
1616
<description>LiquidJava Verifier</description>
1717
<url>https://github.com/liquid-java/liquidjava</url>

liquidjava-verifier/src/main/java/liquidjava/rj_language/opt/ConstantPropagation.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ private static ValDerivationNode propagateRecursive(Expression exp, Map<String,
4747
DerivationNode previousOrigin = varOrigins.get(name);
4848

4949
// preserve origin if value came from previous derivation
50-
DerivationNode origin = previousOrigin != null ? new VarDerivationNode(name, previousOrigin)
51-
: new VarDerivationNode(name);
50+
DerivationNode origin = flattenVarOrigin(name, previousOrigin);
5251
return new ValDerivationNode(value.clone(), origin);
5352
}
5453

@@ -138,4 +137,15 @@ private static void extractVarOrigins(ValDerivationNode node, Map<String, Deriva
138137
extractVarOrigins(valOrigin, varOrigins);
139138
}
140139
}
140+
141+
/**
142+
* Flattens variable derivations to avoid redundancy by collapsing var -> var chains
143+
* If the origin is a VarDerivationNode, we use its variable name and origin instead
144+
*/
145+
private static VarDerivationNode flattenVarOrigin(String varName, DerivationNode origin) {
146+
if (origin instanceof VarDerivationNode varOrigin) {
147+
return flattenVarOrigin(varOrigin.getVar(), varOrigin.getOrigin()); // recursively flatten
148+
}
149+
return origin != null ? new VarDerivationNode(varName, origin) : new VarDerivationNode(varName);
150+
}
141151
}

0 commit comments

Comments
 (0)