@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.
- package/lib/dist/bin/codegraph.js +13 -7
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/bin/daemon-release.d.ts +7 -0
- package/lib/dist/bin/daemon-release.d.ts.map +1 -0
- package/lib/dist/bin/daemon-release.js +18 -0
- package/lib/dist/bin/daemon-release.js.map +1 -0
- package/lib/dist/db/queries.d.ts +30 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +51 -1
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/extraction/access-erd-extractor.d.ts +57 -0
- package/lib/dist/extraction/access-erd-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/access-erd-extractor.js +389 -0
- package/lib/dist/extraction/access-erd-extractor.js.map +1 -0
- package/lib/dist/extraction/extraction-version.d.ts +1 -1
- package/lib/dist/extraction/extraction-version.js +1 -1
- package/lib/dist/extraction/grammars.d.ts +20 -0
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +34 -0
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +1 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +371 -351
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/parse-pool.d.ts +8 -3
- package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
- package/lib/dist/extraction/parse-pool.js +1 -2
- package/lib/dist/extraction/parse-pool.js.map +1 -1
- package/lib/dist/extraction/parse-worker.js +7 -6
- package/lib/dist/extraction/parse-worker.js.map +1 -1
- package/lib/dist/extraction/sql-query-extractor.d.ts +16 -14
- package/lib/dist/extraction/sql-query-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/sql-query-extractor.js +43 -31
- package/lib/dist/extraction/sql-query-extractor.js.map +1 -1
- package/lib/dist/extraction/sql-table-scan.d.ts +184 -0
- package/lib/dist/extraction/sql-table-scan.d.ts.map +1 -0
- package/lib/dist/extraction/sql-table-scan.js +288 -0
- package/lib/dist/extraction/sql-table-scan.js.map +1 -0
- package/lib/dist/extraction/tree-sitter.d.ts +10 -1
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +34 -3
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.d.ts +2 -7
- package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.js +144 -90
- package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
- package/lib/dist/extraction/vba/calls.d.ts +24 -4
- package/lib/dist/extraction/vba/calls.d.ts.map +1 -1
- package/lib/dist/extraction/vba/calls.js +42 -12
- package/lib/dist/extraction/vba/calls.js.map +1 -1
- package/lib/dist/extraction/vba/constants.d.ts +7 -14
- package/lib/dist/extraction/vba/constants.d.ts.map +1 -1
- package/lib/dist/extraction/vba/constants.js +8 -36
- package/lib/dist/extraction/vba/constants.js.map +1 -1
- package/lib/dist/extraction/vba/context.d.ts +443 -7
- package/lib/dist/extraction/vba/context.d.ts.map +1 -1
- package/lib/dist/extraction/vba/context.js +325 -29
- package/lib/dist/extraction/vba/context.js.map +1 -1
- package/lib/dist/extraction/vba/controls.d.ts +18 -1
- package/lib/dist/extraction/vba/controls.d.ts.map +1 -1
- package/lib/dist/extraction/vba/controls.js +99 -27
- package/lib/dist/extraction/vba/controls.js.map +1 -1
- package/lib/dist/extraction/vba/declarations.d.ts +1 -6
- package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
- package/lib/dist/extraction/vba/declarations.js +5 -39
- package/lib/dist/extraction/vba/declarations.js.map +1 -1
- package/lib/dist/extraction/vba/dims.d.ts +11 -7
- package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
- package/lib/dist/extraction/vba/dims.js +265 -29
- package/lib/dist/extraction/vba/dims.js.map +1 -1
- package/lib/dist/extraction/vba/docmd.d.ts +29 -2
- package/lib/dist/extraction/vba/docmd.d.ts.map +1 -1
- package/lib/dist/extraction/vba/docmd.js +297 -18
- package/lib/dist/extraction/vba/docmd.js.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.d.ts +7 -14
- package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.js +11 -45
- package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
- package/lib/dist/extraction/vba/error-channel.d.ts +57 -0
- package/lib/dist/extraction/vba/error-channel.d.ts.map +1 -0
- package/lib/dist/extraction/vba/error-channel.js +128 -0
- package/lib/dist/extraction/vba/error-channel.js.map +1 -0
- package/lib/dist/extraction/vba/errors.d.ts +64 -0
- package/lib/dist/extraction/vba/errors.d.ts.map +1 -0
- package/lib/dist/extraction/vba/errors.js +775 -0
- package/lib/dist/extraction/vba/errors.js.map +1 -0
- package/lib/dist/extraction/vba/filesystem-statements.d.ts +23 -0
- package/lib/dist/extraction/vba/filesystem-statements.d.ts.map +1 -0
- package/lib/dist/extraction/vba/filesystem-statements.js +70 -0
- package/lib/dist/extraction/vba/filesystem-statements.js.map +1 -0
- package/lib/dist/extraction/vba/implements.d.ts +1 -6
- package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
- package/lib/dist/extraction/vba/implements.js +1 -22
- package/lib/dist/extraction/vba/implements.js.map +1 -1
- package/lib/dist/extraction/vba/labels.d.ts +26 -0
- package/lib/dist/extraction/vba/labels.d.ts.map +1 -0
- package/lib/dist/extraction/vba/labels.js +180 -0
- package/lib/dist/extraction/vba/labels.js.map +1 -0
- package/lib/dist/extraction/vba/module-vars.d.ts +36 -0
- package/lib/dist/extraction/vba/module-vars.d.ts.map +1 -0
- package/lib/dist/extraction/vba/module-vars.js +145 -0
- package/lib/dist/extraction/vba/module-vars.js.map +1 -0
- package/lib/dist/extraction/vba/options.d.ts +88 -0
- package/lib/dist/extraction/vba/options.d.ts.map +1 -0
- package/lib/dist/extraction/vba/options.js +39 -0
- package/lib/dist/extraction/vba/options.js.map +1 -0
- package/lib/dist/extraction/vba/parameters.d.ts +35 -0
- package/lib/dist/extraction/vba/parameters.d.ts.map +1 -0
- package/lib/dist/extraction/vba/parameters.js +110 -0
- package/lib/dist/extraction/vba/parameters.js.map +1 -0
- package/lib/dist/extraction/vba/procedures.d.ts +1 -9
- package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
- package/lib/dist/extraction/vba/procedures.js +174 -112
- package/lib/dist/extraction/vba/procedures.js.map +1 -1
- package/lib/dist/extraction/vba/rules.d.ts +10 -5
- package/lib/dist/extraction/vba/rules.d.ts.map +1 -1
- package/lib/dist/extraction/vba/rules.js +19 -0
- package/lib/dist/extraction/vba/rules.js.map +1 -1
- package/lib/dist/extraction/vba/runtime-objects.d.ts +59 -0
- package/lib/dist/extraction/vba/runtime-objects.d.ts.map +1 -0
- package/lib/dist/extraction/vba/runtime-objects.js +106 -0
- package/lib/dist/extraction/vba/runtime-objects.js.map +1 -0
- package/lib/dist/extraction/vba/signature.d.ts +57 -0
- package/lib/dist/extraction/vba/signature.d.ts.map +1 -0
- package/lib/dist/extraction/vba/signature.js +164 -0
- package/lib/dist/extraction/vba/signature.js.map +1 -0
- package/lib/dist/extraction/vba/sql-wrapper.d.ts +76 -3
- package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -1
- package/lib/dist/extraction/vba/sql-wrapper.js +725 -151
- package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -1
- package/lib/dist/extraction/vba/tempvars.d.ts.map +1 -1
- package/lib/dist/extraction/vba/tempvars.js +4 -0
- package/lib/dist/extraction/vba/tempvars.js.map +1 -1
- package/lib/dist/extraction/vba/text-utils.d.ts +62 -2
- package/lib/dist/extraction/vba/text-utils.d.ts.map +1 -1
- package/lib/dist/extraction/vba/text-utils.js +84 -6
- package/lib/dist/extraction/vba/text-utils.js.map +1 -1
- package/lib/dist/extraction/vba-extractor.d.ts +18 -1
- package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-extractor.js +111 -16
- package/lib/dist/extraction/vba-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.d.ts +28 -14
- package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.js +56 -21
- package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-preprocess.d.ts +89 -3
- package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
- package/lib/dist/extraction/vba-preprocess.js +221 -57
- package/lib/dist/extraction/vba-preprocess.js.map +1 -1
- package/lib/dist/extraction/vba-source.d.ts +0 -10
- package/lib/dist/extraction/vba-source.d.ts.map +1 -1
- package/lib/dist/extraction/vba-source.js +0 -13
- package/lib/dist/extraction/vba-source.js.map +1 -1
- package/lib/dist/extraction/vba-test-manifest-extractor.d.ts +0 -6
- package/lib/dist/extraction/vba-test-manifest-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-test-manifest-extractor.js +0 -1
- package/lib/dist/extraction/vba-test-manifest-extractor.js.map +1 -1
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +9 -0
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/mcp/daemon-manager.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-manager.js +7 -3
- package/lib/dist/mcp/daemon-manager.js.map +1 -1
- package/lib/dist/mcp/daemon-paths.d.ts +6 -0
- package/lib/dist/mcp/daemon-paths.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-paths.js +15 -0
- package/lib/dist/mcp/daemon-paths.js.map +1 -1
- package/lib/dist/mcp/daemon-registry.d.ts +82 -7
- package/lib/dist/mcp/daemon-registry.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-registry.js +557 -45
- package/lib/dist/mcp/daemon-registry.js.map +1 -1
- package/lib/dist/mcp/daemon-watchdog.d.ts +12 -0
- package/lib/dist/mcp/daemon-watchdog.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-watchdog.js +37 -7
- package/lib/dist/mcp/daemon-watchdog.js.map +1 -1
- package/lib/dist/mcp/daemon.d.ts +20 -1
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +123 -30
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +13 -2
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts +32 -0
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +163 -31
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +29 -1
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/project-config.d.ts +43 -2
- package/lib/dist/project-config.d.ts.map +1 -1
- package/lib/dist/project-config.js +86 -2
- package/lib/dist/project-config.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +47 -2
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +160 -5
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +25 -0
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +59 -0
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/vba-runtime-objects.d.ts +11 -11
- package/lib/dist/resolution/vba-runtime-objects.d.ts.map +1 -1
- package/lib/dist/resolution/vba-runtime-objects.js +18 -38
- package/lib/dist/resolution/vba-runtime-objects.js.map +1 -1
- package/lib/dist/types.d.ts +13 -5
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +17 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/node_modules/.modules.yaml +1 -1
- package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
- package/lib/package.json +4 -1
- 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
|
-
|
|
23
|
-
|
|
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
|
|
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
|
|
73
|
+
return {
|
|
74
|
+
siblingPath: normalized.replace(/\.cls$/i, '.report.txt'),
|
|
75
|
+
bindingSource: null,
|
|
76
|
+
};
|
|
30
77
|
}
|
|
31
|
-
|
|
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
|
|
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
|
|
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 +
|
|
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
|
|
155
|
+
referenceKind: isDirectAssignment(before, after) ? 'property-set' : 'property-get',
|
|
93
156
|
line: lineNum,
|
|
94
|
-
column: m.index +
|
|
157
|
+
column: m.index + ME_PREFIX_LEN,
|
|
95
158
|
filePath: ctx.filePath,
|
|
96
159
|
language: 'vba',
|
|
97
|
-
metadata: {
|
|
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 +
|
|
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 +
|
|
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:
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const
|
|
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 +
|
|
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":";;
|
|
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 {
|
|
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,
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
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":";;;
|
|
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 {
|
|
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.
|
|
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,
|
|
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"}
|