@aroman22/codegraph-vba-darwin-arm64 1.14.0 → 1.16.0

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.
Files changed (213) hide show
  1. package/lib/dist/bin/codegraph.js +13 -7
  2. package/lib/dist/bin/codegraph.js.map +1 -1
  3. package/lib/dist/bin/daemon-release.d.ts +7 -0
  4. package/lib/dist/bin/daemon-release.d.ts.map +1 -0
  5. package/lib/dist/bin/daemon-release.js +18 -0
  6. package/lib/dist/bin/daemon-release.js.map +1 -0
  7. package/lib/dist/db/queries.d.ts +30 -0
  8. package/lib/dist/db/queries.d.ts.map +1 -1
  9. package/lib/dist/db/queries.js +51 -1
  10. package/lib/dist/db/queries.js.map +1 -1
  11. package/lib/dist/extraction/access-erd-extractor.d.ts +57 -0
  12. package/lib/dist/extraction/access-erd-extractor.d.ts.map +1 -0
  13. package/lib/dist/extraction/access-erd-extractor.js +389 -0
  14. package/lib/dist/extraction/access-erd-extractor.js.map +1 -0
  15. package/lib/dist/extraction/extraction-version.d.ts +1 -1
  16. package/lib/dist/extraction/extraction-version.js +1 -1
  17. package/lib/dist/extraction/grammars.d.ts +20 -0
  18. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  19. package/lib/dist/extraction/grammars.js +34 -0
  20. package/lib/dist/extraction/grammars.js.map +1 -1
  21. package/lib/dist/extraction/index.d.ts +1 -0
  22. package/lib/dist/extraction/index.d.ts.map +1 -1
  23. package/lib/dist/extraction/index.js +371 -351
  24. package/lib/dist/extraction/index.js.map +1 -1
  25. package/lib/dist/extraction/parse-pool.d.ts +8 -3
  26. package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
  27. package/lib/dist/extraction/parse-pool.js +1 -2
  28. package/lib/dist/extraction/parse-pool.js.map +1 -1
  29. package/lib/dist/extraction/parse-worker.js +7 -6
  30. package/lib/dist/extraction/parse-worker.js.map +1 -1
  31. package/lib/dist/extraction/sql-query-extractor.d.ts +16 -14
  32. package/lib/dist/extraction/sql-query-extractor.d.ts.map +1 -1
  33. package/lib/dist/extraction/sql-query-extractor.js +43 -31
  34. package/lib/dist/extraction/sql-query-extractor.js.map +1 -1
  35. package/lib/dist/extraction/sql-table-scan.d.ts +184 -0
  36. package/lib/dist/extraction/sql-table-scan.d.ts.map +1 -0
  37. package/lib/dist/extraction/sql-table-scan.js +288 -0
  38. package/lib/dist/extraction/sql-table-scan.js.map +1 -0
  39. package/lib/dist/extraction/tree-sitter.d.ts +10 -1
  40. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  41. package/lib/dist/extraction/tree-sitter.js +34 -3
  42. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  43. package/lib/dist/extraction/vba/call-sweep.d.ts +2 -7
  44. package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
  45. package/lib/dist/extraction/vba/call-sweep.js +144 -90
  46. package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
  47. package/lib/dist/extraction/vba/calls.d.ts +24 -4
  48. package/lib/dist/extraction/vba/calls.d.ts.map +1 -1
  49. package/lib/dist/extraction/vba/calls.js +42 -12
  50. package/lib/dist/extraction/vba/calls.js.map +1 -1
  51. package/lib/dist/extraction/vba/constants.d.ts +7 -14
  52. package/lib/dist/extraction/vba/constants.d.ts.map +1 -1
  53. package/lib/dist/extraction/vba/constants.js +8 -36
  54. package/lib/dist/extraction/vba/constants.js.map +1 -1
  55. package/lib/dist/extraction/vba/context.d.ts +443 -7
  56. package/lib/dist/extraction/vba/context.d.ts.map +1 -1
  57. package/lib/dist/extraction/vba/context.js +325 -29
  58. package/lib/dist/extraction/vba/context.js.map +1 -1
  59. package/lib/dist/extraction/vba/controls.d.ts +18 -1
  60. package/lib/dist/extraction/vba/controls.d.ts.map +1 -1
  61. package/lib/dist/extraction/vba/controls.js +99 -27
  62. package/lib/dist/extraction/vba/controls.js.map +1 -1
  63. package/lib/dist/extraction/vba/declarations.d.ts +1 -6
  64. package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
  65. package/lib/dist/extraction/vba/declarations.js +5 -39
  66. package/lib/dist/extraction/vba/declarations.js.map +1 -1
  67. package/lib/dist/extraction/vba/dims.d.ts +11 -7
  68. package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
  69. package/lib/dist/extraction/vba/dims.js +265 -29
  70. package/lib/dist/extraction/vba/dims.js.map +1 -1
  71. package/lib/dist/extraction/vba/docmd.d.ts +29 -2
  72. package/lib/dist/extraction/vba/docmd.d.ts.map +1 -1
  73. package/lib/dist/extraction/vba/docmd.js +297 -18
  74. package/lib/dist/extraction/vba/docmd.js.map +1 -1
  75. package/lib/dist/extraction/vba/enums-consts.d.ts +7 -14
  76. package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
  77. package/lib/dist/extraction/vba/enums-consts.js +11 -45
  78. package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
  79. package/lib/dist/extraction/vba/error-channel.d.ts +57 -0
  80. package/lib/dist/extraction/vba/error-channel.d.ts.map +1 -0
  81. package/lib/dist/extraction/vba/error-channel.js +128 -0
  82. package/lib/dist/extraction/vba/error-channel.js.map +1 -0
  83. package/lib/dist/extraction/vba/errors.d.ts +64 -0
  84. package/lib/dist/extraction/vba/errors.d.ts.map +1 -0
  85. package/lib/dist/extraction/vba/errors.js +775 -0
  86. package/lib/dist/extraction/vba/errors.js.map +1 -0
  87. package/lib/dist/extraction/vba/filesystem-statements.d.ts +23 -0
  88. package/lib/dist/extraction/vba/filesystem-statements.d.ts.map +1 -0
  89. package/lib/dist/extraction/vba/filesystem-statements.js +70 -0
  90. package/lib/dist/extraction/vba/filesystem-statements.js.map +1 -0
  91. package/lib/dist/extraction/vba/implements.d.ts +1 -6
  92. package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
  93. package/lib/dist/extraction/vba/implements.js +1 -22
  94. package/lib/dist/extraction/vba/implements.js.map +1 -1
  95. package/lib/dist/extraction/vba/labels.d.ts +26 -0
  96. package/lib/dist/extraction/vba/labels.d.ts.map +1 -0
  97. package/lib/dist/extraction/vba/labels.js +180 -0
  98. package/lib/dist/extraction/vba/labels.js.map +1 -0
  99. package/lib/dist/extraction/vba/module-vars.d.ts +36 -0
  100. package/lib/dist/extraction/vba/module-vars.d.ts.map +1 -0
  101. package/lib/dist/extraction/vba/module-vars.js +145 -0
  102. package/lib/dist/extraction/vba/module-vars.js.map +1 -0
  103. package/lib/dist/extraction/vba/options.d.ts +88 -0
  104. package/lib/dist/extraction/vba/options.d.ts.map +1 -0
  105. package/lib/dist/extraction/vba/options.js +39 -0
  106. package/lib/dist/extraction/vba/options.js.map +1 -0
  107. package/lib/dist/extraction/vba/parameters.d.ts +35 -0
  108. package/lib/dist/extraction/vba/parameters.d.ts.map +1 -0
  109. package/lib/dist/extraction/vba/parameters.js +110 -0
  110. package/lib/dist/extraction/vba/parameters.js.map +1 -0
  111. package/lib/dist/extraction/vba/procedures.d.ts +1 -9
  112. package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
  113. package/lib/dist/extraction/vba/procedures.js +174 -112
  114. package/lib/dist/extraction/vba/procedures.js.map +1 -1
  115. package/lib/dist/extraction/vba/rules.d.ts +10 -5
  116. package/lib/dist/extraction/vba/rules.d.ts.map +1 -1
  117. package/lib/dist/extraction/vba/rules.js +19 -0
  118. package/lib/dist/extraction/vba/rules.js.map +1 -1
  119. package/lib/dist/extraction/vba/runtime-objects.d.ts +59 -0
  120. package/lib/dist/extraction/vba/runtime-objects.d.ts.map +1 -0
  121. package/lib/dist/extraction/vba/runtime-objects.js +106 -0
  122. package/lib/dist/extraction/vba/runtime-objects.js.map +1 -0
  123. package/lib/dist/extraction/vba/signature.d.ts +57 -0
  124. package/lib/dist/extraction/vba/signature.d.ts.map +1 -0
  125. package/lib/dist/extraction/vba/signature.js +164 -0
  126. package/lib/dist/extraction/vba/signature.js.map +1 -0
  127. package/lib/dist/extraction/vba/sql-wrapper.d.ts +76 -3
  128. package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -1
  129. package/lib/dist/extraction/vba/sql-wrapper.js +725 -151
  130. package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -1
  131. package/lib/dist/extraction/vba/tempvars.d.ts.map +1 -1
  132. package/lib/dist/extraction/vba/tempvars.js +4 -0
  133. package/lib/dist/extraction/vba/tempvars.js.map +1 -1
  134. package/lib/dist/extraction/vba/text-utils.d.ts +62 -2
  135. package/lib/dist/extraction/vba/text-utils.d.ts.map +1 -1
  136. package/lib/dist/extraction/vba/text-utils.js +84 -6
  137. package/lib/dist/extraction/vba/text-utils.js.map +1 -1
  138. package/lib/dist/extraction/vba-extractor.d.ts +18 -1
  139. package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
  140. package/lib/dist/extraction/vba-extractor.js +111 -16
  141. package/lib/dist/extraction/vba-extractor.js.map +1 -1
  142. package/lib/dist/extraction/vba-form-extractor.d.ts +28 -14
  143. package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
  144. package/lib/dist/extraction/vba-form-extractor.js +56 -21
  145. package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
  146. package/lib/dist/extraction/vba-preprocess.d.ts +89 -3
  147. package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
  148. package/lib/dist/extraction/vba-preprocess.js +221 -57
  149. package/lib/dist/extraction/vba-preprocess.js.map +1 -1
  150. package/lib/dist/extraction/vba-source.d.ts +0 -10
  151. package/lib/dist/extraction/vba-source.d.ts.map +1 -1
  152. package/lib/dist/extraction/vba-source.js +0 -13
  153. package/lib/dist/extraction/vba-source.js.map +1 -1
  154. package/lib/dist/extraction/vba-test-manifest-extractor.d.ts +0 -6
  155. package/lib/dist/extraction/vba-test-manifest-extractor.d.ts.map +1 -1
  156. package/lib/dist/extraction/vba-test-manifest-extractor.js +0 -1
  157. package/lib/dist/extraction/vba-test-manifest-extractor.js.map +1 -1
  158. package/lib/dist/index.d.ts.map +1 -1
  159. package/lib/dist/index.js +9 -0
  160. package/lib/dist/index.js.map +1 -1
  161. package/lib/dist/mcp/daemon-manager.d.ts.map +1 -1
  162. package/lib/dist/mcp/daemon-manager.js +7 -3
  163. package/lib/dist/mcp/daemon-manager.js.map +1 -1
  164. package/lib/dist/mcp/daemon-paths.d.ts +6 -0
  165. package/lib/dist/mcp/daemon-paths.d.ts.map +1 -1
  166. package/lib/dist/mcp/daemon-paths.js +15 -0
  167. package/lib/dist/mcp/daemon-paths.js.map +1 -1
  168. package/lib/dist/mcp/daemon-registry.d.ts +82 -7
  169. package/lib/dist/mcp/daemon-registry.d.ts.map +1 -1
  170. package/lib/dist/mcp/daemon-registry.js +557 -45
  171. package/lib/dist/mcp/daemon-registry.js.map +1 -1
  172. package/lib/dist/mcp/daemon-watchdog.d.ts +12 -0
  173. package/lib/dist/mcp/daemon-watchdog.d.ts.map +1 -1
  174. package/lib/dist/mcp/daemon-watchdog.js +37 -7
  175. package/lib/dist/mcp/daemon-watchdog.js.map +1 -1
  176. package/lib/dist/mcp/daemon.d.ts +20 -1
  177. package/lib/dist/mcp/daemon.d.ts.map +1 -1
  178. package/lib/dist/mcp/daemon.js +123 -30
  179. package/lib/dist/mcp/daemon.js.map +1 -1
  180. package/lib/dist/mcp/index.d.ts.map +1 -1
  181. package/lib/dist/mcp/index.js +13 -2
  182. package/lib/dist/mcp/index.js.map +1 -1
  183. package/lib/dist/mcp/proxy.d.ts +32 -0
  184. package/lib/dist/mcp/proxy.d.ts.map +1 -1
  185. package/lib/dist/mcp/proxy.js +163 -31
  186. package/lib/dist/mcp/proxy.js.map +1 -1
  187. package/lib/dist/mcp/tools.d.ts.map +1 -1
  188. package/lib/dist/mcp/tools.js +29 -1
  189. package/lib/dist/mcp/tools.js.map +1 -1
  190. package/lib/dist/project-config.d.ts +43 -2
  191. package/lib/dist/project-config.d.ts.map +1 -1
  192. package/lib/dist/project-config.js +86 -2
  193. package/lib/dist/project-config.js.map +1 -1
  194. package/lib/dist/resolution/index.d.ts +47 -2
  195. package/lib/dist/resolution/index.d.ts.map +1 -1
  196. package/lib/dist/resolution/index.js +160 -5
  197. package/lib/dist/resolution/index.js.map +1 -1
  198. package/lib/dist/resolution/name-matcher.d.ts +25 -0
  199. package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
  200. package/lib/dist/resolution/name-matcher.js +59 -0
  201. package/lib/dist/resolution/name-matcher.js.map +1 -1
  202. package/lib/dist/resolution/vba-runtime-objects.d.ts +11 -11
  203. package/lib/dist/resolution/vba-runtime-objects.d.ts.map +1 -1
  204. package/lib/dist/resolution/vba-runtime-objects.js +18 -38
  205. package/lib/dist/resolution/vba-runtime-objects.js.map +1 -1
  206. package/lib/dist/types.d.ts +13 -5
  207. package/lib/dist/types.d.ts.map +1 -1
  208. package/lib/dist/types.js +17 -0
  209. package/lib/dist/types.js.map +1 -1
  210. package/lib/node_modules/.modules.yaml +1 -1
  211. package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
  212. package/lib/package.json +4 -1
  213. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDirectAssignment = isDirectAssignment;
3
4
  exports.scanMeControlReferences = scanMeControlReferences;
4
5
  exports.scanFormsBang = scanFormsBang;
6
+ const text_utils_1 = require("./text-utils");
5
7
  /**
6
8
  * `Me.<ControlName>` / `Me!<ControlName>` reference capture — hole 1
7
9
  * of VBA control-modeling. Issue #44 extended it from `Me\.` to `Me[.!]`
@@ -11,6 +13,29 @@ exports.scanFormsBang = scanFormsBang;
11
13
  * the control, not new symbols. Provenance: `vba-me-control`.
12
14
  */
13
15
  const ME_CONTROL_RE = /\bMe[.!](\p{L}[\p{L}\p{N}_]*)/gu;
16
+ // Length of the `Me.` / `Me!` prefix that opens every captured control
17
+ // reference. Both forms are 3 chars; `ME_PREFIX_LEN` replaces the bare
18
+ // `+ 3` literal that previously appeared at multiple call sites.
19
+ const ME_PREFIX_LEN = 3;
20
+ /**
21
+ * Issue #211: shared direct-assignment predicate. The same-line rule
22
+ * the third branch (`control` for non-builtin Me.<Ctl>) already uses is
23
+ * the right shape — `before` must be empty (or whitespace) AND `after`
24
+ * must start with `=` — and lifts cleanly into the `builtIn` and bang
25
+ * branches too. Returning `true` means the match IS the LHS of an
26
+ * assignment (`Me.X = ...`), so callers should tag it `*-set`. Any
27
+ * other shape (e.g. `If Me.X = ...`, `MsgBox Me.X`, `x = Me.X`) is a
28
+ * read and must tag `*-get`. The function is intentionally narrow; a
29
+ * cross-line assignment is out of scope (matches the prior comment).
30
+ *
31
+ * Issue #251: exported so the module-level variable sweep
32
+ * (`module-vars.ts`) reads `gblConn = Nothing` as a write and
33
+ * `x = gblConn` as a read through the SAME predicate. There must only
34
+ * ever be one direct-assignment rule in the VBA extractor.
35
+ */
36
+ function isDirectAssignment(before, after) {
37
+ return /^\s*$/.test(before) && /^\s*=/.test(after);
38
+ }
14
39
  const ACCESS_FORM_MEMBER_BLACKLIST = new Set([
15
40
  'requery', 'refresh', 'repaint', 'recalc', 'undo', 'dirty', 'newrecord',
16
41
  'currentrecord', 'recordset', 'recordsetclone', 'recordsource', 'controls',
@@ -19,16 +44,46 @@ const ACCESS_FORM_MEMBER_BLACKLIST = new Set([
19
44
  'timerinterval',
20
45
  ]);
21
46
  const seenMeControls = new WeakMap();
22
- function siblingLayoutPath(filePath) {
23
- const normalized = filePath.replace(/\\/g, '/');
47
+ /**
48
+ * Resolve the sibling layout binding for the file being extracted.
49
+ *
50
+ * The BASENAME is the fast path and is checked first, unchanged. Issue #249
51
+ * adds the fallback below it: a code-behind class exported under a filename
52
+ * that lost the `Form_` / `Report_` prefix used to produce no control
53
+ * references at all — the sweep simply bailed and nothing warned — so the
54
+ * decision to bind now falls back to the module's resolved `VB_Name`.
55
+ *
56
+ * The sibling PATH is always derived from the FILE path either way: that is
57
+ * where the `.form.txt` / `.report.txt` actually sits on disk, whatever the
58
+ * module calls itself. Only the decision to bind consults `VB_Name`.
59
+ *
60
+ * `ctx.classNamePrefix` is `null` for `.bas` modules, and the `.cls` guard
61
+ * below keeps the fallback on the same file kind the fast path accepts.
62
+ */
63
+ function siblingLayoutBinding(ctx) {
64
+ const normalized = ctx.filePath.replace(/\\/g, '/');
24
65
  const basename = normalized.slice(normalized.lastIndexOf('/') + 1);
25
66
  if (/^Form_.+\.cls$/i.test(basename)) {
26
- return normalized.replace(/\.cls$/i, '.form.txt');
67
+ return {
68
+ siblingPath: normalized.replace(/\.cls$/i, '.form.txt'),
69
+ bindingSource: null,
70
+ };
27
71
  }
28
72
  if (/^Report_.+\.cls$/i.test(basename)) {
29
- return normalized.replace(/\.cls$/i, '.report.txt');
73
+ return {
74
+ siblingPath: normalized.replace(/\.cls$/i, '.report.txt'),
75
+ bindingSource: null,
76
+ };
30
77
  }
31
- return null;
78
+ if (!/\.cls$/i.test(basename))
79
+ return null;
80
+ const ext = (0, text_utils_1.codeBehindExtFromVbName)(ctx.classNamePrefix);
81
+ if (!ext)
82
+ return null;
83
+ return {
84
+ siblingPath: normalized.replace(/\.cls$/i, ext),
85
+ bindingSource: 'vb-name',
86
+ };
32
87
  }
33
88
  /**
34
89
  * Issue #44: `Forms!<FormName>` / `Forms("<FormName>")!<Ctl>` cross-form
@@ -67,10 +122,17 @@ function scanMeControlReferences(ctx, line, from, lineNum) {
67
122
  if (!controlName)
68
123
  continue;
69
124
  // Round-3: operator is the char at `m.index + 2` (skipping the `Me`).
70
- // Both `.` and `!` are 1 char so the captured name starts at `m.index + 3`.
125
+ // Both `.` and `!` are 1 char so the captured name starts at
126
+ // `m.index + ME_PREFIX_LEN`.
71
127
  const operator = line.charAt(m.index + 2); // '.' | '!'
72
128
  const isBang = operator === '!';
73
- const siblingPath = siblingLayoutPath(ctx.filePath);
129
+ const binding = siblingLayoutBinding(ctx);
130
+ const siblingPath = binding?.siblingPath ?? null;
131
+ // Present only when the filename and the module's VB_Name disagree
132
+ // (issue #249), so the fast path's reference metadata is unchanged.
133
+ const bindingSourceMeta = binding?.bindingSource
134
+ ? { bindingSource: binding.bindingSource }
135
+ : {};
74
136
  // Issue #140 is deliberately a separate, dot-only sweep for Access
75
137
  // form/report code-behind. Keeping `Me` in the generic runtime receiver
76
138
  // blacklist prevents runtime methods from becoming synthetic call nodes.
@@ -85,16 +147,22 @@ function scanMeControlReferences(ctx, line, from, lineNum) {
85
147
  // form properties such as Me.Name remain property-get/property-set
86
148
  // unresolved refs. The dedicated resolver sees `builtIn: true` and
87
149
  // always declines them, so they still create no node or graph edge.
88
- const after = line.slice(m.index + 3 + controlName.length);
150
+ const after = line.slice(m.index + ME_PREFIX_LEN + controlName.length);
151
+ const before = line.slice(0, m.index);
89
152
  ctx.unresolvedReferences.push({
90
153
  fromNodeId: ctx.findOrCreateFunctionNodeId(from),
91
154
  referenceName: controlName,
92
- referenceKind: after.includes('=') ? 'property-set' : 'property-get',
155
+ referenceKind: isDirectAssignment(before, after) ? 'property-set' : 'property-get',
93
156
  line: lineNum,
94
- column: m.index + 3,
157
+ column: m.index + ME_PREFIX_LEN,
95
158
  filePath: ctx.filePath,
96
159
  language: 'vba',
97
- metadata: { synthesizedBy: 'vba-me-control', siblingPath, builtIn: true },
160
+ metadata: {
161
+ synthesizedBy: 'vba-me-control',
162
+ siblingPath,
163
+ builtIn: true,
164
+ ...bindingSourceMeta,
165
+ },
98
166
  });
99
167
  continue;
100
168
  }
@@ -108,36 +176,34 @@ function scanMeControlReferences(ctx, line, from, lineNum) {
108
176
  if (seen.has(dedupeKey))
109
177
  continue;
110
178
  seen.add(dedupeKey);
111
- const after = line.slice(m.index + 3 + controlName.length);
179
+ const after = line.slice(m.index + ME_PREFIX_LEN + controlName.length);
112
180
  const before = line.slice(0, m.index);
113
- const isDirectAssignment = /^\s*$/.test(before) && /^\s*=/.test(after);
114
181
  ctx.unresolvedReferences.push({
115
182
  fromNodeId,
116
183
  referenceName: controlName,
117
184
  referenceKind: 'references',
118
185
  line: lineNum,
119
- column: m.index + 3,
186
+ column: m.index + ME_PREFIX_LEN,
120
187
  filePath: ctx.filePath,
121
188
  language: 'vba',
122
189
  metadata: {
123
190
  synthesizedBy: 'vba-me-control',
124
191
  siblingPath,
125
- access: isDirectAssignment ? 'write' : 'read',
192
+ access: isDirectAssignment(before, after) ? 'write' : 'read',
193
+ ...bindingSourceMeta,
126
194
  },
127
195
  });
128
196
  continue;
129
197
  }
130
198
  // Preserve the existing Me! default-collection behavior from issue #44.
131
- // Same-line get vs set heuristic: anything past the captured control
132
- // name on this line. Cover the `=` form (`Me.Name = "X"`) and ignore
133
- // a previous-line `=`. The `= charAt(...)` short-circuits on the first
134
- // non-whitespace; that matches VBA `Me.Name =` and tolerates intervening
135
- // spaces. We do NOT match `==` (VBA has no `==`), and `=` inside a RHS
136
- // expression on the SAME line is a false positive that's tolerable —
137
- // round-4 can add a paren-depth check if needed.
138
- const after = line.slice(m.index + 3 + controlName.length);
139
- const eqIdx = after.indexOf('=');
140
- const isAssign = eqIdx >= 0;
199
+ // Same-line get vs set heuristic: `before` must be empty/whitespace AND
200
+ // `after` must start with `=`. Both predicates are the same `isDirectAssignment`
201
+ // helper used by the dot branches (issue #211), so reads inside `If`,
202
+ // `MsgBox`, or `IIf` correctly emit `bang-get` while `Me!X = v` emits
203
+ // `bang-set`.
204
+ const after = line.slice(m.index + ME_PREFIX_LEN + controlName.length);
205
+ const before = line.slice(0, m.index);
206
+ const isAssign = isDirectAssignment(before, after);
141
207
  const referenceKind = isBang
142
208
  ? isAssign
143
209
  ? 'bang-set'
@@ -150,7 +216,7 @@ function scanMeControlReferences(ctx, line, from, lineNum) {
150
216
  referenceName: controlName,
151
217
  referenceKind,
152
218
  line: lineNum,
153
- column: m.index + 3, // +3 to skip the `Me.` / `Me!` prefix
219
+ column: m.index + ME_PREFIX_LEN,
154
220
  filePath: ctx.filePath,
155
221
  language: 'vba',
156
222
  metadata: { synthesizedBy: 'vba-me-control' },
@@ -172,10 +238,16 @@ function scanMeControlReferences(ctx, line, from, lineNum) {
172
238
  * (`Forms!FormX!Ctl = value`) is rare; round-3 emits `'bang-get'`
173
239
  * uniformly and the resolvers do not care about access direction here.
174
240
  */
175
- function scanFormsBang(ctx, line, from, lineNum) {
241
+ function scanFormsBang(ctx, line, maskedLine, from, lineNum) {
176
242
  FORMS_BANG_RE.lastIndex = 0;
177
243
  let m;
178
244
  while ((m = FORMS_BANG_RE.exec(line)) !== null) {
245
+ // The original line is required for Forms("name") payloads, but the
246
+ // keyword itself must still be executable code rather than prose inside
247
+ // a string literal. maskStringContent preserves columns, so this check is
248
+ // both cheap and exact for every regex match.
249
+ if (maskedLine.slice(m.index, m.index + 5).toLowerCase() !== 'forms')
250
+ continue;
179
251
  // Group 1: bang form name (bare or `[bracketed]`); group 2: paren
180
252
  // form name in `"quotes"`; group 3: paren form name bare or
181
253
  // `[bracketed]`. Take whichever the regex alternative produced and
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../src/extraction/vba/controls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../src/extraction/vba/controls.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { VbaExtractorContext, VbaClassifier } from './context';
1
+ import { VbaClassifier } from './context';
2
2
  import { VbaExtractionRule } from './rules';
3
3
  /**
4
4
  * Issue #153: the declarative rule table for the events/types/declares
@@ -40,9 +40,4 @@ export declare const RULES: readonly VbaExtractionRule<unknown>[];
40
40
  * }
41
41
  */
42
42
  export declare function createEventsTypesDeclaresClassifier(): VbaClassifier;
43
- /**
44
- * Backward-compat wrapper (see procedures.ts). Returns the classifier's
45
- * `count` so the orchestrator can decide `hasAnySymbols`.
46
- */
47
- export declare function sweepEventsTypesAndDeclares(ctx: VbaExtractorContext, src: string): number;
48
43
  //# sourceMappingURL=declarations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAqBnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EA2JtD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mCAAmC,IAAI,aAAa,CA+BnE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOzF"}
1
+ {"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAwB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAqBlE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EA4JtD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mCAAmC,IAAI,aAAa,CAanE"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RULES = void 0;
4
4
  exports.createEventsTypesDeclaresClassifier = createEventsTypesDeclaresClassifier;
5
- exports.sweepEventsTypesAndDeclares = sweepEventsTypesAndDeclares;
6
5
  const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
7
6
  const text_utils_1 = require("./text-utils");
8
7
  const rules_1 = require("./rules");
@@ -111,6 +110,7 @@ exports.RULES = [
111
110
  description: 'Match `End Type` while inside a type block; emit nothing and clear `ctx.vbaDeclTypeBlock` so subsequent lines route back to the outside-type-block rules.',
112
111
  pattern: TYPE_END_RE,
113
112
  requires: 'inside-type-block',
113
+ terminal: true,
114
114
  emit: (_m, ctx) => {
115
115
  ctx.vbaDeclTypeBlock = null;
116
116
  return { kind: 'end-type-block' };
@@ -215,46 +215,12 @@ function createEventsTypesDeclaresClassifier() {
215
215
  count: 0,
216
216
  classifyLine(line, i, ctx) {
217
217
  const lineNum = i + 1;
218
- for (const rule of exports.RULES) {
219
- // Gate by the rule's `requires` precondition. The
220
- // `outside-type-block` / `inside-type-block` values are the
221
- // concrete preconditions the dispatcher knows about today;
222
- // unknown strings are treated as "always" so adding new
223
- // preconditions does not require touching this loop.
224
- if (rule.requires === 'inside-type-block' && !ctx.vbaDeclTypeBlock)
225
- continue;
226
- if (rule.requires === 'outside-type-block' && ctx.vbaDeclTypeBlock)
227
- continue;
228
- const m = (0, rules_1.matchRule)(rule.pattern, line);
229
- if (!m)
230
- continue;
231
- const result = rule.emit(m, ctx, line, lineNum);
232
- if (result !== null && result !== undefined) {
233
- this.count += rule.count ? rule.count(result) : 1;
234
- }
235
- // `type-end` cleared the type block — nothing else on this
236
- // line can apply (a VBA `End Type` line cannot also be an
237
- // `Event <Name>` declaration). The legacy cascade did the
238
- // same short-circuit via `return`. Break out of the loop
239
- // explicitly so a later refactor cannot accidentally let an
240
- // outside-type-block rule fire on the same line.
241
- if (rule.id === 'type-end')
242
- break;
243
- }
218
+ this.count += (0, rules_1.runRules)(exports.RULES, ctx, line, line, lineNum, {
219
+ 'inside-type-block': ctx.vbaDeclTypeBlock !== null,
220
+ 'outside-type-block': ctx.vbaDeclTypeBlock === null,
221
+ });
244
222
  },
245
223
  };
246
224
  return cls;
247
225
  }
248
- /**
249
- * Backward-compat wrapper (see procedures.ts). Returns the classifier's
250
- * `count` so the orchestrator can decide `hasAnySymbols`.
251
- */
252
- function sweepEventsTypesAndDeclares(ctx, src) {
253
- const cls = createEventsTypesDeclaresClassifier();
254
- const lines = src.split('\n');
255
- for (let i = 0; i < lines.length; i++) {
256
- cls.classifyLine(lines[i] ?? '', i, ctx);
257
- }
258
- return cls.count;
259
- }
260
226
  //# sourceMappingURL=declarations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":";;;AAmOA,kFA+BC;AAMD,kEAOC;AAvQD,gEAAwD;AACxD,6CAA8C;AAE9C,mCAAmE;AAEnE,iEAAiE;AACjE,MAAM,aAAa,GACjB,sEAAsE,CAAC;AAEzE,gEAAgE;AAChE,MAAM,aAAa,GACjB,qEAAqE,CAAC;AAExE,8CAA8C;AAC9C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC,iEAAiE;AACjE,MAAM,cAAc,GAClB,+DAA+D,CAAC;AAElE,qFAAqF;AACrF,MAAM,cAAc,GAClB,wIAAwI,CAAC;AAE3I;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACU,QAAA,KAAK,GAA0C;IAC1D,IAAA,kBAAU,EAAC;QACT,EAAE,EAAE,YAAY;QAChB,WAAW,EACT,8IAA8I;QAChJ,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,oBAAoB;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9B,MAAM,UAAU,GAAG,IAAA,2BAAc,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,MAAM,OAAO,GAAG,IAAA,oCAAc,EAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,SAAS,GAAS;gBACtB,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,OAAO;gBACb,IAAI;gBACJ,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;gBACtB,aAAa,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC5E,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,UAAU;gBACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;YACnD,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;IACF,IAAA,kBAAU,EAAC;QACT,EAAE,EAAE,YAAY;QAChB,WAAW,EACT,gOAAgO;QAClO,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,oBAAoB;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9B,MAAM,UAAU,GAAG,IAAA,2BAAc,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,MAAM,MAAM,GAAG,IAAA,oCAAc,EAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,aAAa,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC5E,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,UAAU;gBACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YACH,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACnC,8DAA8D;YAC9D,0DAA0D;YAC1D,4BAA4B;YAC5B,GAAG,CAAC,gBAAgB,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;KACF,CAAC;IACF,IAAA,kBAAU,EAAC;QACT,EAAE,EAAE,UAAU;QACd,WAAW,EACT,2JAA2J;QAC7J,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;YAChB,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,gBAAyB,EAAE,CAAC;QAC7C,CAAC;KACF,CAAC;IACF,IAAA,kBAAU,EAAC;QACT,EAAE,EAAE,aAAa;QACjB,WAAW,EACT,gJAAgJ;QAClJ,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9B,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAAE,OAAO,IAAI,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAA,oCAAc,EAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAClF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,UAAU;gBAChB,aAAa,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,UAAU,EAAE;gBAC3D,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,QAAQ,EAAE,EAAE,UAAU,EAAE;gBACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YACH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,QAAQ;aACrB,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;KACF,CAAC;IACF,IAAA,kBAAU,EAAC;QACT,EAAE,EAAE,aAAa;QACjB,WAAW,EACT,+OAA+O;QACjP,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,oBAAoB;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9B,MAAM,UAAU,GAAG,IAAA,2BAAc,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;YACpC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,MAAM,SAAS,GAAG,IAAA,oCAAc,EAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACzE,MAAM,WAAW,GAAS;gBACxB,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,aAAa,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC5E,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,UAAU;gBACV,QAAQ,EAAE;oBACR,SAAS,EAAE,IAAI;oBACf,GAAG;oBACH,WAAW;oBACX,OAAO;oBACP,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpC;gBACD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChD,CAAC;YACD,GAAG,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAgB,mCAAmC;IACjD,MAAM,GAAG,GAAkB;QACzB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG;YACvB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,aAAK,EAAE,CAAC;gBACzB,kDAAkD;gBAClD,4DAA4D;gBAC5D,2DAA2D;gBAC3D,wDAAwD;gBACxD,qDAAqD;gBACrD,IAAI,IAAI,CAAC,QAAQ,KAAK,mBAAmB,IAAI,CAAC,GAAG,CAAC,gBAAgB;oBAAE,SAAS;gBAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,oBAAoB,IAAI,GAAG,CAAC,gBAAgB;oBAAE,SAAS;gBAC7E,MAAM,CAAC,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,CAAC;oBAAE,SAAS;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBACD,2DAA2D;gBAC3D,0DAA0D;gBAC1D,0DAA0D;gBAC1D,yDAAyD;gBACzD,4DAA4D;gBAC5D,iDAAiD;gBACjD,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU;oBAAE,MAAM;YACpC,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,GAAwB,EAAE,GAAW;IAC/E,MAAM,GAAG,GAAG,mCAAmC,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { VbaExtractorContext, VbaClassifier } from './context';
1
+ import { VbaClassifier } from './context';
2
2
  import { VbaExtractionRule } from './rules';
3
3
  /**
4
4
  * Issue #153: the declarative rule table for the Dim / WithEvents
@@ -34,12 +34,16 @@ export declare const RULES: readonly VbaExtractionRule<unknown>[];
34
34
  * rules are independent: `dim-decl` handles typed declarations
35
35
  * (REJECTED if the line is a `WithEvents` because the prefix
36
36
  * negative-lookahead excludes `WithEvents`), `withevents-decl`
37
- * handles WithEvents. No inter-line state.
37
+ * handles WithEvents.
38
+ *
39
+ * Issue #205: the classifier maintains a closure-local proc stack
40
+ * (parallel to the calls-sweep's `ctx.procStack` in
41
+ * `call-sweep.ts:213`) and writes the top of that stack into
42
+ * `ctx.currentVarTypeProcKey` so `localVarTypeMap` writes are scoped
43
+ * to the procedure whose body the `Dim` is inside (or `'module'`
44
+ * when no procedure is open). The two stacks track the same
45
+ * `PROC_RE` / `PROCEDURE_END_RE` boundaries so they stay in sync at
46
+ * every line.
38
47
  */
39
48
  export declare function createDimsClassifier(): VbaClassifier;
40
- /**
41
- * Backward-compat wrapper (see procedures.ts). Returns the classifier's
42
- * `count` so the orchestrator can decide `hasAnySymbols`.
43
- */
44
- export declare function sweepDimsAndWithEvents(ctx: VbaExtractorContext, src: string): number;
45
49
  //# sourceMappingURL=dims.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dims.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/dims.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAsFnE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EA2ItD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,CAgBpD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOpF"}
1
+ {"version":3,"file":"dims.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/dims.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAuB,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAwB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAiQlE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EAsNtD,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,CAoCpD"}