@rcrsr/rill 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,22 +4,29 @@
4
4
  */
5
5
  import type { ValidationRule } from '../types.js';
6
6
  /**
7
- * Validates that $ is used as accumulator in while/do-while loops.
7
+ * Validates that variables captured in loop bodies aren't referenced in conditions.
8
8
  *
9
9
  * In while and do-while loops, $ serves as the accumulator across iterations.
10
- * Variables captured inside the loop body exist only within that iteration.
10
+ * Variables captured inside the loop body exist only within that iteration, so
11
+ * referencing them in the loop condition is a logic error - the condition will
12
+ * always see undefined (or the outer scope variable if one exists).
11
13
  *
12
- * Good pattern ($ accumulates):
14
+ * Error pattern (captured variable in condition):
15
+ * 0 -> ($x < 5) @ { # $x is undefined in condition
16
+ * $ :> $x
17
+ * $x + 1
18
+ * }
19
+ *
20
+ * Correct pattern ($ as accumulator):
13
21
  * 0 -> ($ < 5) @ { $ + 1 }
14
22
  *
15
- * Avoid pattern (named variables don't persist):
23
+ * Also correct (capture only used within iteration):
16
24
  * 0 -> ($ < 5) @ {
17
- * $ :> $x # $x exists only in this iteration
25
+ * $ :> $x
26
+ * log($x) # $x only used in body, not condition
18
27
  * $x + 1
19
28
  * }
20
29
  *
21
- * This is stylistic - both work, but $ is clearer for accumulation.
22
- *
23
30
  * References:
24
31
  * - docs/16_conventions.md:151-171
25
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"loops.d.ts","sourceRoot":"","sources":["../../../src/check/rules/loops.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,aAAa,CAAC;AAmGrB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gBAAgB,EAAE,cA0B9B,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,EAAE,cA2B7B,CAAC;AAMF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,QAAQ,EAAE,cAmCtB,CAAC"}
1
+ {"version":3,"file":"loops.d.ts","sourceRoot":"","sources":["../../../src/check/rules/loops.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,aAAa,CAAC;AAmLrB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAyC9B,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,EAAE,cA2B7B,CAAC;AAMF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,QAAQ,EAAE,cAmCtB,CAAC"}
@@ -7,50 +7,114 @@ import { extractContextLine } from './helpers.js';
7
7
  // HELPER FUNCTIONS
8
8
  // ============================================================
9
9
  /**
10
- * Check if a loop body contains variable captures.
11
- * Returns true if any captures are found in the body.
10
+ * Collect all variable captures (:> $name) in the given AST node.
12
11
  */
13
- function containsCaptures(node) {
12
+ function collectCaptures(node, names) {
14
13
  switch (node.type) {
15
14
  case 'Capture':
16
- return true;
15
+ names.push(`$${node.name}`);
16
+ return;
17
17
  case 'Block':
18
- return node.statements.some((stmt) => containsCaptures(stmt));
18
+ node.statements.forEach((stmt) => collectCaptures(stmt, names));
19
+ return;
19
20
  case 'Statement':
20
- return containsCaptures(node.expression);
21
+ collectCaptures(node.expression, names);
22
+ return;
21
23
  case 'AnnotatedStatement':
22
- return containsCaptures(node.statement);
24
+ collectCaptures(node.statement, names);
25
+ return;
23
26
  case 'PipeChain':
24
- if (node.pipes.some((pipe) => containsCaptures(pipe)))
25
- return true;
27
+ node.pipes.forEach((pipe) => collectCaptures(pipe, names));
26
28
  if (node.terminator && node.terminator.type === 'Capture')
27
- return true;
28
- return false;
29
+ collectCaptures(node.terminator, names);
30
+ return;
29
31
  case 'PostfixExpr':
30
- if (containsCaptures(node.primary))
31
- return true;
32
- return node.methods.some((method) => containsCaptures(method));
32
+ collectCaptures(node.primary, names);
33
+ node.methods.forEach((method) => collectCaptures(method, names));
34
+ return;
33
35
  case 'BinaryExpr':
34
- return containsCaptures(node.left) || containsCaptures(node.right);
36
+ collectCaptures(node.left, names);
37
+ collectCaptures(node.right, names);
38
+ return;
35
39
  case 'UnaryExpr':
36
- return containsCaptures(node.operand);
40
+ collectCaptures(node.operand, names);
41
+ return;
37
42
  case 'GroupedExpr':
38
- return containsCaptures(node.expression);
43
+ collectCaptures(node.expression, names);
44
+ return;
39
45
  case 'Conditional':
40
- if (node.input && containsCaptures(node.input))
41
- return true;
42
- if (node.condition && containsCaptures(node.condition))
43
- return true;
44
- if (containsCaptures(node.thenBranch))
45
- return true;
46
- if (node.elseBranch && containsCaptures(node.elseBranch))
47
- return true;
48
- return false;
46
+ if (node.input)
47
+ collectCaptures(node.input, names);
48
+ if (node.condition)
49
+ collectCaptures(node.condition, names);
50
+ collectCaptures(node.thenBranch, names);
51
+ if (node.elseBranch)
52
+ collectCaptures(node.elseBranch, names);
53
+ return;
54
+ case 'WhileLoop':
55
+ case 'DoWhileLoop':
56
+ collectCaptures(node.body, names);
57
+ return;
58
+ default:
59
+ return;
60
+ }
61
+ }
62
+ /**
63
+ * Collect all variable references ($name) in the given AST node.
64
+ */
65
+ function collectVariableReferences(node, names) {
66
+ switch (node.type) {
67
+ case 'Variable':
68
+ // Add the variable name if it's not the pipe variable ($)
69
+ if (!node.isPipeVar && node.name) {
70
+ names.push(`$${node.name}`);
71
+ }
72
+ return;
73
+ case 'Block':
74
+ node.statements.forEach((stmt) => collectVariableReferences(stmt, names));
75
+ return;
76
+ case 'Statement':
77
+ collectVariableReferences(node.expression, names);
78
+ return;
79
+ case 'AnnotatedStatement':
80
+ collectVariableReferences(node.statement, names);
81
+ return;
82
+ case 'PipeChain':
83
+ collectVariableReferences(node.head, names);
84
+ node.pipes.forEach((pipe) => collectVariableReferences(pipe, names));
85
+ if (node.terminator)
86
+ collectVariableReferences(node.terminator, names);
87
+ return;
88
+ case 'PostfixExpr':
89
+ collectVariableReferences(node.primary, names);
90
+ node.methods.forEach((method) => collectVariableReferences(method, names));
91
+ return;
92
+ case 'BinaryExpr':
93
+ collectVariableReferences(node.left, names);
94
+ collectVariableReferences(node.right, names);
95
+ return;
96
+ case 'UnaryExpr':
97
+ collectVariableReferences(node.operand, names);
98
+ return;
99
+ case 'GroupedExpr':
100
+ collectVariableReferences(node.expression, names);
101
+ return;
102
+ case 'Conditional':
103
+ if (node.input)
104
+ collectVariableReferences(node.input, names);
105
+ if (node.condition)
106
+ collectVariableReferences(node.condition, names);
107
+ collectVariableReferences(node.thenBranch, names);
108
+ if (node.elseBranch)
109
+ collectVariableReferences(node.elseBranch, names);
110
+ return;
49
111
  case 'WhileLoop':
50
112
  case 'DoWhileLoop':
51
- return containsCaptures(node.body);
113
+ collectVariableReferences(node.condition, names);
114
+ collectVariableReferences(node.body, names);
115
+ return;
52
116
  default:
53
- return false;
117
+ return;
54
118
  }
55
119
  }
56
120
  /**
@@ -81,22 +145,29 @@ function callsRetryFunction(node) {
81
145
  // LOOP_ACCUMULATOR RULE
82
146
  // ============================================================
83
147
  /**
84
- * Validates that $ is used as accumulator in while/do-while loops.
148
+ * Validates that variables captured in loop bodies aren't referenced in conditions.
85
149
  *
86
150
  * In while and do-while loops, $ serves as the accumulator across iterations.
87
- * Variables captured inside the loop body exist only within that iteration.
151
+ * Variables captured inside the loop body exist only within that iteration, so
152
+ * referencing them in the loop condition is a logic error - the condition will
153
+ * always see undefined (or the outer scope variable if one exists).
88
154
  *
89
- * Good pattern ($ accumulates):
155
+ * Error pattern (captured variable in condition):
156
+ * 0 -> ($x < 5) @ { # $x is undefined in condition
157
+ * $ :> $x
158
+ * $x + 1
159
+ * }
160
+ *
161
+ * Correct pattern ($ as accumulator):
90
162
  * 0 -> ($ < 5) @ { $ + 1 }
91
163
  *
92
- * Avoid pattern (named variables don't persist):
164
+ * Also correct (capture only used within iteration):
93
165
  * 0 -> ($ < 5) @ {
94
- * $ :> $x # $x exists only in this iteration
166
+ * $ :> $x
167
+ * log($x) # $x only used in body, not condition
95
168
  * $x + 1
96
169
  * }
97
170
  *
98
- * This is stylistic - both work, but $ is clearer for accumulation.
99
- *
100
171
  * References:
101
172
  * - docs/16_conventions.md:151-171
102
173
  */
@@ -107,14 +178,26 @@ export const LOOP_ACCUMULATOR = {
107
178
  nodeTypes: ['WhileLoop', 'DoWhileLoop'],
108
179
  validate(node, context) {
109
180
  const loop = node;
110
- // Check if loop body contains captures
111
- if (containsCaptures(loop.body)) {
181
+ // Collect all variable captures in loop body
182
+ const capturedNames = [];
183
+ collectCaptures(loop.body, capturedNames);
184
+ if (capturedNames.length === 0) {
185
+ return []; // No captures, no problem
186
+ }
187
+ // Collect all variable references in loop condition
188
+ const conditionRefs = [];
189
+ collectVariableReferences(loop.condition, conditionRefs);
190
+ // Find captures that are referenced in the condition
191
+ const capturedSet = new Set(capturedNames);
192
+ const problematicVars = conditionRefs.filter((ref) => capturedSet.has(ref));
193
+ if (problematicVars.length > 0) {
194
+ const vars = [...new Set(problematicVars)].join(', ');
112
195
  return [
113
196
  {
114
197
  location: node.span.start,
115
198
  severity: 'info',
116
199
  code: 'LOOP_ACCUMULATOR',
117
- message: 'Use $ as accumulator in while/do-while. Variables captured inside loop body exist only within that iteration.',
200
+ message: `${vars} captured in loop body but referenced in condition; loop body variables reset each iteration`,
118
201
  context: extractContextLine(node.span.start.line, context.source),
119
202
  fix: null, // Complex fix - requires refactoring loop body
120
203
  },
@@ -1 +1 @@
1
- {"version":3,"file":"loops.js","sourceRoot":"","sources":["../../../src/check/rules/loops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loops.js","sourceRoot":"","sources":["../../../src/check/rules/loops.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rcrsr/rill",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Rill - An embeddable scripting language for orchestrating LLM workflows",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",