@aroman22/codegraph-vba-darwin-arm64 1.15.0 → 1.17.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 +41 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +78 -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/graph/behavior-evidence.d.ts +162 -0
- package/lib/dist/graph/behavior-evidence.d.ts.map +1 -0
- package/lib/dist/graph/behavior-evidence.js +529 -0
- package/lib/dist/graph/behavior-evidence.js.map +1 -0
- package/lib/dist/index.d.ts +22 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +37 -1
- 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/server-instructions.d.ts +1 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +26 -4
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +12 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +92 -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/dist/utils/backtrace-helpers.d.ts +14 -2
- package/lib/dist/utils/backtrace-helpers.d.ts.map +1 -1
- package/lib/dist/utils/backtrace-helpers.js +81 -7
- package/lib/dist/utils/backtrace-helpers.js.map +1 -1
- package/lib/dist/utils/sql-impact-helpers.d.ts.map +1 -1
- package/lib/dist/utils/sql-impact-helpers.js +119 -30
- package/lib/dist/utils/sql-impact-helpers.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 +3 -1
- package/package.json +1 -1
|
@@ -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 calls/SQL concern.
|
|
@@ -7,6 +7,7 @@ import { VbaExtractionRule } from './rules';
|
|
|
7
7
|
* fit the declarative shape. The procedural scanners
|
|
8
8
|
* (`scanRaiseEvents`, `scanCallSites`, `scanMeControlReferences`,
|
|
9
9
|
* `scanSqlInLine`, `scanDoCmdOpenCalls`, `scanDoCmdOpenQuery`,
|
|
10
|
+
* `scanDoCmdObjectCalls`, `scanDoCmdCloseCalls`,
|
|
10
11
|
* `scanFormsBang`, `sweepTempVars`, statement/qualified call
|
|
11
12
|
* detection) walk the masked line scanning for call shapes that
|
|
12
13
|
* don't reduce to a single regex — they stay inside the factory's
|
|
@@ -49,10 +50,4 @@ export declare const RULES: readonly VbaExtractionRule<unknown>[];
|
|
|
49
50
|
* single regex.
|
|
50
51
|
*/
|
|
51
52
|
export declare function createCallsAndSqlClassifier(lines: readonly string[]): VbaClassifier;
|
|
52
|
-
/**
|
|
53
|
-
* Backward-compat wrapper (see procedures.ts). Returns void — the calls
|
|
54
|
-
* sweep never contributed to `hasAnySymbols` directly (every other
|
|
55
|
-
* concern's `count` is the signal the orchestrator reads).
|
|
56
|
-
*/
|
|
57
|
-
export declare function sweepCallsAndSql(ctx: VbaExtractorContext, src: string): void;
|
|
58
53
|
//# sourceMappingURL=call-sweep.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-sweep.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/call-sweep.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"call-sweep.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/call-sweep.ts"],"names":[],"mappings":"AASA,OAAO,EAAY,aAAa,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAwB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAiDlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EAgGtD,CAAC;AAyBF;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,aAAa,CA0Sf"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RULES = void 0;
|
|
4
4
|
exports.createCallsAndSqlClassifier = createCallsAndSqlClassifier;
|
|
5
|
-
exports.sweepCallsAndSql = sweepCallsAndSql;
|
|
6
5
|
/**
|
|
7
6
|
* Call/SQL sweep orchestrator (REQ-CODE-4, REQ-CODE-8). Walks the
|
|
8
7
|
* (uncommented) source once, maintaining the procedure stack and `With`
|
|
@@ -15,9 +14,11 @@ const text_utils_1 = require("./text-utils");
|
|
|
15
14
|
const rules_1 = require("./rules");
|
|
16
15
|
const calls_1 = require("./calls");
|
|
17
16
|
const controls_1 = require("./controls");
|
|
17
|
+
const module_vars_1 = require("./module-vars");
|
|
18
18
|
const docmd_1 = require("./docmd");
|
|
19
19
|
const tempvars_1 = require("./tempvars");
|
|
20
20
|
const sql_wrapper_1 = require("./sql-wrapper");
|
|
21
|
+
const filesystem_statements_1 = require("./filesystem-statements");
|
|
21
22
|
/**
|
|
22
23
|
* Issue #46: `Set <var> = New <Type>[.<Inner>]` late-instantiation.
|
|
23
24
|
* Groups: (1) variable name, (2) outer type, (3) optional inner type.
|
|
@@ -45,6 +46,7 @@ const WITH_END_RE = /^\s*End\s+With\b/iu;
|
|
|
45
46
|
* fit the declarative shape. The procedural scanners
|
|
46
47
|
* (`scanRaiseEvents`, `scanCallSites`, `scanMeControlReferences`,
|
|
47
48
|
* `scanSqlInLine`, `scanDoCmdOpenCalls`, `scanDoCmdOpenQuery`,
|
|
49
|
+
* `scanDoCmdObjectCalls`, `scanDoCmdCloseCalls`,
|
|
48
50
|
* `scanFormsBang`, `sweepTempVars`, statement/qualified call
|
|
49
51
|
* detection) walk the masked line scanning for call shapes that
|
|
50
52
|
* don't reduce to a single regex — they stay inside the factory's
|
|
@@ -89,7 +91,13 @@ exports.RULES = [
|
|
|
89
91
|
// Skip primitives defensively — consistent with the Dim sweep guard.
|
|
90
92
|
if (constants_1.PRIMITIVE_TYPES.has(outerType.toLowerCase()))
|
|
91
93
|
return null;
|
|
92
|
-
|
|
94
|
+
// Issue #205: write to the current procedure's bucket so a
|
|
95
|
+
// `Set x = New Foo` inside `Sub Bar` does not silently
|
|
96
|
+
// overwrite a `Dim x As Whatever` declaration in `Sub Baz`
|
|
97
|
+
// (or a module-level `Dim x As ModuleThing`). `currentProcKey`
|
|
98
|
+
// is maintained by the enum/const classifier, the sole writer of
|
|
99
|
+
// the shared scope stack during the main walk.
|
|
100
|
+
ctx.setLocalVarTypeInScope(ctx.currentProcKey, varName, {
|
|
93
101
|
outer: outerType,
|
|
94
102
|
// Mirror `Dim x As Foo.Bar`: qualified `Set rs = New
|
|
95
103
|
// DAO.Recordset` registers `qualified: true` so the PR #61
|
|
@@ -114,13 +122,20 @@ exports.RULES = [
|
|
|
114
122
|
const retType = factory ? ctx.functionReturnTypes.get(factory) : undefined;
|
|
115
123
|
if (!varName || !retType)
|
|
116
124
|
return null;
|
|
117
|
-
|
|
125
|
+
// Issue #205: the existing-key check uses the two-tier
|
|
126
|
+
// lookup (current proc → module) so a `Set x = Factory()`
|
|
127
|
+
// inside `Sub Bar` correctly yields to a `Dim x As Class`
|
|
128
|
+
// declared in `Sub Bar` (proc bucket) AND to a module-level
|
|
129
|
+
// `Dim x As ModuleClass` (module bucket). A proc-local
|
|
130
|
+
// `Dim x As Class` declared in `Sub Baz` (a different
|
|
131
|
+
// procedure) does NOT suppress this `set-call`.
|
|
132
|
+
const existing = ctx.lookupLocalVarType(varName);
|
|
118
133
|
const existingIsProjectClass = !!existing &&
|
|
119
134
|
!existing.qualified &&
|
|
120
135
|
!constants_1.PRIMITIVE_TYPES.has(existing.outer.toLowerCase());
|
|
121
136
|
if (existingIsProjectClass)
|
|
122
137
|
return null;
|
|
123
|
-
ctx.
|
|
138
|
+
ctx.setLocalVarTypeInScope(ctx.currentProcKey, varName, {
|
|
124
139
|
outer: retType,
|
|
125
140
|
qualified: false,
|
|
126
141
|
assignedWithSet: true,
|
|
@@ -150,12 +165,33 @@ exports.RULES = [
|
|
|
150
165
|
pattern: WITH_END_RE,
|
|
151
166
|
scan: 'masked',
|
|
152
167
|
requires: 'inside-procedure',
|
|
168
|
+
terminal: true,
|
|
153
169
|
emit: (_m, ctx) => {
|
|
154
170
|
ctx.vbaWithStack.pop();
|
|
155
171
|
return { kind: 'with-end' };
|
|
156
172
|
},
|
|
157
173
|
}),
|
|
158
174
|
];
|
|
175
|
+
/**
|
|
176
|
+
* A colon-separated single-line procedure (`Sub Foo(): Bar 1: End Sub`)
|
|
177
|
+
* carries its body on the declaration line. Split everything after the first
|
|
178
|
+
* `:` into statement clauses so the per-line scanners see the body instead of
|
|
179
|
+
* the `Sub Foo()` signature. `scanLine` must already be string-masked.
|
|
180
|
+
*
|
|
181
|
+
* Issue #265: extracted from the classifier body so it can be applied to both
|
|
182
|
+
* masks (spaces for the column-sensitive scanners, `_` for the statement-call
|
|
183
|
+
* detectors) without duplicating the split.
|
|
184
|
+
*/
|
|
185
|
+
function splitProcStartBodyClauses(scanLine) {
|
|
186
|
+
const colon = scanLine.indexOf(':');
|
|
187
|
+
if (colon < 0)
|
|
188
|
+
return [];
|
|
189
|
+
return scanLine
|
|
190
|
+
.slice(colon + 1)
|
|
191
|
+
.split(':')
|
|
192
|
+
.map((clause) => clause.trim())
|
|
193
|
+
.filter((clause) => clause.length > 0 && !/^End\s+(?:Sub|Function|Property)\b/i.test(clause));
|
|
194
|
+
}
|
|
159
195
|
/**
|
|
160
196
|
* Issue #83: factory for the calls/SQL classifier. The factory takes the
|
|
161
197
|
* pre-split `lines` array (so `trackSqlVariableAssignment` can do its
|
|
@@ -174,6 +210,7 @@ function createCallsAndSqlClassifier(lines) {
|
|
|
174
210
|
// Walk the source once, emitting call edges and SQL edges per line and
|
|
175
211
|
// tracking the current procedure stack.
|
|
176
212
|
const stack = [];
|
|
213
|
+
const moduleSqlVariables = new Map();
|
|
177
214
|
const sqlVariables = new Map();
|
|
178
215
|
// C2 fix: track each procedure's `endLine` (the line containing the
|
|
179
216
|
// matching `End Sub`/`End Function`/`End Property`) keyed by its
|
|
@@ -188,13 +225,13 @@ function createCallsAndSqlClassifier(lines) {
|
|
|
188
225
|
const lineNum = i + 1;
|
|
189
226
|
const procStart = constants_1.PROC_RE.exec(line);
|
|
190
227
|
if (procStart) {
|
|
191
|
-
//
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
228
|
+
// SQL variables are procedure-scoped, with module assignments as a
|
|
229
|
+
// fallback. Seed a fresh procedure bucket so common names such as
|
|
230
|
+
// `strSQL` cannot leak from the preceding procedure.
|
|
231
|
+
sqlVariables.clear();
|
|
232
|
+
for (const [name, value] of moduleSqlVariables) {
|
|
233
|
+
sqlVariables.set(name, value);
|
|
234
|
+
}
|
|
198
235
|
const name = procStart[3] ?? '';
|
|
199
236
|
const bucket = ctx.localProcs.get(name);
|
|
200
237
|
if (bucket) {
|
|
@@ -213,22 +250,31 @@ function createCallsAndSqlClassifier(lines) {
|
|
|
213
250
|
// procedure (a real bug — `Sub Foo()\n Bar 1\n` would never see
|
|
214
251
|
// the `Bar 1` call).
|
|
215
252
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
ctx.currentProcKey =
|
|
221
|
-
ctx.procStack.length > 0
|
|
222
|
-
? String(ctx.procStack[ctx.procStack.length - 1])
|
|
223
|
-
: 'module';
|
|
224
|
-
procEndLines.set(ending.startLine, lineNum);
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
253
|
+
// This is deliberately independent of the proc-start branch: a
|
|
254
|
+
// colon-separated single-line procedure contains both markers.
|
|
255
|
+
// Keep the frame alive until after scanners process its body.
|
|
256
|
+
const endsProcedure = constants_1.PROCEDURE_END_RE.test(line) && stack.length > 0;
|
|
227
257
|
// Fix 2 (Issue #2): mask string-literal content before call scanning so
|
|
228
258
|
// patterns like `modHelper.BuildQuery(` inside a string argument are not
|
|
229
259
|
// mistakenly treated as call sites. SQL scanning still uses the original
|
|
230
260
|
// line because SQL lives INSIDE string literals.
|
|
231
261
|
const callScanLine = (0, text_utils_1.maskStringContent)(line);
|
|
262
|
+
// Issue #265: the statement-form detectors run on a SECOND mask that
|
|
263
|
+
// fills string literals with `_` instead of spaces. The two lines are
|
|
264
|
+
// character-for-character the same length and differ only inside
|
|
265
|
+
// literals, but the space mask reduces `MsgBox "x"` to `MsgBox` plus
|
|
266
|
+
// trailing blanks — indistinguishable from a bare identifier read, and
|
|
267
|
+
// therefore from a possible `Const` read. The `_` mask keeps the
|
|
268
|
+
// argument list visible so the detector can tell a syntactically
|
|
269
|
+
// unambiguous call from an ambiguous bare identifier, while still
|
|
270
|
+
// hiding every literal's contents from the parser.
|
|
271
|
+
const stmtScanLine = (0, text_utils_1.maskStringContent)(line, '_');
|
|
272
|
+
const procStartBodyClauses = procStart
|
|
273
|
+
? splitProcStartBodyClauses(callScanLine)
|
|
274
|
+
: null;
|
|
275
|
+
const stmtProcStartBodyClauses = procStart
|
|
276
|
+
? splitProcStartBodyClauses(stmtScanLine)
|
|
277
|
+
: null;
|
|
232
278
|
// Issue #153: dispatch the declarative RULES table on the
|
|
233
279
|
// masked line. The four per-line patterns (set-new, set-call,
|
|
234
280
|
// with-start, with-end) all need the masked line because their
|
|
@@ -239,69 +285,93 @@ function createCallsAndSqlClassifier(lines) {
|
|
|
239
285
|
// rules only fire when the call-sweep's per-instance proc stack
|
|
240
286
|
// is non-empty (matching the legacy cascade's `if (stack.length
|
|
241
287
|
// > 0)` gate).
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
const matched = (0, rules_1.matchRuleForScan)(rule, line, callScanLine);
|
|
246
|
-
if (!matched)
|
|
247
|
-
continue;
|
|
248
|
-
const result = rule.emit(matched.match, ctx, matched.line, lineNum);
|
|
249
|
-
if (result !== null && result !== undefined) {
|
|
250
|
-
this.count += rule.count ? rule.count(result) : 1;
|
|
251
|
-
}
|
|
252
|
-
// `with-end` is short-circuited: a line that's `End With` is
|
|
253
|
-
// not also a `Set x = New ...`, so break the loop.
|
|
254
|
-
if (rule.id === 'with-end')
|
|
255
|
-
break;
|
|
256
|
-
}
|
|
288
|
+
this.count += (0, rules_1.runRules)(exports.RULES, ctx, line, callScanLine, lineNum, {
|
|
289
|
+
'inside-procedure': stack.length > 0,
|
|
290
|
+
});
|
|
257
291
|
// Don't scan call sites on the line that declares the procedure — it
|
|
258
292
|
// would match the proc name itself in `Sub Outer()`.
|
|
259
|
-
if (
|
|
293
|
+
if (stack.length > 0) {
|
|
260
294
|
const currentProc = stack[stack.length - 1];
|
|
261
|
-
|
|
262
|
-
|
|
295
|
+
const scanLines = procStartBodyClauses ?? [callScanLine];
|
|
296
|
+
for (const scanLine of scanLines) {
|
|
297
|
+
(0, calls_1.scanRaiseEvents)(ctx, scanLine, currentProc, lineNum);
|
|
298
|
+
(0, calls_1.scanCallSites)(ctx, scanLine, currentProc, lineNum);
|
|
299
|
+
}
|
|
263
300
|
}
|
|
264
301
|
// Hueco 1: capture `Me.<Control>` references. Only inside procedures
|
|
265
302
|
// because `Me` is only meaningful inside a form's class module.
|
|
266
|
-
|
|
267
|
-
|
|
303
|
+
//
|
|
304
|
+
// Issue #251: the module-level variable read/write scan rides the
|
|
305
|
+
// same masked line and the same "inside a procedure body" gate. It
|
|
306
|
+
// must not run on the signature line of a procedure — the empty
|
|
307
|
+
// `procStartBodyClauses` array supplies that, exactly as it does for
|
|
308
|
+
// the control scan.
|
|
309
|
+
if (stack.length > 0) {
|
|
310
|
+
const scanLines = procStartBodyClauses ?? [callScanLine];
|
|
311
|
+
for (const scanLine of scanLines) {
|
|
312
|
+
(0, controls_1.scanMeControlReferences)(ctx, scanLine, stack[stack.length - 1], lineNum);
|
|
313
|
+
(0, module_vars_1.scanModuleVariableReferences)(ctx, scanLine, stack[stack.length - 1], lineNum);
|
|
314
|
+
}
|
|
268
315
|
}
|
|
269
316
|
// SQL wrappers — only inside a procedure. Use the ORIGINAL line — SQL is
|
|
270
317
|
// inside string literals, so the masked line would strip the SQL content.
|
|
271
318
|
if (stack.length > 0) {
|
|
272
319
|
(0, sql_wrapper_1.trackSqlVariableAssignment)(lines, i, sqlVariables);
|
|
273
|
-
|
|
320
|
+
// Issue #253: the calling procedure is passed so a wrapper handed a
|
|
321
|
+
// bare saved-query name can emit `procedure -> query`, the hop that
|
|
322
|
+
// makes `procedure -> query -> table` traversable end to end.
|
|
323
|
+
(0, sql_wrapper_1.scanSqlInLine)(ctx, line, lineNum, sqlTargetsThisFile, sqlVariables, stack[stack.length - 1]);
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
// Preserve file/module-level assignments for use as the fallback in
|
|
327
|
+
// every procedure without mixing one procedure's locals into another.
|
|
328
|
+
(0, sql_wrapper_1.trackSqlVariableAssignment)(lines, i, moduleSqlVariables);
|
|
274
329
|
}
|
|
275
330
|
// H1 fix: detect statement-form Sub calls (no parens, no `Call` keyword).
|
|
276
331
|
// Issue #45: split single-line `If … Then <body>` clauses first so the
|
|
277
332
|
// actual call after `Then`/`Else`/`:` is not shadowed by the leading
|
|
278
333
|
// keyword.
|
|
279
|
-
if (stack.length > 0 && !procedureStartLines.has(lineNum)) {
|
|
334
|
+
if (stack.length > 0 && (!procedureStartLines.has(lineNum) || procStartBodyClauses?.length)) {
|
|
280
335
|
// Note: `Set x = New ...` and `Set x = <Factory>(...)` are now
|
|
281
336
|
// dispatched by the RULES table above. The factory body below
|
|
282
337
|
// focuses on the procedural call-site scans that don't
|
|
283
338
|
// reduce to a single regex.
|
|
284
|
-
|
|
339
|
+
// Issue #265: the statement/qualified/`With` detectors read the `_`
|
|
340
|
+
// mask so an argument list made only of string literals stays visible.
|
|
341
|
+
const clauseLines = stmtProcStartBodyClauses ?? (0, calls_1.splitSingleLineIfClauses)(stmtScanLine);
|
|
285
342
|
for (const clauseLine of clauseLines) {
|
|
343
|
+
const caller = stack[stack.length - 1];
|
|
344
|
+
// Issue #262: intrinsic filesystem STATEMENTS have reserved grammar,
|
|
345
|
+
// not user-call grammar. Claim their exact shapes before the generic
|
|
346
|
+
// statement-call detector can bind Kill/Open/Close to project code.
|
|
347
|
+
if ((0, filesystem_statements_1.emitVbaFilesystemStatementReference)(ctx, caller, clauseLine, lineNum)) {
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
286
350
|
const stmtCall = (0, calls_1.detectStatementCall)(clauseLine);
|
|
287
351
|
if (stmtCall) {
|
|
288
|
-
const caller = stack[stack.length - 1];
|
|
289
352
|
// Returns true when a same-file calls edge was emitted; false
|
|
290
353
|
// when the call was silenced (blacklist / runtime receiver /
|
|
291
354
|
// unresolvable same-file target).
|
|
292
|
-
const emitted = (0, calls_1.emitStatementCallEdge)(ctx, caller, stmtCall, lineNum);
|
|
355
|
+
const emitted = (0, calls_1.emitStatementCallEdge)(ctx, caller, stmtCall.name, lineNum);
|
|
293
356
|
// Round-3 (issue #108): if the statement-form Sub call did
|
|
294
|
-
// NOT resolve, surface it as an
|
|
295
|
-
//
|
|
296
|
-
//
|
|
297
|
-
// `
|
|
298
|
-
// `unqualified-ident
|
|
299
|
-
//
|
|
300
|
-
|
|
357
|
+
// NOT resolve, surface it as an unresolved reference. The
|
|
358
|
+
// const-first disambiguation rule (FR-3.1) keeps ambiguous
|
|
359
|
+
// bare-identifier reads out of the call bucket — a lone
|
|
360
|
+
// `HayErrorEnRiesgo` is equally a `Const` read, so it stays
|
|
361
|
+
// `unqualified-ident`.
|
|
362
|
+
//
|
|
363
|
+
// Issue #265: the two shapes that CANNOT be a Const read —
|
|
364
|
+
// `Call Escribir` (the keyword is only valid on a procedure)
|
|
365
|
+
// and `Escribir 1, 2` (a constant takes no argument list) —
|
|
366
|
+
// are syntactically unambiguous calls and carry the canonical
|
|
367
|
+
// `calls` kind instead, the same literal a resolved call edge
|
|
368
|
+
// uses. The row itself is unchanged in every other respect, so
|
|
369
|
+
// the two kinds only trade rows between them.
|
|
370
|
+
if (!emitted && stmtCall.name !== caller.name && !(0, constants_1.isVbaKeyword)(stmtCall.name)) {
|
|
301
371
|
ctx.unresolvedReferences.push({
|
|
302
372
|
fromNodeId: ctx.findOrCreateFunctionNodeId(caller),
|
|
303
|
-
referenceName: stmtCall,
|
|
304
|
-
referenceKind: 'unqualified-ident',
|
|
373
|
+
referenceName: stmtCall.name,
|
|
374
|
+
referenceKind: stmtCall.unambiguous ? 'calls' : 'unqualified-ident',
|
|
305
375
|
line: lineNum,
|
|
306
376
|
column: 0,
|
|
307
377
|
filePath: ctx.filePath,
|
|
@@ -360,16 +430,31 @@ function createCallsAndSqlClassifier(lines) {
|
|
|
360
430
|
const caller2 = stack[stack.length - 1];
|
|
361
431
|
// Issue #48: shared OpenForm/OpenReport dispatch; OpenQuery emits an
|
|
362
432
|
// `UnresolvedReference` and stays separate.
|
|
363
|
-
(0, docmd_1.scanDoCmdOpenCalls)(ctx, line, caller2, lineNum);
|
|
364
|
-
(0, docmd_1.scanDoCmdOpenQuery)(ctx, line, caller2, lineNum);
|
|
433
|
+
(0, docmd_1.scanDoCmdOpenCalls)(ctx, line, callScanLine, caller2, lineNum);
|
|
434
|
+
(0, docmd_1.scanDoCmdOpenQuery)(ctx, line, callScanLine, caller2, lineNum);
|
|
435
|
+
// Issue #254: every remaining DoCmd verb that names an Access object
|
|
436
|
+
// in a positional argument (RunMacro, TransferSpreadsheet, OutputTo,
|
|
437
|
+
// ...). One table-driven dispatch; emits references only, never nodes.
|
|
438
|
+
(0, docmd_1.scanDoCmdObjectCalls)(ctx, line, callScanLine, caller2, lineNum);
|
|
439
|
+
// Issue #246: `DoCmd.Close acForm|acReport, "X"` closes the lifecycle
|
|
440
|
+
// loop `opens-form` opens — a `references` edge to the SAME stub.
|
|
441
|
+
(0, docmd_1.scanDoCmdCloseCalls)(ctx, line, callScanLine, caller2, lineNum);
|
|
365
442
|
// Issue #44: cross-form bang references (`Forms!X` / `Forms("X")!Y`) —
|
|
366
443
|
// scan the unmasked line (form name lives in a string literal in the
|
|
367
444
|
// paren form).
|
|
368
|
-
(0, controls_1.scanFormsBang)(ctx, line, caller2, lineNum);
|
|
445
|
+
(0, controls_1.scanFormsBang)(ctx, line, callScanLine, caller2, lineNum);
|
|
369
446
|
// Issue #50: cross-form TempVars key accesses. Bang form scans the
|
|
370
447
|
// masked line, paren + Add forms scan the original.
|
|
371
448
|
(0, tempvars_1.sweepTempVars)(ctx, callScanLine, line, lineNum, caller2);
|
|
372
449
|
}
|
|
450
|
+
if (endsProcedure) {
|
|
451
|
+
const ending = stack.pop();
|
|
452
|
+
procEndLines.set(ending.startLine, lineNum);
|
|
453
|
+
sqlVariables.clear();
|
|
454
|
+
for (const [name, value] of moduleSqlVariables) {
|
|
455
|
+
sqlVariables.set(name, value);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
373
458
|
},
|
|
374
459
|
finalize(ctx) {
|
|
375
460
|
// Apply endLine to every emitted function node keyed by its startLine.
|
|
@@ -385,37 +470,6 @@ function createCallsAndSqlClassifier(lines) {
|
|
|
385
470
|
}
|
|
386
471
|
},
|
|
387
472
|
};
|
|
388
|
-
// Issue #52: reset the shared scope state on the first call so leftover
|
|
389
|
-
// state from a previous extract() (impossible in production but possible
|
|
390
|
-
// in unit tests that construct a fresh extractor and run twice) never
|
|
391
|
-
// leaks across sweeps. The walker here updates the scope every iteration
|
|
392
|
-
// AFTER the enums-consts classifier runs (it runs first per line); on the
|
|
393
|
-
// first call we also reset, so the initial state matches the legacy
|
|
394
|
-
// pre-loop setup.
|
|
395
|
-
let initialized = false;
|
|
396
|
-
const originalClassify = cls.classifyLine;
|
|
397
|
-
cls.classifyLine = function (line, i, ctx) {
|
|
398
|
-
if (!initialized) {
|
|
399
|
-
ctx.procStack.length = 0;
|
|
400
|
-
ctx.currentProcKey = 'module';
|
|
401
|
-
ctx.vbaWithStack.length = 0;
|
|
402
|
-
initialized = true;
|
|
403
|
-
}
|
|
404
|
-
return originalClassify.call(this, line, i, ctx);
|
|
405
|
-
};
|
|
406
473
|
return cls;
|
|
407
474
|
}
|
|
408
|
-
/**
|
|
409
|
-
* Backward-compat wrapper (see procedures.ts). Returns void — the calls
|
|
410
|
-
* sweep never contributed to `hasAnySymbols` directly (every other
|
|
411
|
-
* concern's `count` is the signal the orchestrator reads).
|
|
412
|
-
*/
|
|
413
|
-
function sweepCallsAndSql(ctx, src) {
|
|
414
|
-
const lines = src.split('\n');
|
|
415
|
-
const cls = createCallsAndSqlClassifier(lines);
|
|
416
|
-
for (let i = 0; i < lines.length; i++) {
|
|
417
|
-
cls.classifyLine(lines[i] ?? '', i, ctx);
|
|
418
|
-
}
|
|
419
|
-
cls.finalize?.(ctx);
|
|
420
|
-
}
|
|
421
475
|
//# sourceMappingURL=call-sweep.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-sweep.js","sourceRoot":"","sources":["../../../src/extraction/vba/call-sweep.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"call-sweep.js","sourceRoot":"","sources":["../../../src/extraction/vba/call-sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,13 +11,33 @@ export declare function scanCallSites(ctx: VbaExtractorContext, line: string, fr
|
|
|
11
11
|
* scan line, which makes global `:`/`Else` splitting safe.
|
|
12
12
|
*/
|
|
13
13
|
export declare function splitSingleLineIfClauses(line: string): string[];
|
|
14
|
+
/**
|
|
15
|
+
* Issue #265: the outcome of `detectStatementCall`.
|
|
16
|
+
*
|
|
17
|
+
* `unambiguous` records whether the *syntax* of the statement can only be a
|
|
18
|
+
* procedure call:
|
|
19
|
+
*
|
|
20
|
+
* - `Call MySub` — the `Call` keyword is only valid on a procedure.
|
|
21
|
+
* - `MySub 1, 2` — a constant cannot take an argument list.
|
|
22
|
+
* - `MySub` — AMBIGUOUS: a bare identifier is equally a `Const` read.
|
|
23
|
+
*
|
|
24
|
+
* The call sweep uses this to pick the unresolved-reference kind: `calls` for
|
|
25
|
+
* the two unambiguous shapes, `unqualified-ident` for the bare read (the
|
|
26
|
+
* bucket the const-first disambiguation rule of issue #108 / FR-3.1 needs).
|
|
27
|
+
*/
|
|
28
|
+
export interface StatementCall {
|
|
29
|
+
/** The called procedure name (the leading identifier). */
|
|
30
|
+
name: string;
|
|
31
|
+
/** True when the `Call` keyword or an argument list rules out a Const read. */
|
|
32
|
+
unambiguous: boolean;
|
|
33
|
+
}
|
|
14
34
|
/**
|
|
15
35
|
* H1: detect a statement-form Sub call (`MySub`, `MySub arg1, x`,
|
|
16
|
-
* `Call MySub arg1`). Returns the called proc name
|
|
17
|
-
*
|
|
18
|
-
* (handled by CALL_RE).
|
|
36
|
+
* `Call MySub arg1`). Returns the called proc name plus its syntactic
|
|
37
|
+
* unambiguity (issue #265), or null for declarations, assignments,
|
|
38
|
+
* comments, keyword lines, and the paren form (handled by CALL_RE).
|
|
19
39
|
*/
|
|
20
|
-
export declare function detectStatementCall(line: string):
|
|
40
|
+
export declare function detectStatementCall(line: string): StatementCall | null;
|
|
21
41
|
/**
|
|
22
42
|
* H1: emit a same-file `calls` edge for a statement-form Sub call to the
|
|
23
43
|
* already-emitted function node named `procName`. Returns `true` when a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/calls.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/calls.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAe1D,wBAAgB,eAAe,CAC7B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CA0BN;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAyLN;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgC/D;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgCtE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAcT;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuC7C;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAgDN;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBjE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoB5E"}
|
|
@@ -18,6 +18,7 @@ exports.detectWithMemberCall = detectWithMemberCall;
|
|
|
18
18
|
*/
|
|
19
19
|
const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
|
|
20
20
|
const constants_1 = require("./constants");
|
|
21
|
+
const runtime_objects_1 = require("./runtime-objects");
|
|
21
22
|
/**
|
|
22
23
|
* Call-site regex — captures either `Name(...)` (same-file candidate) or
|
|
23
24
|
* `Receiver.Member(...)` (qualified). The receiver AND member alternatives
|
|
@@ -56,9 +57,13 @@ function scanRaiseEvents(ctx, line, from, lineNum) {
|
|
|
56
57
|
function scanCallSites(ctx, line, from, lineNum) {
|
|
57
58
|
const arrayAssignment = /^\s*(\p{L}[\p{L}\p{N}_]*)\s*=\s*Array\s*\(/iu.exec(line);
|
|
58
59
|
if (arrayAssignment?.[1]) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
// Issue #205: scope the `isArray` mutation to the current proc
|
|
61
|
+
// bucket so a `x = Array(...)` inside `Sub Foo` does not flip
|
|
62
|
+
// the `isArray` flag on a `Dim x As String` declared in
|
|
63
|
+
// `Sub Bar` (or at module level).
|
|
64
|
+
const existing = ctx.lookupLocalVarType(arrayAssignment[1]);
|
|
65
|
+
if (existing)
|
|
66
|
+
existing.isArray = true;
|
|
62
67
|
}
|
|
63
68
|
CALL_RE.lastIndex = 0;
|
|
64
69
|
let m;
|
|
@@ -71,7 +76,7 @@ function scanCallSites(ctx, line, from, lineNum) {
|
|
|
71
76
|
const member = m[3] ?? m[4] ?? '';
|
|
72
77
|
if (!receiver)
|
|
73
78
|
continue;
|
|
74
|
-
if (!member && ctx.
|
|
79
|
+
if (!member && ctx.lookupLocalVarType(receiver)?.isArray)
|
|
75
80
|
continue;
|
|
76
81
|
// Issue #190: procedure-scoped param-array recognition. A
|
|
77
82
|
// `ByRef name() As Type` (or `ByVal name() As Type`) on this
|
|
@@ -158,7 +163,11 @@ function scanCallSites(ctx, line, from, lineNum) {
|
|
|
158
163
|
// stub `<receiver>.<member>` would be dead-end graph pollution no
|
|
159
164
|
// resolver could ever repoint. Cross-module qualified calls like
|
|
160
165
|
// `modUtils.Foo(1)` are unaffected (`modUtils` is not a local var).
|
|
161
|
-
|
|
166
|
+
// Issue #205: lookup is two-tier (current proc → module) so the
|
|
167
|
+
// primitive-gate fires on the type declared IN this procedure,
|
|
168
|
+
// not the type declared in whichever procedure happened to write
|
|
169
|
+
// to `localVarTypeMap` last.
|
|
170
|
+
const recvEntry = ctx.lookupLocalVarType(receiver);
|
|
162
171
|
if (recvEntry && constants_1.PRIMITIVE_TYPES.has(recvEntry.outer.toLowerCase())) {
|
|
163
172
|
// Match the round-3 surfaced row so the SQL filter has the
|
|
164
173
|
// receiver/member string even when the stub emission was
|
|
@@ -176,6 +185,17 @@ function scanCallSites(ctx, line, from, lineNum) {
|
|
|
176
185
|
continue;
|
|
177
186
|
}
|
|
178
187
|
const receiverType = ctx.resolveReceiverType(receiver);
|
|
188
|
+
// Issue #245: a call whose RESOLVED receiver type is a VBA/Access
|
|
189
|
+
// runtime object (`Dim c As New Collection` → `Collection.Add`,
|
|
190
|
+
// `VBA.DoEvents`, `fso.FileExists`) can never name user code. The
|
|
191
|
+
// resolver already declines to repoint these edges
|
|
192
|
+
// (`repointDecision: 'declined-runtime'`), but the stub NODE was
|
|
193
|
+
// created anyway and leaked into symbol search and node counts.
|
|
194
|
+
// Gate BEFORE `generateNodeId` so no node and no `calls` edge is
|
|
195
|
+
// born. Nothing else changes: this branch never pushed an
|
|
196
|
+
// `UnresolvedReference`, so `unresolvedByKind` is untouched.
|
|
197
|
+
if ((0, runtime_objects_1.isRuntimeObject)(receiverType))
|
|
198
|
+
continue;
|
|
179
199
|
const qualified = `${receiverType}.${member}`;
|
|
180
200
|
// Avoid emitting duplicate edges for the same call (within a line).
|
|
181
201
|
const dedupeKey = `${from.name}->${qualified}@${lineNum}`;
|
|
@@ -268,16 +288,18 @@ function splitSingleLineIfClauses(line) {
|
|
|
268
288
|
}
|
|
269
289
|
/**
|
|
270
290
|
* H1: detect a statement-form Sub call (`MySub`, `MySub arg1, x`,
|
|
271
|
-
* `Call MySub arg1`). Returns the called proc name
|
|
272
|
-
*
|
|
273
|
-
* (handled by CALL_RE).
|
|
291
|
+
* `Call MySub arg1`). Returns the called proc name plus its syntactic
|
|
292
|
+
* unambiguity (issue #265), or null for declarations, assignments,
|
|
293
|
+
* comments, keyword lines, and the paren form (handled by CALL_RE).
|
|
274
294
|
*/
|
|
275
295
|
function detectStatementCall(line) {
|
|
276
296
|
let trimmed = line.trimStart();
|
|
277
297
|
if (!trimmed)
|
|
278
298
|
return null;
|
|
279
|
-
// Strip `Call ` keyword if present — same call shape after.
|
|
280
|
-
|
|
299
|
+
// Strip `Call ` keyword if present — same call shape after. Issue #265:
|
|
300
|
+
// remember that it was there; `Call X` cannot be a Const read.
|
|
301
|
+
const hasCallKeyword = /^Call\s/i.test(trimmed);
|
|
302
|
+
if (hasCallKeyword) {
|
|
281
303
|
trimmed = trimmed.replace(/^Call\s+/i, '');
|
|
282
304
|
}
|
|
283
305
|
// Skip comment lines.
|
|
@@ -297,7 +319,7 @@ function detectStatementCall(line) {
|
|
|
297
319
|
return null;
|
|
298
320
|
// Bare `MySub` is a valid no-argument statement-form Sub call.
|
|
299
321
|
if (rest.length === 0)
|
|
300
|
-
return procName;
|
|
322
|
+
return { name: procName, unambiguous: hasCallKeyword };
|
|
301
323
|
const nextCh = trimmed.charAt(procName.length);
|
|
302
324
|
if (nextCh !== ' ' && nextCh !== '\t')
|
|
303
325
|
return null;
|
|
@@ -307,7 +329,9 @@ function detectStatementCall(line) {
|
|
|
307
329
|
// appear in expressions.
|
|
308
330
|
if (args.startsWith('='))
|
|
309
331
|
return null;
|
|
310
|
-
|
|
332
|
+
// Issue #265: `args` is measured AFTER trimming, so `MySub ` (trailing
|
|
333
|
+
// whitespace only) stays the ambiguous bare-identifier shape.
|
|
334
|
+
return { name: procName, unambiguous: hasCallKeyword || args.length > 0 };
|
|
311
335
|
}
|
|
312
336
|
/**
|
|
313
337
|
* H1: emit a same-file `calls` edge for a statement-form Sub call to the
|
|
@@ -407,6 +431,12 @@ function emitQualifiedStatementCallEdge(ctx, caller, receiver, member, lineNum)
|
|
|
407
431
|
// resolve to their class name; undeclared receivers stay as raw module-name
|
|
408
432
|
// candidates.
|
|
409
433
|
const receiverType = ctx.resolveReceiverType(receiver);
|
|
434
|
+
// Issue #245 — same runtime-object node gate as the paren-form path in
|
|
435
|
+
// `scanCallSites`. Statement-form `Call VBA.DoEvents` / `col.Add x` must
|
|
436
|
+
// not synthesize a stub node either. No `UnresolvedReference` was emitted
|
|
437
|
+
// on this path before, and none is emitted now.
|
|
438
|
+
if ((0, runtime_objects_1.isRuntimeObject)(receiverType))
|
|
439
|
+
return;
|
|
410
440
|
const qualified = `${receiverType}.${member}`;
|
|
411
441
|
const dedupeKey = `${caller.name}->${qualified}@${lineNum}`;
|
|
412
442
|
if (ctx.callDedupe.has(dedupeKey))
|