@@ -128,6 +128,32 @@ void testRepeatedEqualDefinitionCountsAsUsageBeforeDefinitionConjunct() {
128128 assertEquals ("2" , result .get ("mode" ).toString ());
129129 }
130130
131+ @ Test
132+ void testRepeatedFunctionInvocationDefinitionCountsAsUsage () {
133+ Expression expression = parse ("modeOf(param) == 2 && (modeOf(param) == 2 ? explicit(param) : start(param))" );
134+ Map <String , Expression > result = VariableResolver .resolve (expression );
135+
136+ assertEquals (1 , result .size (), "Function invocation definition should count repeated nested equality as usage" );
137+ assertEquals ("2" , result .get ("modeOf(param)" ).toString ());
138+ }
139+
140+ @ Test
141+ void testRepeatedExpressionDefinitionCountsAsUsage () {
142+ Expression expression = parse ("limit == max - 1 && (limit == max - 1 ? a(p) : b(p))" );
143+ Map <String , Expression > result = VariableResolver .resolve (expression );
144+
145+ assertEquals (1 , result .size (), "Expression definition should count repeated nested equality as usage" );
146+ assertEquals ("max - 1" , result .get ("limit" ).toString ());
147+ }
148+
149+ @ Test
150+ void testRepeatedTopLevelDefinitionsOnlyDoNotCountAsUsage () {
151+ Expression expression = parse ("mode == 2 && mode == 2" );
152+ Map <String , Expression > result = VariableResolver .resolve (expression );
153+
154+ assertTrue (result .isEmpty (), "Repeated top-level definitions alone should not count as usage" );
155+ }
156+
131157 @ Test
132158 void testReturnVariableIsNotSubstituted () {
133159 Expression expression = parse ("x > 0 && #ret_1 == x" );
0 commit comments