@aroman22/codegraph-vba-darwin-arm64 1.10.0 → 1.11.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 (90) hide show
  1. package/lib/dist/db/queries.d.ts +37 -0
  2. package/lib/dist/db/queries.d.ts.map +1 -1
  3. package/lib/dist/db/queries.js +33 -0
  4. package/lib/dist/db/queries.js.map +1 -1
  5. package/lib/dist/extraction/frameworks/dysflow-export.d.ts +37 -0
  6. package/lib/dist/extraction/frameworks/dysflow-export.d.ts.map +1 -0
  7. package/lib/dist/extraction/frameworks/dysflow-export.js +121 -0
  8. package/lib/dist/extraction/frameworks/dysflow-export.js.map +1 -0
  9. package/lib/dist/extraction/frameworks/index.d.ts +20 -0
  10. package/lib/dist/extraction/frameworks/index.d.ts.map +1 -0
  11. package/lib/dist/extraction/frameworks/index.js +24 -0
  12. package/lib/dist/extraction/frameworks/index.js.map +1 -0
  13. package/lib/dist/extraction/index.d.ts.map +1 -1
  14. package/lib/dist/extraction/index.js +25 -5
  15. package/lib/dist/extraction/index.js.map +1 -1
  16. package/lib/dist/extraction/parse-pool.d.ts +10 -0
  17. package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
  18. package/lib/dist/extraction/parse-pool.js +2 -0
  19. package/lib/dist/extraction/parse-pool.js.map +1 -1
  20. package/lib/dist/extraction/parse-worker.js +6 -2
  21. package/lib/dist/extraction/parse-worker.js.map +1 -1
  22. package/lib/dist/extraction/tree-sitter.d.ts +9 -1
  23. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  24. package/lib/dist/extraction/tree-sitter.js +58 -5
  25. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  26. package/lib/dist/extraction/vba/call-sweep.d.ts +43 -0
  27. package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
  28. package/lib/dist/extraction/vba/call-sweep.js +155 -66
  29. package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
  30. package/lib/dist/extraction/vba/calls.d.ts.map +1 -1
  31. package/lib/dist/extraction/vba/calls.js +6 -0
  32. package/lib/dist/extraction/vba/calls.js.map +1 -1
  33. package/lib/dist/extraction/vba/context.d.ts +109 -1
  34. package/lib/dist/extraction/vba/context.d.ts.map +1 -1
  35. package/lib/dist/extraction/vba/context.js +155 -2
  36. package/lib/dist/extraction/vba/context.js.map +1 -1
  37. package/lib/dist/extraction/vba/declarations.d.ts +38 -2
  38. package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
  39. package/lib/dist/extraction/vba/declarations.js +217 -129
  40. package/lib/dist/extraction/vba/declarations.js.map +1 -1
  41. package/lib/dist/extraction/vba/dims.d.ts +35 -1
  42. package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
  43. package/lib/dist/extraction/vba/dims.js +185 -109
  44. package/lib/dist/extraction/vba/dims.js.map +1 -1
  45. package/lib/dist/extraction/vba/enums-consts.d.ts +47 -7
  46. package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
  47. package/lib/dist/extraction/vba/enums-consts.js +212 -139
  48. package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
  49. package/lib/dist/extraction/vba/event-synth.d.ts +3 -0
  50. package/lib/dist/extraction/vba/event-synth.d.ts.map +1 -0
  51. package/lib/dist/extraction/vba/event-synth.js +176 -0
  52. package/lib/dist/extraction/vba/event-synth.js.map +1 -0
  53. package/lib/dist/extraction/vba/implements.d.ts +16 -0
  54. package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
  55. package/lib/dist/extraction/vba/implements.js +43 -12
  56. package/lib/dist/extraction/vba/implements.js.map +1 -1
  57. package/lib/dist/extraction/vba/procedures.d.ts +20 -0
  58. package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
  59. package/lib/dist/extraction/vba/procedures.js +48 -13
  60. package/lib/dist/extraction/vba/procedures.js.map +1 -1
  61. package/lib/dist/extraction/vba/rules.d.ts +125 -0
  62. package/lib/dist/extraction/vba/rules.d.ts.map +1 -0
  63. package/lib/dist/extraction/vba/rules.js +49 -0
  64. package/lib/dist/extraction/vba/rules.js.map +1 -0
  65. package/lib/dist/extraction/vba-extractor.d.ts +77 -1
  66. package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
  67. package/lib/dist/extraction/vba-extractor.js +177 -15
  68. package/lib/dist/extraction/vba-extractor.js.map +1 -1
  69. package/lib/dist/extraction/vba-preprocess.d.ts +11 -1
  70. package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
  71. package/lib/dist/extraction/vba-preprocess.js +45 -16
  72. package/lib/dist/extraction/vba-preprocess.js.map +1 -1
  73. package/lib/dist/extraction/vba-timing.d.ts +38 -0
  74. package/lib/dist/extraction/vba-timing.d.ts.map +1 -0
  75. package/lib/dist/extraction/vba-timing.js +203 -0
  76. package/lib/dist/extraction/vba-timing.js.map +1 -0
  77. package/lib/dist/index.d.ts.map +1 -1
  78. package/lib/dist/index.js +22 -0
  79. package/lib/dist/index.js.map +1 -1
  80. package/lib/dist/project-config.d.ts +31 -0
  81. package/lib/dist/project-config.d.ts.map +1 -1
  82. package/lib/dist/project-config.js +75 -22
  83. package/lib/dist/project-config.js.map +1 -1
  84. package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
  85. package/lib/dist/resolution/frameworks/index.js +7 -0
  86. package/lib/dist/resolution/frameworks/index.js.map +1 -1
  87. package/lib/node_modules/.modules.yaml +1 -1
  88. package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
  89. package/lib/package.json +2 -1
  90. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,40 @@
1
1
  import { VbaExtractorContext, VbaClassifier } from './context';
2
+ import { VbaExtractionRule } from './rules';
2
3
  /**
3
- * Issue #83: factory for the Dim / WithEvents classifier. Stateless per-line.
4
+ * Issue #153: the declarative rule table for the Dim / WithEvents
5
+ * concern. Two rules:
6
+ *
7
+ * - `dim-decl` — match a `Dim|Private|Public|Global|Static
8
+ * <var> [As [New] <TypePart>[.<TypePart>]][, …]`
9
+ * declaration; populate `localVarTypeMap` and
10
+ * emit one `references` edge per non-primitive
11
+ * type (or per qualified outer type).
12
+ * - `withevents-decl`— match a `[Dim|Private|Public|Global|Static]
13
+ * WithEvents <var> As <FormType>` declaration;
14
+ * populate `localVarTypeMap` with `withEvents: true`,
15
+ * emit a `references` edge (synthesizedBy:
16
+ * `vba-withevents`) and a `subscribes-event` edge.
17
+ *
18
+ * The two rules are dispatched independently and BOTH can fire on the
19
+ * same line in principle (a `WithEvents` line does NOT match the
20
+ * `Dim|Private|...` prefix because the negative lookahead excludes it).
21
+ * The `dim-decl` rule's `count` hook reports the number of
22
+ * non-primitive `references` edges it emitted, so a multi-variable
23
+ * `Dim a As Foo, b As Bar` line adds 2 to the classifier count, and a
24
+ * bare `Dim x` line adds 0 (the bare-Dim path is a `localVarTypeMap`
25
+ * only side effect, no graph edges).
26
+ *
27
+ * No inter-line state — each rule is self-contained.
28
+ */
29
+ export declare const RULES: readonly VbaExtractionRule<unknown>[];
30
+ /**
31
+ * Issue #83: factory for the Dim / WithEvents classifier.
32
+ *
33
+ * The body walks the declarative `RULES` table (Issue #153). The two
34
+ * rules are independent: `dim-decl` handles typed declarations
35
+ * (REJECTED if the line is a `WithEvents` because the prefix
36
+ * negative-lookahead excludes `WithEvents`), `withevents-decl`
37
+ * handles WithEvents. No inter-line state.
4
38
  */
5
39
  export declare function createDimsClassifier(): VbaClassifier;
6
40
  /**
@@ -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;AAqE/D;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,CA4HpD;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,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAiFnE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EAyItD,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,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RULES = void 0;
3
4
  exports.createDimsClassifier = createDimsClassifier;
4
5
  exports.sweepDimsAndWithEvents = sweepDimsAndWithEvents;
5
6
  const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
6
7
  const constants_1 = require("./constants");
8
+ const rules_1 = require("./rules");
7
9
  /**
8
10
  * Check that a line is a variable declaration and NOT a Sub/Function/
9
11
  * Property/Const/WithEvents header (those have their own sweeps).
@@ -64,124 +66,198 @@ const BARE_DIM_VAR_RE = /^\s*(?:Dim|Private|Public|Global|Static)\s+(\p{L}[\p{L}
64
66
  /** `WithEvents m_X As Form_Foo` — Dim/Private/Public/Global/Static prefix is optional. */
65
67
  const WITHEVENTS_RE = /^\s*(?:(?:Dim|Private|Public|Global|Static)\s+)?WithEvents\s+\p{L}[\p{L}\p{N}_]*\s+As\s+(\p{L}[\p{L}\p{N}_]*)/iu;
66
68
  /**
67
- * Issue #83: factory for the Dim / WithEvents classifier. Stateless per-line.
69
+ * Capture the variable name from a WithEvents line (used to populate
70
+ * `localVarTypeMap` and to stamp `metadata.variableName` on the
71
+ * references edge — see `withevents-decl` rule's description for the
72
+ * full rationale tied to issue #150).
68
73
  */
69
- function createDimsClassifier() {
70
- return {
71
- name: 'dims',
72
- count: 0,
73
- classifyLine(line, i, ctx) {
74
- const lineNum = i + 1;
75
- // Fix 1 + Fix 3 (Issues #1, #3): replace the old single-match
76
- // DIM_QUAL_RE / DIM_UNQUAL_RE pair with a global scan that handles
77
- // `As New <Type>`, multi-variable `Dim a As Foo, b As Bar`, and
78
- // qualified `Dim x As Foo.Bar` in a single pass.
79
- if (DIM_DECL_PREFIX_RE.test(line)) {
80
- DIM_ALL_VARS_RE.lastIndex = 0;
81
- let m;
82
- while ((m = DIM_ALL_VARS_RE.exec(line)) !== null) {
83
- const varName = m[1] ?? '';
84
- // Issue #54: DIM_ALL_VARS_RE groups (2) and (3) are alternative
85
- // captures for the same outer-type position — the bracketed
86
- // alternative wins when present, the bare one otherwise. The
87
- // captured value is already unwrapped (the `[...]` is consumed
88
- // by the regex, group (2) holds the inner content). Same shape
89
- // for the inner type at groups (4)/(5).
90
- const outerType = m[2] ?? m[3] ?? '';
91
- const innerType = m[4] ?? m[5] ?? '';
92
- // Fix 2 (Issue #2): populate the local var type map so that
93
- // `sweepCallsAndSql` can gate qualified statement-form calls.
94
- if (varName && outerType) {
95
- ctx.localVarTypeMap.set(varName.toLowerCase(), {
96
- outer: outerType,
97
- qualified: !!innerType,
98
- });
99
- }
100
- if (innerType) {
101
- // Qualified form (`Dim x As Foo.Bar`) emit reference to the
102
- // outer type `Foo` (same behaviour as the old DIM_QUAL_RE path).
103
- if (outerType) {
104
- ctx.emitReference(outerType, lineNum, 0, 'vba-name-resolution');
105
- this.count++;
106
- }
107
- }
108
- else {
109
- // Unqualified form (`Dim x As SomeType`, `Dim x As New SomeType`)
110
- // — emit reference only when the type is not a primitive or keyword.
111
- if (outerType && !constants_1.PRIMITIVE_TYPES.has(outerType.toLowerCase())) {
112
- ctx.emitReference(outerType, lineNum, 0, 'vba-name-resolution');
113
- this.count++;
114
- }
74
+ const WITHEVENTS_VAR_RE = /^\s*(?:(?:Dim|Private|Public|Global|Static)\s+)?WithEvents\s+(\p{L}[\p{L}\p{N}_]*)/iu;
75
+ /** Helper regex for the bare-Dim fallback path — extracts an `As <Type>` continuation. */
76
+ const DIM_AS_TYPE_RE = /\bAs\s+(\p{L}[\p{L}\p{N}_]*)/iu;
77
+ /**
78
+ * Issue #153: the declarative rule table for the Dim / WithEvents
79
+ * concern. Two rules:
80
+ *
81
+ * - `dim-decl` — match a `Dim|Private|Public|Global|Static
82
+ * <var> [As [New] <TypePart>[.<TypePart>]][, …]`
83
+ * declaration; populate `localVarTypeMap` and
84
+ * emit one `references` edge per non-primitive
85
+ * type (or per qualified outer type).
86
+ * - `withevents-decl`— match a `[Dim|Private|Public|Global|Static]
87
+ * WithEvents <var> As <FormType>` declaration;
88
+ * populate `localVarTypeMap` with `withEvents: true`,
89
+ * emit a `references` edge (synthesizedBy:
90
+ * `vba-withevents`) and a `subscribes-event` edge.
91
+ *
92
+ * The two rules are dispatched independently and BOTH can fire on the
93
+ * same line in principle (a `WithEvents` line does NOT match the
94
+ * `Dim|Private|...` prefix because the negative lookahead excludes it).
95
+ * The `dim-decl` rule's `count` hook reports the number of
96
+ * non-primitive `references` edges it emitted, so a multi-variable
97
+ * `Dim a As Foo, b As Bar` line adds 2 to the classifier count, and a
98
+ * bare `Dim x` line adds 0 (the bare-Dim path is a `localVarTypeMap`
99
+ * only side effect, no graph edges).
100
+ *
101
+ * No inter-line state — each rule is self-contained.
102
+ */
103
+ exports.RULES = [
104
+ (0, rules_1.defineRule)({
105
+ id: 'dim-decl',
106
+ description: 'Match a `Dim|Private|Public|Global|Static <var> [As [New] <Type>][, …]` declaration; populate `localVarTypeMap` and emit one `vba-name-resolution` `references` edge per non-primitive type (or per qualified outer type).',
107
+ pattern: DIM_DECL_PREFIX_RE,
108
+ count: (result) => result.edges,
109
+ emit: (_m, ctx, line, lineNum) => {
110
+ // Re-run the prefix check inside the emit (the pattern is a
111
+ // RegExp without /g so `.test()` is enough and idempotent). This
112
+ // keeps the rule table's contract "pattern matches → emit fires"
113
+ // while the emit body is the same code that used to live inline.
114
+ let edgesEmitted = 0;
115
+ if (!DIM_DECL_PREFIX_RE.test(line))
116
+ return null;
117
+ DIM_ALL_VARS_RE.lastIndex = 0;
118
+ let m;
119
+ while ((m = DIM_ALL_VARS_RE.exec(line)) !== null) {
120
+ const varName = m[1] ?? '';
121
+ // Issue #54: DIM_ALL_VARS_RE groups (2) and (3) are alternative
122
+ // captures for the same outer-type position — the bracketed
123
+ // alternative wins when present, the bare one otherwise. The
124
+ // captured value is already unwrapped (the `[...]` is consumed
125
+ // by the regex, group (2) holds the inner content). Same shape
126
+ // for the inner type at groups (4)/(5).
127
+ const outerType = m[2] ?? m[3] ?? '';
128
+ const innerType = m[4] ?? m[5] ?? '';
129
+ // Fix 2 (Issue #2): populate the local var type map so that
130
+ // `sweepCallsAndSql` can gate qualified statement-form calls.
131
+ if (varName && outerType) {
132
+ ctx.localVarTypeMap.set(varName.toLowerCase(), {
133
+ outer: outerType,
134
+ qualified: !!innerType,
135
+ });
136
+ }
137
+ if (innerType) {
138
+ // Qualified form (`Dim x As Foo.Bar`) — emit reference to the
139
+ // outer type `Foo` (same behaviour as the old DIM_QUAL_RE path).
140
+ if (outerType) {
141
+ ctx.emitReference(outerType, lineNum, 0, 'vba-name-resolution');
142
+ edgesEmitted++;
115
143
  }
116
144
  }
117
- // Antigravity audit Task 3: bare `Dim x` (no `As` clause) and
118
- // explicit-primitive `Dim x As <primitive>` declarations must
119
- // still register `x` in `localVarTypeMap` so the qualified-call
120
- // site scan in `scanCallSites` can gate the dead-end stub that
121
- // no resolver could ever repoint.
122
- //
123
- // Captures the FIRST variable name only. Multi-variable bare
124
- // Dim (e.g. `Dim a, b, c` without an `As` clause) is rare in
125
- // real Dysflow fixtures and is intentionally NOT tracked here —
126
- // those bare variables fall back to the undeclared-receiver
127
- // path, which is the conservative choice. Skip if the typed-form
128
- // loop already populated the entry.
129
- const bm = BARE_DIM_VAR_RE.exec(line);
130
- if (bm) {
131
- const varName = bm[1] ?? '';
132
- if (varName) {
133
- const key = varName.toLowerCase();
134
- if (!ctx.localVarTypeMap.has(key)) {
135
- // Look for an `As <Type>` continuation on the same line so the
136
- // outer type matches the existing typed-form behaviour. If
137
- // absent, the variable is implicit `Variant` per VBA semantics.
138
- const asRe = /\bAs\s+(\p{L}[\p{L}\p{N}_]*)/iu;
139
- const asMatch = asRe.exec(line);
140
- const outer = asMatch ? (asMatch[1] ?? '').toLowerCase() : 'variant';
141
- ctx.localVarTypeMap.set(key, {
142
- outer,
143
- qualified: false,
144
- });
145
- }
145
+ else {
146
+ // Unqualified form (`Dim x As SomeType`, `Dim x As New SomeType`)
147
+ // emit reference only when the type is not a primitive or keyword.
148
+ if (outerType && !constants_1.PRIMITIVE_TYPES.has(outerType.toLowerCase())) {
149
+ ctx.emitReference(outerType, lineNum, 0, 'vba-name-resolution');
150
+ edgesEmitted++;
146
151
  }
147
152
  }
148
153
  }
149
- // WithEvents declarations handled by their own regex; also populate
150
- // the local var type map for completeness.
151
- const weMatch = WITHEVENTS_RE.exec(line);
152
- if (weMatch) {
153
- const formType = weMatch[1] ?? '';
154
- if (formType) {
155
- // Extract the variable name from the WithEvents line for the map.
156
- const weVarM = /^\s*(?:(?:Dim|Private|Public|Global|Static)\s+)?WithEvents\s+(\p{L}[\p{L}\p{N}_]*)/iu.exec(line);
157
- const weVarName = weVarM?.[1] ?? '';
158
- if (weVarName) {
159
- ctx.localVarTypeMap.set(weVarName.toLowerCase(), {
160
- outer: formType,
154
+ // Antigravity audit Task 3: bare `Dim x` (no `As` clause) and
155
+ // explicit-primitive `Dim x As <primitive>` declarations must
156
+ // still register `x` in `localVarTypeMap` so the qualified-call
157
+ // site scan in `scanCallSites` can gate the dead-end stub that
158
+ // no resolver could ever repoint.
159
+ //
160
+ // Captures the FIRST variable name only. Multi-variable bare
161
+ // Dim (e.g. `Dim a, b, c` without an `As` clause) is rare in
162
+ // real Dysflow fixtures and is intentionally NOT tracked here —
163
+ // those bare variables fall back to the undeclared-receiver
164
+ // path, which is the conservative choice. Skip if the typed-form
165
+ // loop already populated the entry.
166
+ const bm = BARE_DIM_VAR_RE.exec(line);
167
+ if (bm) {
168
+ const varName = bm[1] ?? '';
169
+ if (varName) {
170
+ const key = varName.toLowerCase();
171
+ if (!ctx.localVarTypeMap.has(key)) {
172
+ // Look for an `As <Type>` continuation on the same line so the
173
+ // outer type matches the existing typed-form behaviour. If
174
+ // absent, the variable is implicit `Variant` per VBA semantics.
175
+ const asMatch = DIM_AS_TYPE_RE.exec(line);
176
+ const outer = asMatch ? (asMatch[1] ?? '').toLowerCase() : 'variant';
177
+ ctx.localVarTypeMap.set(key, {
178
+ outer,
161
179
  qualified: false,
162
- withEvents: true,
163
- variableName: weVarName,
164
180
  });
165
181
  }
166
- ctx.emitReference(formType, lineNum, 0, 'vba-withevents');
167
- const targetId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'class', formType, 0);
168
- const subscriberEdge = {
169
- source: ctx.moduleOrClassNode?.id ?? '',
170
- target: targetId,
171
- kind: 'subscribes-event',
172
- provenance: 'heuristic',
173
- metadata: {
174
- synthesizedBy: 'vba-withevents',
175
- variableName: weVarName || undefined,
176
- },
177
- line: lineNum,
178
- column: 0,
179
- };
180
- ctx.edges.push(subscriberEdge);
181
- if (!ctx.moduleOrClassNode) {
182
- ctx.pendingModuleOrClassSource.push(subscriberEdge);
183
- }
184
- this.count++;
182
+ }
183
+ }
184
+ return { edges: edgesEmitted };
185
+ },
186
+ }),
187
+ (0, rules_1.defineRule)({
188
+ id: 'withevents-decl',
189
+ description: 'Match a `[Dim|Private|Public|Global|Static] WithEvents <var> As <FormType>` declaration; populate `localVarTypeMap` with `withEvents: true`, emit a `vba-withevents` `references` edge AND a `subscribes-event` edge (the `variableName` metadata is preserved on both edges so the issue #150 event-handler synthesis pass can locate the handler Sub after the resolver repoints the references edge).',
190
+ pattern: WITHEVENTS_RE,
191
+ emit: (m, ctx, line, lineNum) => {
192
+ const formType = m[1] ?? '';
193
+ if (!formType)
194
+ return null;
195
+ // Extract the variable name from the WithEvents line for the map.
196
+ const weVarM = WITHEVENTS_VAR_RE.exec(line);
197
+ const weVarName = weVarM?.[1] ?? '';
198
+ if (weVarName) {
199
+ ctx.localVarTypeMap.set(weVarName.toLowerCase(), {
200
+ outer: formType,
201
+ qualified: false,
202
+ withEvents: true,
203
+ variableName: weVarName,
204
+ });
205
+ }
206
+ // Stamp `variableName` onto the `references` edge's metadata so
207
+ // the post-extraction event-handler synthesis pass (#150) can
208
+ // locate the `m_<var>_<event>` handler Sub even after
209
+ // `resolveVbaReferenceStubs` repoints this edge to the real
210
+ // class node AND CASCADE-deletes the companion
211
+ // `subscribes-event` edge along with the synthetic class stub.
212
+ // Without this, the variable name would be lost once the
213
+ // resolver runs, and the synthesis pass would have no way to
214
+ // bind the `WithEvents` binding to its handler.
215
+ ctx.emitReference(formType, lineNum, 0, 'vba-withevents', undefined, {
216
+ ...(weVarName ? { variableName: weVarName } : {}),
217
+ });
218
+ const targetId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'class', formType, 0);
219
+ const subscriberEdge = {
220
+ source: ctx.moduleOrClassNode?.id ?? '',
221
+ target: targetId,
222
+ kind: 'subscribes-event',
223
+ provenance: 'heuristic',
224
+ metadata: {
225
+ synthesizedBy: 'vba-withevents',
226
+ variableName: weVarName || undefined,
227
+ },
228
+ line: lineNum,
229
+ column: 0,
230
+ };
231
+ ctx.edges.push(subscriberEdge);
232
+ if (!ctx.moduleOrClassNode) {
233
+ ctx.pendingModuleOrClassSource.push(subscriberEdge);
234
+ }
235
+ return { name: formType };
236
+ },
237
+ }),
238
+ ];
239
+ /**
240
+ * Issue #83: factory for the Dim / WithEvents classifier.
241
+ *
242
+ * The body walks the declarative `RULES` table (Issue #153). The two
243
+ * rules are independent: `dim-decl` handles typed declarations
244
+ * (REJECTED if the line is a `WithEvents` because the prefix
245
+ * negative-lookahead excludes `WithEvents`), `withevents-decl`
246
+ * handles WithEvents. No inter-line state.
247
+ */
248
+ function createDimsClassifier() {
249
+ return {
250
+ name: 'dims',
251
+ count: 0,
252
+ classifyLine(line, i, ctx) {
253
+ const lineNum = i + 1;
254
+ for (const rule of exports.RULES) {
255
+ const m = (0, rules_1.matchRule)(rule.pattern, line);
256
+ if (!m)
257
+ continue;
258
+ const result = rule.emit(m, ctx, line, lineNum);
259
+ if (result !== null && result !== undefined) {
260
+ this.count += rule.count ? rule.count(result) : 1;
185
261
  }
186
262
  }
187
263
  },
@@ -1 +1 @@
1
- {"version":3,"file":"dims.js","sourceRoot":"","sources":["../../../src/extraction/vba/dims.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dims.js","sourceRoot":"","sources":["../../../src/extraction/vba/dims.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,53 @@
1
1
  import { VbaExtractorContext, VbaClassifier } from './context';
2
+ import { VbaExtractionRule } from './rules';
2
3
  /**
3
- * Issue #83: factory for the enum / const classifier. Closure state:
4
- * `currentEnum` (open `Enum ... End Enum` block).
4
+ * Issue #153: the declarative rule table for the enum / const concern.
5
+ * Six rules, partitioned by where they fire:
5
6
  *
6
- * Also resets + advances the SHARED `ctx.procStack`/`ctx.currentProcKey`
7
- * per line same protocol the pre-#83 sweep followed. The calls-sql
8
- * classifier runs AFTER this one in the per-line dispatch order and
9
- * applies the same protocol, so the end-of-line scope state is identical
10
- * to the legacy sequential-sweep behaviour.
7
+ * - `proc-start` (outside-enum-block) match a `Sub` /
8
+ * `Function` / `Property` header; push onto
9
+ * `ctx.procStack` and set `ctx.currentProcKey`
10
+ * so subsequent Const writes land in the
11
+ * per-proc resolution bucket.
12
+ * - `proc-end` (outside-enum-block) — match `End Sub` /
13
+ * `End Function` / `End Property`; pop the
14
+ * matching `procStack` entry.
15
+ * - `enum-start` (outside-enum-block) — match `[visibility]
16
+ * Enum <Name>`; emit an `enum` node + `contains`
17
+ * edge and mark `ctx.vbaEnumBlock`.
18
+ * - `enum-end` (inside-enum-block) — match `End Enum`; clear
19
+ * `ctx.vbaEnumBlock`.
20
+ * - `enum-member` (inside-enum-block) — match `<MemberName>
21
+ * [= <value>]`; emit an `enum_member` node + a
22
+ * `contains` edge from the open enum.
23
+ * - `const-decl` (outside-enum-block) — match `[visibility]
24
+ * Const <decls>`; always write the per-scope
25
+ * resolution bucket, and emit a `constant` node
26
+ * + `contains` edge ONLY when not inside a proc
27
+ * (proc-local Consts are not module symbols).
28
+ *
29
+ * The inter-line `ctx.procStack` / `ctx.currentProcKey` state is
30
+ * SHARED with the calls/SQL classifier (issue #52 protocol). The
31
+ * `ctx.vbaEnumBlock` state is local to this concern and lives on
32
+ * `ctx` for the same RULES-table-friendliness reason as
33
+ * `vbaDeclTypeBlock`.
34
+ */
35
+ export declare const RULES: readonly VbaExtractionRule<unknown>[];
36
+ /**
37
+ * Issue #83: factory for the enum / const classifier.
38
+ *
39
+ * The body walks the declarative `RULES` table (Issue #153) and
40
+ * honours each rule's `requires` precondition. The inter-line
41
+ * state — `ctx.procStack`, `ctx.currentProcKey`, and
42
+ * `ctx.vbaEnumBlock` — lives on `ctx` so the RULES table's `emit`
43
+ * functions can read/write it without taking a closure reference.
44
+ *
45
+ * Issue #52: the first invocation also resets the shared proc-stack
46
+ * + lookup key so leftover state from a previous `extract()` (only
47
+ * possible in tests that construct a fresh extractor and run twice)
48
+ * never leaks across sweeps. The walk below updates both every
49
+ * iteration; `sweepCallsAndSql` resets again at its own start, so
50
+ * the protocol stays consistent across both classifiers.
11
51
  */
12
52
  export declare function createEnumsConstsClassifier(): VbaClassifier;
13
53
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"enums-consts.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/enums-consts.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAqB/D;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,IAAI,aAAa,CAiK3D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjF"}
1
+ {"version":3,"file":"enums-consts.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/enums-consts.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAqBnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EAgKtD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,IAAI,aAAa,CA6B3D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjF"}