@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/extraction/vba/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ProcInfo, VbaExtractorContext } from './context';
2
+ export declare const VBA_FILESYSTEM_STATEMENT_SYNTHESIZED_BY: "vba-filesystem-statement";
3
+ export type VbaFilesystemOperation = 'kill' | 'open' | 'close';
4
+ /**
5
+ * Parse only the intrinsic grammar-shaped statement forms. The input must be a
6
+ * single string-masked statement clause, so quoted keywords remain opaque while
7
+ * valid string operands retain their token shape.
8
+ */
9
+ export declare function detectVbaFilesystemStatement(statement: string): VbaFilesystemOperation | null;
10
+ /**
11
+ * The shared provenance gate used by both resolution and runtime
12
+ * classification. Name, kind, language, family, and operation must agree; a
13
+ * copied or partially forged metadata stamp is rejected.
14
+ */
15
+ export declare function isExactVbaFilesystemStatementReference(ref: {
16
+ language?: string | null;
17
+ referenceKind?: string | null;
18
+ referenceName?: string | null;
19
+ metadata?: Record<string, unknown> | null;
20
+ }): boolean;
21
+ /** Emit one typed unresolved runtime reference from the containing procedure. */
22
+ export declare function emitVbaFilesystemStatementReference(ctx: VbaExtractorContext, caller: ProcInfo, statement: string, lineNum: number): boolean;
23
+ //# sourceMappingURL=filesystem-statements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-statements.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/filesystem-statements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAE/D,eAAO,MAAM,uCAAuC,EAClD,0BAAmC,CAAC;AAEtC,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAkB/D;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAChB,sBAAsB,GAAG,IAAI,CAK/B;AAED;;;;GAIG;AACH,wBAAgB,sCAAsC,CAAC,GAAG,EAAE;IAC1D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C,GAAG,OAAO,CAcV;AAED,iFAAiF;AACjF,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAoBT"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VBA_FILESYSTEM_STATEMENT_SYNTHESIZED_BY = void 0;
4
+ exports.detectVbaFilesystemStatement = detectVbaFilesystemStatement;
5
+ exports.isExactVbaFilesystemStatementReference = isExactVbaFilesystemStatementReference;
6
+ exports.emitVbaFilesystemStatementReference = emitVbaFilesystemStatementReference;
7
+ exports.VBA_FILESYSTEM_STATEMENT_SYNTHESIZED_BY = 'vba-filesystem-statement';
8
+ const IDENT = String.raw `\p{L}[\p{L}\p{N}_]*`;
9
+ const FILE_NUMBER = String.raw `#?\s*(?:\d+|${IDENT})`;
10
+ const KILL_STATEMENT_RE = /^\s*Kill\s+(?!\s*\()([^,]+?)\s*$/iu;
11
+ const OPEN_STATEMENT_RE = new RegExp(String.raw `^\s*Open\s+(?!\s*\()(.+?)\s+For\s+(Append|Binary|Input|Output|Random)` +
12
+ String.raw `(?:\s+Access\s+(?:Read|Write|Read\s+Write))?` +
13
+ String.raw `(?:\s+Lock\s+(?:Read|Write|Read\s+Write|Shared))?` +
14
+ String.raw `\s+As\s+${FILE_NUMBER}(?:\s+Len\s*=\s*.+)?\s*$`, 'iu');
15
+ const CLOSE_STATEMENT_RE = new RegExp(String.raw `^\s*Close(?:\s+${FILE_NUMBER}(?:\s*,\s*${FILE_NUMBER})*)?\s*$`, 'iu');
16
+ /**
17
+ * Parse only the intrinsic grammar-shaped statement forms. The input must be a
18
+ * single string-masked statement clause, so quoted keywords remain opaque while
19
+ * valid string operands retain their token shape.
20
+ */
21
+ function detectVbaFilesystemStatement(statement) {
22
+ if (KILL_STATEMENT_RE.test(statement))
23
+ return 'kill';
24
+ if (OPEN_STATEMENT_RE.test(statement))
25
+ return 'open';
26
+ if (CLOSE_STATEMENT_RE.test(statement))
27
+ return 'close';
28
+ return null;
29
+ }
30
+ /**
31
+ * The shared provenance gate used by both resolution and runtime
32
+ * classification. Name, kind, language, family, and operation must agree; a
33
+ * copied or partially forged metadata stamp is rejected.
34
+ */
35
+ function isExactVbaFilesystemStatementReference(ref) {
36
+ if ((ref.language ?? '').toLowerCase() !== 'vba')
37
+ return false;
38
+ if (ref.referenceKind !== 'calls')
39
+ return false;
40
+ const operation = (ref.referenceName ?? '').toLowerCase();
41
+ if (operation !== 'kill' && operation !== 'open' && operation !== 'close') {
42
+ return false;
43
+ }
44
+ return (ref.metadata?.synthesizedBy === exports.VBA_FILESYSTEM_STATEMENT_SYNTHESIZED_BY &&
45
+ ref.metadata.runtimeFamily === 'filesystem' &&
46
+ ref.metadata.operation === operation);
47
+ }
48
+ /** Emit one typed unresolved runtime reference from the containing procedure. */
49
+ function emitVbaFilesystemStatementReference(ctx, caller, statement, lineNum) {
50
+ const operation = detectVbaFilesystemStatement(statement);
51
+ if (!operation)
52
+ return false;
53
+ const referenceName = operation[0].toUpperCase() + operation.slice(1);
54
+ ctx.unresolvedReferences.push({
55
+ fromNodeId: ctx.findOrCreateFunctionNodeId(caller),
56
+ referenceName,
57
+ referenceKind: 'calls',
58
+ line: lineNum,
59
+ column: Math.max(0, statement.search(/\S/)),
60
+ filePath: ctx.filePath,
61
+ language: 'vba',
62
+ metadata: {
63
+ synthesizedBy: exports.VBA_FILESYSTEM_STATEMENT_SYNTHESIZED_BY,
64
+ runtimeFamily: 'filesystem',
65
+ operation,
66
+ },
67
+ });
68
+ return true;
69
+ }
70
+ //# sourceMappingURL=filesystem-statements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-statements.js","sourceRoot":"","sources":["../../../src/extraction/vba/filesystem-statements.ts"],"names":[],"mappings":";;;AA4BA,oEAOC;AAOD,wFAmBC;AAGD,kFAyBC;AAvFY,QAAA,uCAAuC,GAClD,0BAAmC,CAAC;AAItC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA,qBAAqB,CAAC;AAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA,eAAe,KAAK,GAAG,CAAC;AAEtD,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAClC,MAAM,CAAC,GAAG,CAAA,uEAAuE;IAC/E,MAAM,CAAC,GAAG,CAAA,8CAA8C;IACxD,MAAM,CAAC,GAAG,CAAA,mDAAmD;IAC7D,MAAM,CAAC,GAAG,CAAA,WAAW,WAAW,0BAA0B,EAC5D,IAAI,CACL,CAAC;AACF,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACnC,MAAM,CAAC,GAAG,CAAA,kBAAkB,WAAW,aAAa,WAAW,UAAU,EACzE,IAAI,CACL,CAAC;AAEF;;;;GAIG;AACH,SAAgB,4BAA4B,CAC1C,SAAiB;IAEjB,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC;IACrD,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC;IACrD,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,sCAAsC,CAAC,GAKtD;IACC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,GAAG,CAAC,aAAa,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEhD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,GAAG,CAAC,QAAQ,EAAE,aAAa,KAAK,+CAAuC;QACvE,GAAG,CAAC,QAAQ,CAAC,aAAa,KAAK,YAAY;QAC3C,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CACrC,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,SAAgB,mCAAmC,CACjD,GAAwB,EACxB,MAAgB,EAChB,SAAiB,EACjB,OAAe;IAEf,MAAM,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC5B,UAAU,EAAE,GAAG,CAAC,0BAA0B,CAAC,MAAM,CAAC;QAClD,aAAa;QACb,aAAa,EAAE,OAAO;QACtB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE;YACR,aAAa,EAAE,+CAAuC;YACtD,aAAa,EAAE,YAAY;YAC3B,SAAS;SACV;KACF,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -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 implements concern.
@@ -19,9 +19,4 @@ export declare const RULES: readonly VbaExtractionRule<unknown>[];
19
19
  * if/else cascade" is gone.
20
20
  */
21
21
  export declare function createImplementsClassifier(): VbaClassifier;
22
- /**
23
- * Backward-compat wrapper (see procedures.ts). Returns the classifier's
24
- * `count` so the orchestrator can decide `hasAnySymbols`.
25
- */
26
- export declare function sweepImplements(ctx: VbaExtractorContext, src: string): number;
27
22
  //# sourceMappingURL=implements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"implements.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKnE;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EAyCtD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,CAgB1D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7E"}
1
+ {"version":3,"file":"implements.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAwB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKlE;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EAyCtD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,CAS1D"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RULES = void 0;
4
4
  exports.createImplementsClassifier = createImplementsClassifier;
5
- exports.sweepImplements = sweepImplements;
6
5
  const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
7
6
  const rules_1 = require("./rules");
8
7
  /** Implements regex. */
@@ -72,28 +71,8 @@ function createImplementsClassifier() {
72
71
  count: 0,
73
72
  classifyLine(line, i, ctx) {
74
73
  const lineNum = i + 1;
75
- for (const rule of exports.RULES) {
76
- const m = (0, rules_1.matchRule)(rule.pattern, line);
77
- if (!m)
78
- continue;
79
- const result = rule.emit(m, ctx, line, lineNum);
80
- if (result !== null && result !== undefined) {
81
- this.count += rule.count ? rule.count(result) : 1;
82
- }
83
- }
74
+ this.count += (0, rules_1.runRules)(exports.RULES, ctx, line, line, lineNum, {});
84
75
  },
85
76
  };
86
77
  }
87
- /**
88
- * Backward-compat wrapper (see procedures.ts). Returns the classifier's
89
- * `count` so the orchestrator can decide `hasAnySymbols`.
90
- */
91
- function sweepImplements(ctx, src) {
92
- const cls = createImplementsClassifier();
93
- const lines = src.split('\n');
94
- for (let i = 0; i < lines.length; i++) {
95
- cls.classifyLine(lines[i] ?? '', i, ctx);
96
- }
97
- return cls.count;
98
- }
99
78
  //# sourceMappingURL=implements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"implements.js","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"implements.js","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":";;;AAyEA,gEASC;AA5ED,gEAAwD;AAExD,mCAAkE;AAElE,wBAAwB;AACxB,MAAM,aAAa,GAAG,0CAA0C,CAAC;AAEjE;;;;;;;GAOG;AACU,QAAA,KAAK,GAA0C;IAC1D,IAAA,kBAAU,EAAC;QACT,EAAE,EAAE,YAAY;QAChB,WAAW,EACT,0GAA0G;QAC5G,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAA,oCAAc,EAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,WAAW;gBACjB,IAAI;gBACJ,aAAa,EAAE,IAAI;gBACnB,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,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YACH,MAAM,IAAI,GAAS;gBACjB,MAAM,EAAE,EAAE,EAAE,kDAAkD;gBAC9D,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,YAAY;gBAClB,gEAAgE;gBAChE,wDAAwD;gBACxD,8DAA8D;gBAC9D,0DAA0D;gBAC1D,0BAA0B;gBAC1B,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,CAAC;aACV,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;CACH,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAgB,0BAA0B;IACxC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG;YACvB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,IAAI,IAAA,gBAAQ,EAAC,aAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { VbaErrorPolicy, VbaErrorPolicyState, VbaExtractorContext } from './context';
2
+ /** `handles-error` edges and their unresolved twin carry this provenance. */
3
+ export declare const ERROR_HANDLER_SYNTHESIZED_BY = "vba-error-handler";
4
+ /** A plain `GoTo <label>` jump — a generic `references` edge. */
5
+ export declare const GOTO_SYNTHESIZED_BY = "vba-goto";
6
+ /**
7
+ * A `GoTo` (plain or `On Error`) naming a label the procedure never defines.
8
+ * One shared tag for both, because from a consumer's point of view they are
9
+ * the same defect: a jump with no landing site.
10
+ */
11
+ export declare const GOTO_UNRESOLVED_SYNTHESIZED_BY = "vba-goto-unresolved";
12
+ /**
13
+ * Emit this procedure's `label` nodes and the three edge shapes that reach
14
+ * them, then hand control back to `closeErrorPolicy`.
15
+ *
16
+ * `policy` is the object that was just folded from `state`; it is read, never
17
+ * recomputed. `endLine` is the procedure's terminating `End` line.
18
+ *
19
+ * Ordering matters and is the caller's responsibility: this runs BEFORE
20
+ * #260's `markErrorHandlerRegion`, so a `GoTo` or a second `On Error GoTo`
21
+ * written inside the handler region is stamped `metadata.inErrorHandler` by
22
+ * that single stamping point like every other edge, instead of quietly
23
+ * becoming the one emitter that opted out of it.
24
+ */
25
+ export declare function emitLabelNodes(ctx: VbaExtractorContext, state: VbaErrorPolicyState, policy: VbaErrorPolicy, endLine: number): void;
26
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/labels.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,WAAW,CAAC;AAEnB,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;AAEhE,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,wBAAwB,CAAC;AAEpE;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,GACd,IAAI,CA0FN"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GOTO_UNRESOLVED_SYNTHESIZED_BY = exports.GOTO_SYNTHESIZED_BY = exports.ERROR_HANDLER_SYNTHESIZED_BY = void 0;
4
+ exports.emitLabelNodes = emitLabelNodes;
5
+ /**
6
+ * Issue #263 (task E6 of `docs/vba-error-handling-plan.md`): turn the line
7
+ * labels the error-policy classifier has ALREADY found into `label` nodes,
8
+ * plus the edges that bind them to their procedure.
9
+ *
10
+ * This module is EMISSION ONLY, in the same sense `parameters.ts` is. Every
11
+ * fact it publishes was computed by `errors.ts` while the procedure body was
12
+ * open — label definitions, `On Error GoTo` targets, the handler region, the
13
+ * dangling-target resolution, and the handler's behaviour. Nothing here
14
+ * re-reads a source line, and nothing here re-classifies. If a change to this
15
+ * file needs a regex, the fact is missing upstream and belongs there instead:
16
+ * two scanners disagreeing about what a label is, is exactly the failure #259
17
+ * spent a whole file's worth of documentation avoiding.
18
+ *
19
+ * ## Why a node at all — and why it is not a container
20
+ *
21
+ * §4 of the plan rejected this design for #259, and §4.3 named the condition
22
+ * that reopens it: a consumer that needs to address a handler *as a thing*
23
+ * rather than ask a procedure a yes/no question. That is what this is. The
24
+ * label node makes a handler searchable (`kind:label`), linkable by a stable
25
+ * id, and queryable for the defects — dangling targets, duplicate handlers,
26
+ * pure control-flow labels — that `errorPolicy`'s scalar fields flatten away.
27
+ *
28
+ * What it deliberately is NOT is a container. **Calls inside a handler stay
29
+ * attributed to the enclosing procedure.** Re-parenting them onto the label
30
+ * would change `callers` / `callees` for the 3,774 procedures in the
31
+ * reference corpus that have a handler, and silently break every consumer
32
+ * query that assumes a call belongs to the procedure containing it. #260's
33
+ * `metadata.inErrorHandler` already answers "did this call come from the
34
+ * error path"; the label is *addressable*, not a parent.
35
+ *
36
+ * ## The collision trap
37
+ *
38
+ * VBA scopes a line label to its procedure, and this corpus writes the same
39
+ * label everywhere: `errores` is defined 3,735 times. `qualifiedName` is
40
+ * therefore always `<ModuleOrClass>.<Procedure>.<label>` — the same shape
41
+ * `parameters.ts` (#257) and the module-variable sweep (#251) chose, and for
42
+ * the same reason. Drop the procedure segment and every handler in a project
43
+ * becomes one symbol.
44
+ *
45
+ * ## Never fabricate a target
46
+ *
47
+ * `On Error GoTo <label>` where `<label>` is never defined in that procedure
48
+ * is a handler that can never run — the defect `errorPolicy.danglingTarget`
49
+ * reports. It emits an `UnresolvedReference` and **no node**. A graph that
50
+ * invents its own targets cannot be used to find this defect, which is the
51
+ * only reason to look for it.
52
+ */
53
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
54
+ /** `handles-error` edges and their unresolved twin carry this provenance. */
55
+ exports.ERROR_HANDLER_SYNTHESIZED_BY = 'vba-error-handler';
56
+ /** A plain `GoTo <label>` jump — a generic `references` edge. */
57
+ exports.GOTO_SYNTHESIZED_BY = 'vba-goto';
58
+ /**
59
+ * A `GoTo` (plain or `On Error`) naming a label the procedure never defines.
60
+ * One shared tag for both, because from a consumer's point of view they are
61
+ * the same defect: a jump with no landing site.
62
+ */
63
+ exports.GOTO_UNRESOLVED_SYNTHESIZED_BY = 'vba-goto-unresolved';
64
+ /**
65
+ * Emit this procedure's `label` nodes and the three edge shapes that reach
66
+ * them, then hand control back to `closeErrorPolicy`.
67
+ *
68
+ * `policy` is the object that was just folded from `state`; it is read, never
69
+ * recomputed. `endLine` is the procedure's terminating `End` line.
70
+ *
71
+ * Ordering matters and is the caller's responsibility: this runs BEFORE
72
+ * #260's `markErrorHandlerRegion`, so a `GoTo` or a second `On Error GoTo`
73
+ * written inside the handler region is stamped `metadata.inErrorHandler` by
74
+ * that single stamping point like every other edge, instead of quietly
75
+ * becoming the one emitter that opted out of it.
76
+ */
77
+ function emitLabelNodes(ctx, state, policy, endLine) {
78
+ const procedureNode = ctx.functionNodeByStartLine.get(state.startLine);
79
+ // No procedure node means the pre-walk never saw a declaration for this
80
+ // body. There is nothing to attach a label to, and a parentless label node
81
+ // is worse than no node.
82
+ if (!procedureNode)
83
+ return;
84
+ if (state.labelDefs.length === 0 &&
85
+ state.onErrorSites.length === 0 &&
86
+ state.gotoSites.length === 0) {
87
+ return;
88
+ }
89
+ const procedureName = procedureNode.name;
90
+ const qualifiedPrefix = ctx.moduleName
91
+ ? `${ctx.moduleName}.${procedureName}`
92
+ : procedureName;
93
+ // The ONE label whose region `errorPolicy` resolved — `openedTarget`, the
94
+ // earliest definition an `On Error GoTo` names. Only it can copy #260's
95
+ // derived `behavior` and region lines, because only it is what #260
96
+ // derived them FOR. A procedure that swaps to a second handler label has a
97
+ // second region nobody has classified, and inventing one here would be the
98
+ // re-classification this module exists to avoid.
99
+ const regionOwner = policy.handlerStartLine === null ? null : state.openedTarget;
100
+ const nodeIdByKey = new Map();
101
+ for (const def of state.labelDefs) {
102
+ const isHandler = state.targets.has(def.key);
103
+ const nodeId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'label', def.name, def.line);
104
+ // `definedLabels` already kept only the first definition per key, so a
105
+ // repeat can only arrive from malformed VBA. Keep the first.
106
+ if (nodeIdByKey.has(def.key))
107
+ continue;
108
+ nodeIdByKey.set(def.key, nodeId);
109
+ const metadata = { isHandler };
110
+ if (isHandler && def.key === regionOwner) {
111
+ metadata.handlerBehavior = policy.behavior;
112
+ metadata.regionStartLine = policy.handlerStartLine;
113
+ metadata.regionEndLine = policy.handlerEndLine;
114
+ }
115
+ ctx.nodes.push({
116
+ id: nodeId,
117
+ kind: 'label',
118
+ name: def.name,
119
+ qualifiedName: `${qualifiedPrefix}.${def.name}`,
120
+ filePath: ctx.filePath,
121
+ language: 'vba',
122
+ startLine: def.line,
123
+ // A handler's body runs from its label to the procedure's end, so the
124
+ // node spans it. A control-flow label is a jump target and nothing
125
+ // more — it owns exactly its own line.
126
+ endLine: isHandler ? endLine : def.line,
127
+ startColumn: def.column,
128
+ endColumn: def.column + def.name.length,
129
+ metadata,
130
+ updatedAt: Date.now(),
131
+ });
132
+ ctx.edges.push({
133
+ source: procedureNode.id,
134
+ target: nodeId,
135
+ kind: 'contains',
136
+ });
137
+ }
138
+ for (const site of state.onErrorSites) {
139
+ emitJump(ctx, procedureNode.id, nodeIdByKey, site, 'handles-error', exports.ERROR_HANDLER_SYNTHESIZED_BY);
140
+ }
141
+ for (const site of state.gotoSites) {
142
+ emitJump(ctx, procedureNode.id, nodeIdByKey, site, 'references', exports.GOTO_SYNTHESIZED_BY);
143
+ }
144
+ }
145
+ /**
146
+ * One jump: an edge onto the label's node when the procedure defines it, an
147
+ * `UnresolvedReference` when it does not.
148
+ *
149
+ * The unresolved row keeps `referenceKind: 'references'` for BOTH jump kinds.
150
+ * `handles-error` would be wrong there: the row records a target that does
151
+ * not exist, so nothing routes errors to it, and a resolver that later found
152
+ * a same-named symbol elsewhere in the project would materialise a
153
+ * cross-procedure error edge VBA's own scoping rules forbid.
154
+ */
155
+ function emitJump(ctx, procedureNodeId, nodeIdByKey, site, edgeKind, synthesizedBy) {
156
+ const targetId = nodeIdByKey.get(site.key);
157
+ if (targetId) {
158
+ ctx.edges.push({
159
+ source: procedureNodeId,
160
+ target: targetId,
161
+ kind: edgeKind,
162
+ provenance: 'heuristic',
163
+ metadata: { synthesizedBy },
164
+ line: site.line,
165
+ column: site.column,
166
+ });
167
+ return;
168
+ }
169
+ ctx.unresolvedReferences.push({
170
+ fromNodeId: procedureNodeId,
171
+ referenceName: site.name,
172
+ referenceKind: 'references',
173
+ line: site.line,
174
+ column: site.column,
175
+ filePath: ctx.filePath,
176
+ language: 'vba',
177
+ metadata: { synthesizedBy: exports.GOTO_UNRESOLVED_SYNTHESIZED_BY },
178
+ });
179
+ }
180
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../src/extraction/vba/labels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Module-level variable read/write sweep (issue #251).
3
+ *
4
+ * The dims classifier emits one `variable` node per module-level
5
+ * declaration and registers the name on `ctx.moduleVariables`. A node
6
+ * nobody points at answers nothing, so this sweep supplies the other
7
+ * half: for every procedure body line, an identifier that matches one of
8
+ * THIS FILE's module-level variable names becomes an
9
+ * `UnresolvedReference` tagged `synthesizedBy: 'vba-module-var'`, with
10
+ * `referenceKind: 'property-get'` for a read and `'property-set'` for a
11
+ * write.
12
+ *
13
+ * The gate is the whole design. The sweep never looks for "identifiers
14
+ * that might be variables"; it only ever asks whether a name is already
15
+ * registered as a module-level variable of the module being extracted.
16
+ * Any looser rule turns a codebase-wide sweep into thousands of
17
+ * references to names that merely collide.
18
+ *
19
+ * Issue #261 adds ONE field on top: when the matched variable is the project's
20
+ * error channel (`m_Error`, `p_Error`, … — see `./error-channel`), the
21
+ * reference also carries `metadata.errorChannel: true`. No new node kind, no
22
+ * new edge kind and not a single extra row: the propagation chain
23
+ * `inner procedure --property-set--> m_Error --property-get--> caller` is the
24
+ * one this sweep already emits, and the flag is what makes it identifiable as
25
+ * error flow instead of ordinary module state.
26
+ */
27
+ import { VbaExtractorContext, ProcInfo } from './context';
28
+ /**
29
+ * Scan one procedure-body line for reads and writes of this module's
30
+ * module-level variables.
31
+ *
32
+ * `line` must be the string-literal-masked line: a variable name that
33
+ * appears inside `"…"` is prose, not an access.
34
+ */
35
+ export declare function scanModuleVariableReferences(ctx: VbaExtractorContext, line: string, from: ProcInfo, lineNum: number): void;
36
+ //# sourceMappingURL=module-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-vars.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/module-vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAuE1D;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAuEN"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scanModuleVariableReferences = scanModuleVariableReferences;
4
+ const controls_1 = require("./controls");
5
+ const error_channel_1 = require("./error-channel");
6
+ /**
7
+ * Every bare identifier on the line. The sweep is a membership test
8
+ * against `ctx.moduleVariables`, so the pattern is deliberately generic —
9
+ * the filtering happens on the name, not on the shape around it.
10
+ */
11
+ const IDENTIFIER_RE = /\p{L}[\p{L}\p{N}_]*/gu;
12
+ /**
13
+ * A `Set` that is the ENTIRE prefix of the matched identifier, i.e. the
14
+ * line reads `Set <var> = …`. Stripping it lets the shared
15
+ * `isDirectAssignment` predicate see the same "nothing before the name,
16
+ * `=` after it" shape it was written for, so `Set gblConn = New …` is
17
+ * classified as the write it is instead of a read.
18
+ *
19
+ * `Set` cannot be stripped unconditionally: in `x = Set` — or in any
20
+ * expression where `Set` is not the leading statement keyword — the
21
+ * prefix is not blank, and `isDirectAssignment` already answers "read"
22
+ * correctly.
23
+ */
24
+ const LEADING_SET_RE = /^\s*Set\s+$/i;
25
+ /**
26
+ * Per-context de-dup of the emitted references, keyed by
27
+ * `(procedure, variable, direction)`.
28
+ *
29
+ * A procedure that reads `gblConn` on twenty lines couples to it once;
30
+ * twenty identical rows would not make that coupling any more visible,
31
+ * and the volume scales with the size of the corpus rather than with the
32
+ * number of real relationships. Reads and writes are keyed separately, so
33
+ * a procedure that both reads and writes a variable still reports both —
34
+ * which is the distinction the direction is there to make. The first
35
+ * occurrence keeps the line number, mirroring the same trade-off the
36
+ * `Me.<Control>` sweep already makes.
37
+ */
38
+ const seenModuleVarRefs = new WeakMap();
39
+ /**
40
+ * Issue #292: `On Error` is a statement keyword pair, not a variable read.
41
+ *
42
+ * `Public Error As String` is this codebase's error-channel convention and
43
+ * appears in dozens of classes, so without this mask every
44
+ * `On Error GoTo errores` line reports a `property-get` of a module variable
45
+ * named `Error` — 909 of them across the corpus. On its own that is a stray
46
+ * edge; once E4 labels channel references it becomes a confident claim that
47
+ * the line participates in error propagation, which is the worst failure mode
48
+ * available here.
49
+ *
50
+ * Replaced with spaces of the SAME LENGTH, deliberately: the emitted
51
+ * reference carries `column: m.index`, so a substitution that shifted offsets
52
+ * would corrupt every column on the line.
53
+ *
54
+ * Scoped to the `On Error` pair only. VBA also spells the `Error` statement
55
+ * (`Error 5`) and the `Error$()` function with the same word, and both have
56
+ * zero occurrences in this corpus; telling those from an identically-named
57
+ * variable is a parser problem rather than a masking one, so they are left
58
+ * for a corpus that actually contains them.
59
+ */
60
+ const ON_ERROR_KEYWORD_RE = /\bOn\s+Error\b/gi;
61
+ /** Blank out the `On Error` keyword pair, preserving every column offset. */
62
+ function maskOnErrorKeyword(line) {
63
+ ON_ERROR_KEYWORD_RE.lastIndex = 0;
64
+ if (!ON_ERROR_KEYWORD_RE.test(line))
65
+ return line;
66
+ ON_ERROR_KEYWORD_RE.lastIndex = 0;
67
+ return line.replace(ON_ERROR_KEYWORD_RE, (match) => ' '.repeat(match.length));
68
+ }
69
+ /**
70
+ * Scan one procedure-body line for reads and writes of this module's
71
+ * module-level variables.
72
+ *
73
+ * `line` must be the string-literal-masked line: a variable name that
74
+ * appears inside `"…"` is prose, not an access.
75
+ */
76
+ function scanModuleVariableReferences(ctx, line, from, lineNum) {
77
+ if (ctx.moduleVariables.size === 0)
78
+ return;
79
+ // Issue #261: the compiled error channel, hoisted out of the identifier
80
+ // loop. `null` means nobody supplied options (tests, out-of-repo callers),
81
+ // in which case the memoised default channel — the same four names — applies.
82
+ const channel = ctx.errorChannel ?? (0, error_channel_1.defaultErrorChannel)();
83
+ // Issue #205 scoping: names this procedure declares itself — its
84
+ // parameters and its own `Dim` / `Static` declarations — are locals that
85
+ // happen to share a name with module state. Reading one of those is not
86
+ // a read of the module variable.
87
+ const shadowed = ctx.procLocalNames.get(String(from.startLine));
88
+ let seen = seenModuleVarRefs.get(ctx);
89
+ if (!seen) {
90
+ seen = new Set();
91
+ seenModuleVarRefs.set(ctx, seen);
92
+ }
93
+ // Issue #292: mask the `On Error` keyword pair before the identifier walk.
94
+ const scanLine = maskOnErrorKeyword(line);
95
+ IDENTIFIER_RE.lastIndex = 0;
96
+ let m;
97
+ while ((m = IDENTIFIER_RE.exec(scanLine)) !== null) {
98
+ const name = m[0];
99
+ const key = name.toLowerCase();
100
+ if (!ctx.moduleVariables.has(key))
101
+ continue;
102
+ if (shadowed?.has(key))
103
+ continue;
104
+ // `obj.gblConn` / `Me!gblConn` names a member of something else that
105
+ // happens to be spelled like this module's variable. The module
106
+ // variable itself is only ever reached by its bare name.
107
+ const previous = m.index > 0 ? scanLine.charAt(m.index - 1) : '';
108
+ if (previous === '.' || previous === '!')
109
+ continue;
110
+ const before = scanLine.slice(0, m.index);
111
+ const after = scanLine.slice(m.index + name.length);
112
+ const isWrite = (0, controls_1.isDirectAssignment)(before.replace(LEADING_SET_RE, ''), after);
113
+ const referenceKind = isWrite ? 'property-set' : 'property-get';
114
+ const fromNodeId = ctx.findOrCreateFunctionNodeId(from);
115
+ const dedupeKey = `${fromNodeId}\0${key}\0${referenceKind}`;
116
+ if (seen.has(dedupeKey))
117
+ continue;
118
+ seen.add(dedupeKey);
119
+ const declaredName = ctx.moduleVariables.get(key).name;
120
+ ctx.unresolvedReferences.push({
121
+ fromNodeId,
122
+ referenceName: declaredName,
123
+ referenceKind,
124
+ line: lineNum,
125
+ column: m.index,
126
+ filePath: ctx.filePath,
127
+ language: 'vba',
128
+ metadata: {
129
+ synthesizedBy: 'vba-module-var',
130
+ access: isWrite ? 'write' : 'read',
131
+ // Issue #261: this variable IS the error channel, so this reference
132
+ // is a hop of the error-propagation chain rather than ordinary
133
+ // module state. Set on reads and writes alike — the write is where
134
+ // the message enters, the read is where the caller picks it up, and
135
+ // an answer to "how does this error reach the user" needs both.
136
+ //
137
+ // Only ever `true`; its ABSENCE is the "not the channel" encoding, so
138
+ // this adds a key to a minority of rows instead of a `false` to every
139
+ // one of them (the same shape #260 chose for `inErrorHandler`).
140
+ ...((0, error_channel_1.isErrorChannelName)(channel, declaredName) ? { errorChannel: true } : {}),
141
+ },
142
+ });
143
+ }
144
+ }
145
+ //# sourceMappingURL=module-vars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-vars.js","sourceRoot":"","sources":["../../../src/extraction/vba/module-vars.ts"],"names":[],"mappings":"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"}