@lcap/nasl-language-server-core 4.3.0-beta.0 → 4.3.0-beta.3
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/out/checker.d.ts +6 -0
- package/out/checker.d.ts.map +1 -1
- package/out/checker.js +28 -7
- package/out/checker.js.map +1 -1
- package/out/index.d.ts +2 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js +3 -1
- package/out/index.js.map +1 -1
- package/out/reference-manager/build-q-name-def.d.ts.map +1 -1
- package/out/reference-manager/build-q-name-def.js +0 -9
- package/out/reference-manager/build-q-name-def.js.map +1 -1
- package/out/reference-manager/builtin-q-name.d.ts.map +1 -1
- package/out/reference-manager/builtin-q-name.js +1 -5
- package/out/reference-manager/builtin-q-name.js.map +1 -1
- package/out/reference-manager/reference-manager.d.ts.map +1 -1
- package/out/reference-manager/reference-manager.js +4 -1
- package/out/reference-manager/reference-manager.js.map +1 -1
- package/out/reference-manager/symbol-type.d.ts +1 -1
- package/out/reference-manager/symbol-type.d.ts.map +1 -1
- package/out/reference-manager/symbol-type.js.map +1 -1
- package/out/typer/collectGlobalDefs.d.ts.map +1 -1
- package/out/typer/collectGlobalDefs.js +3 -1
- package/out/typer/collectGlobalDefs.js.map +1 -1
- package/out/typer/component-def-manager/utils.d.ts.map +1 -1
- package/out/typer/component-def-manager/utils.js +4 -2
- package/out/typer/component-def-manager/utils.js.map +1 -1
- package/out/typer/dispatch-call.d.ts.map +1 -1
- package/out/typer/dispatch-call.js +177 -26
- package/out/typer/dispatch-call.js.map +1 -1
- package/out/typer/dispatch-def.d.ts.map +1 -1
- package/out/typer/dispatch-def.js +6 -2
- package/out/typer/dispatch-def.js.map +1 -1
- package/out/typer/dispatch-expr.d.ts +4 -2
- package/out/typer/dispatch-expr.d.ts.map +1 -1
- package/out/typer/dispatch-expr.js +111 -18
- package/out/typer/dispatch-expr.js.map +1 -1
- package/out/typer/dispatch-stmt.d.ts.map +1 -1
- package/out/typer/dispatch-stmt.js +1 -0
- package/out/typer/dispatch-stmt.js.map +1 -1
- package/out/typer/dispatch-view.js +1 -1
- package/out/typer/dispatch-view.js.map +1 -1
- package/out/typer/get-export-interfaces-files.d.ts +8 -0
- package/out/typer/get-export-interfaces-files.d.ts.map +1 -0
- package/out/typer/get-export-interfaces-files.js +31 -0
- package/out/typer/get-export-interfaces-files.js.map +1 -0
- package/out/typer/get-origin-logic-files.d.ts +1 -1
- package/out/typer/get-origin-logic-files.js +1 -1
- package/out/typer/index.d.ts +2 -1
- package/out/typer/index.d.ts.map +1 -1
- package/out/typer/index.js +3 -1
- package/out/typer/index.js.map +1 -1
- package/out/typer/oql-checker/chain-call-transformer.d.ts +21 -0
- package/out/typer/oql-checker/chain-call-transformer.d.ts.map +1 -0
- package/out/typer/oql-checker/chain-call-transformer.js +150 -0
- package/out/typer/oql-checker/chain-call-transformer.js.map +1 -0
- package/out/typer/oql-checker/ts-parser.d.ts +46 -0
- package/out/typer/oql-checker/ts-parser.d.ts.map +1 -0
- package/out/typer/oql-checker/ts-parser.js +706 -0
- package/out/typer/oql-checker/ts-parser.js.map +1 -0
- package/out/typer/oql-checker/ts-printer.d.ts +3 -0
- package/out/typer/oql-checker/ts-printer.d.ts.map +1 -0
- package/out/typer/oql-checker/ts-printer.js +37 -0
- package/out/typer/oql-checker/ts-printer.js.map +1 -0
- package/out/typer/overload-helper.d.ts +17 -6
- package/out/typer/overload-helper.d.ts.map +1 -1
- package/out/typer/overload-helper.js +393 -76
- package/out/typer/overload-helper.js.map +1 -1
- package/out/typer/subster.d.ts.map +1 -1
- package/out/typer/subster.js +70 -2
- package/out/typer/subster.js.map +1 -1
- package/out/typer/type-manager.js +4 -4
- package/out/typer/type-manager.js.map +1 -1
- package/out/typer/type-predicate.d.ts +9 -0
- package/out/typer/type-predicate.d.ts.map +1 -1
- package/out/typer/type-predicate.js +14 -1
- package/out/typer/type-predicate.js.map +1 -1
- package/out/typer/typer.d.ts +13 -3
- package/out/typer/typer.d.ts.map +1 -1
- package/out/typer/typer.js +21 -5
- package/out/typer/typer.js.map +1 -1
- package/out/typer/unifier.d.ts.map +1 -1
- package/out/typer/unifier.js +4 -5
- package/out/typer/unifier.js.map +1 -1
- package/out/utils/debug.d.ts +6 -0
- package/out/utils/debug.d.ts.map +1 -0
- package/out/utils/debug.js +62 -0
- package/out/utils/debug.js.map +1 -0
- package/out/utils/file-node-cache.d.ts.map +1 -1
- package/out/utils/file-node-cache.js +4 -1
- package/out/utils/file-node-cache.js.map +1 -1
- package/out/utils/internal-tuple.d.ts +2 -0
- package/out/utils/internal-tuple.d.ts.map +1 -0
- package/out/utils/internal-tuple.js +29 -0
- package/out/utils/internal-tuple.js.map +1 -0
- package/out/utils/parseTsClassType.d.ts +1 -5
- package/out/utils/parseTsClassType.d.ts.map +1 -1
- package/out/utils/parseTsClassType.js +103 -66
- package/out/utils/parseTsClassType.js.map +1 -1
- package/out/utils/type-operator.d.ts +29 -1
- package/out/utils/type-operator.d.ts.map +1 -1
- package/out/utils/type-operator.js +181 -1
- package/out/utils/type-operator.js.map +1 -1
- package/out/utils/type-operators/CheckUniqueKeys.d.ts +15 -0
- package/out/utils/type-operators/CheckUniqueKeys.d.ts.map +1 -0
- package/out/utils/type-operators/CheckUniqueKeys.js +86 -0
- package/out/utils/type-operators/CheckUniqueKeys.js.map +1 -0
- package/package.json +11 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-parser.js","sourceRoot":"","sources":["../../../src/typer/oql-checker/ts-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-printer.d.ts","sourceRoot":"","sources":["../../../src/typer/oql-checker/ts-printer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,eAAO,MAAM,eAAe,QAAS,GAAG,UAAU,WAQjD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.printSourceFile = void 0;
|
|
27
|
+
const ts = __importStar(require("typescript"));
|
|
28
|
+
const printSourceFile = (ast) => {
|
|
29
|
+
const printer = ts.createPrinter({
|
|
30
|
+
newLine: ts.NewLineKind.LineFeed,
|
|
31
|
+
removeComments: false,
|
|
32
|
+
omitTrailingSemicolon: false,
|
|
33
|
+
});
|
|
34
|
+
return printer.printFile(ast).trim();
|
|
35
|
+
};
|
|
36
|
+
exports.printSourceFile = printSourceFile;
|
|
37
|
+
//# sourceMappingURL=ts-printer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-printer.js","sourceRoot":"","sources":["../../../src/typer/oql-checker/ts-printer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAC1B,MAAM,eAAe,GAAG,CAAC,GAAkB,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;QAC/B,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ;QAChC,cAAc,EAAE,KAAK;QACrB,qBAAqB,EAAE,KAAK;KAC7B,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC,CAAC;AARW,QAAA,eAAe,mBAQ1B"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
import { TypeAnnotation, CallFunction } from '@lcap/nasl-concepts';
|
|
2
|
-
import { type
|
|
3
|
-
export declare const
|
|
1
|
+
import { TypeAnnotation, CallFunction, CallLogic } from '@lcap/nasl-concepts';
|
|
2
|
+
import { SemEnv, type OverloadSignature } from './typer';
|
|
3
|
+
export declare const registerOverloadSignature: (namespace: string, name: string, params?: TypeAnnotation[], ret?: TypeAnnotation, typeParams?: TypeAnnotation[]) => void;
|
|
4
|
+
export declare const getRegisteredOverloads: (namespace: string, name: string) => OverloadSignature[];
|
|
5
|
+
export declare const isOverloadedFunction: (namespace: string, name: string) => boolean;
|
|
6
|
+
export declare const findDiscriminatingParamIndex: (candidates: OverloadSignature[]) => number;
|
|
7
|
+
export declare const getDiscriminatingParamIndex: (namespace: string, name: string) => number;
|
|
8
|
+
type ResolveOverloadResult = {
|
|
9
|
+
retTy: TypeAnnotation | undefined;
|
|
10
|
+
chosen?: OverloadSignature;
|
|
11
|
+
ambiguous?: boolean;
|
|
12
|
+
message?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const resolveOverloadedFunction: (env: SemEnv, namespace: string, name: string, argTys: TypeAnnotation[], typeArgs?: TypeAnnotation[]) => ResolveOverloadResult;
|
|
15
|
+
export declare const getOverloadParameterTypes: (env: SemEnv, nd: CallFunction | CallLogic, dsSqlType: 'mysql' | 'oracle' | 'dameng' | undefined) => Array<TypeAnnotation>;
|
|
4
16
|
/**
|
|
5
17
|
* Create a fallback overload definition that accepts any type to prevent further errors
|
|
6
18
|
*/
|
|
7
19
|
export declare const createFallbackOverloadDef: (calleeName: string, namespace: string, numOfArgs: number) => any;
|
|
8
|
-
export declare const getOverloadFuncRetTy: (nd: CallFunction, ty?: TypeAnnotation) => TypeAnnotation | undefined;
|
|
9
|
-
export declare const mangleOvFnName: (fnName: string, ty: TypeAnnotation) => string | undefined;
|
|
10
|
-
export declare const getOvParamIdx: (fnName: string) => 1 | 0 | 2;
|
|
11
20
|
export declare const createCastLiteralType: (value: string) => TypeAnnotation;
|
|
21
|
+
export declare const createStringLiteralType: (value: string) => TypeAnnotation;
|
|
22
|
+
export {};
|
|
12
23
|
//# sourceMappingURL=overload-helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overload-helper.d.ts","sourceRoot":"","sources":["../../src/typer/overload-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"overload-helper.d.ts","sourceRoot":"","sources":["../../src/typer/overload-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAiB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE7F,OAAO,EAAE,MAAM,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAczD,eAAO,MAAM,yBAAyB,cACvB,MAAM,QACX,MAAM,WACJ,cAAc,EAAE,QACnB,cAAc,eACN,cAAc,EAAE,SAyChC,CAAC;AAEF,eAAO,MAAM,sBAAsB,cAAe,MAAM,QAAQ,MAAM,KAAG,iBAAiB,EAEzF,CAAC;AAGF,eAAO,MAAM,oBAAoB,cAAe,MAAM,QAAQ,MAAM,KAAG,OAEtE,CAAC;AAsCF,eAAO,MAAM,4BAA4B,eAAgB,iBAAiB,EAAE,KAAG,MA0B9E,CAAC;AAEF,eAAO,MAAM,2BAA2B,cAAe,MAAM,QAAQ,MAAM,KAAG,MACL,CAAC;AA2L1E,KAAK,qBAAqB,GAAG;IAAE,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtI,eAAO,MAAM,yBAAyB,EAAE,CACpC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,CAAC,EAAE,cAAc,EAAE,KAC1B,qBA4FA,CAAC;AAKN,eAAO,MAAM,yBAAyB,QAAS,MAAM,MAAM,YAAY,GAAG,SAAS,aAAa,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,KAAG,MAAM,cAAc,CAqB/J,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,yBAAyB,eAAgB,MAAM,aAAa,MAAM,aAAa,MAAM,KAAG,GAWpG,CAAA;AAOD,eAAO,MAAM,qBAAqB,UAAW,MAAM,mBAKjD,CAAC;AAGH,eAAO,MAAM,uBAAuB,UAAW,MAAM,mBAKnD,CAAC"}
|
|
@@ -1,15 +1,394 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createCastLiteralType = exports.
|
|
3
|
+
exports.createStringLiteralType = exports.createCastLiteralType = exports.createFallbackOverloadDef = exports.getOverloadParameterTypes = exports.resolveOverloadedFunction = exports.getDiscriminatingParamIndex = exports.findDiscriminatingParamIndex = exports.isOverloadedFunction = exports.getRegisteredOverloads = exports.registerOverloadSignature = void 0;
|
|
4
4
|
const nasl_concepts_1 = require("@lcap/nasl-concepts");
|
|
5
|
+
const typer_1 = require("./typer");
|
|
6
|
+
const subster_1 = require("./subster");
|
|
7
|
+
const type_predicate_1 = require("./type-predicate");
|
|
5
8
|
const type_manager_1 = require("./type-manager");
|
|
9
|
+
// ---- General overload registry and resolution ----
|
|
10
|
+
// Helpers to read signature components from unified fn (single source of truth)
|
|
11
|
+
const getSigParams = (sig) => sig.fn.typeArguments ?? [];
|
|
12
|
+
const getSigRet = (sig) => sig.fn.returnType?.[0];
|
|
13
|
+
const registerOverloadSignature = (namespace, name, params = [], ret = type_manager_1.naslAnyTy, typeParams) => {
|
|
14
|
+
// Normalize special cases to avoid storing <T>()=>T shapes
|
|
15
|
+
if (name === 'Convert' || name === 'FromString') {
|
|
16
|
+
if (ret && ret.typeKind === 'function' && Array.isArray(ret.returnType) && ret.returnType[0]) {
|
|
17
|
+
ret = ret.returnType[0];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const key = `${namespace}.${name}`;
|
|
21
|
+
const list = typer_1.SemEnv.overloadFuncSigs.get(key) ?? [];
|
|
22
|
+
// Remove older entries with function-shaped returns for Convert/FromString to prevent ambiguity
|
|
23
|
+
if (name === 'Convert' || name === 'FromString') {
|
|
24
|
+
for (let i = list.length - 1; i >= 0; i--) {
|
|
25
|
+
const sig = list[i];
|
|
26
|
+
const sigRet = sig.fn?.returnType?.[0];
|
|
27
|
+
if (sig.name === name && sig.namespace === namespace && sigRet?.typeKind === 'function') {
|
|
28
|
+
// Match by params length and shallow param types
|
|
29
|
+
const sParams = getSigParams(sig);
|
|
30
|
+
if (sParams.length === (params?.length ?? 0) && sParams.every((p, idx) => shallowTyEqual(p, params[idx]))) {
|
|
31
|
+
list.splice(i, 1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Avoid duplicates: compare by param count and shallow type equality
|
|
37
|
+
const exists = list.some(sig => getSigParams(sig).length === (params?.length ?? 0) &&
|
|
38
|
+
getSigParams(sig).every((p, i) => shallowTyEqual(p, params[i])) &&
|
|
39
|
+
shallowTyEqual(getSigRet(sig), ret));
|
|
40
|
+
if (!exists) {
|
|
41
|
+
const fn = nasl_concepts_1.TypeAnnotation.createProtoTypeOnly({
|
|
42
|
+
typeKind: 'function',
|
|
43
|
+
typeArguments: params ?? [],
|
|
44
|
+
fnArgs: (params ?? []).map((t, i) => ({ name: `p${i}`, type: t })),
|
|
45
|
+
typeParams: typeParams ?? [],
|
|
46
|
+
returnType: [ret],
|
|
47
|
+
});
|
|
48
|
+
list.push({ name, namespace, fn });
|
|
49
|
+
typer_1.SemEnv.overloadFuncSigs.set(key, list);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.registerOverloadSignature = registerOverloadSignature;
|
|
53
|
+
const getRegisteredOverloads = (namespace, name) => {
|
|
54
|
+
return typer_1.SemEnv.overloadFuncSigs.get(`${namespace}.${name}`) ?? [];
|
|
55
|
+
};
|
|
56
|
+
exports.getRegisteredOverloads = getRegisteredOverloads;
|
|
57
|
+
// Helper: does this function name have more than one signature registered?
|
|
58
|
+
const isOverloadedFunction = (namespace, name) => {
|
|
59
|
+
return (0, exports.getRegisteredOverloads)(namespace, name).length > 1;
|
|
60
|
+
};
|
|
61
|
+
exports.isOverloadedFunction = isOverloadedFunction;
|
|
62
|
+
// Shallow equality for common cases (name, namespace, kind, literal)
|
|
63
|
+
const shallowTyEqual = (a, b) => {
|
|
64
|
+
if (!a || !b)
|
|
65
|
+
return a === b;
|
|
66
|
+
if (a.typeKind !== b.typeKind)
|
|
67
|
+
return false;
|
|
68
|
+
if (a.typeKind === 'literal') {
|
|
69
|
+
return a.literal === b.literal && a.typeName === b.typeName && a.typeNamespace === b.typeNamespace;
|
|
70
|
+
}
|
|
71
|
+
// For reference/generic etc. compare type name + namespace only
|
|
72
|
+
return a.typeName === b.typeName && a.typeNamespace === b.typeNamespace;
|
|
73
|
+
};
|
|
74
|
+
// Find the parameter position that best discriminates overloads:
|
|
75
|
+
// choose the index with the highest number of distinct shallow types; tie-break by preferring indices
|
|
76
|
+
// that contain literal types; finally choose the smallest index deterministically.
|
|
77
|
+
const findDiscriminatingParamIndex = (candidates) => {
|
|
78
|
+
if (!candidates.length)
|
|
79
|
+
return 0;
|
|
80
|
+
const maxLen = Math.max(...candidates.map(c => getSigParams(c)?.length ?? 0));
|
|
81
|
+
let bestIdx = 0;
|
|
82
|
+
let bestScore = -1;
|
|
83
|
+
let bestHasLiteral = false;
|
|
84
|
+
for (let idx = 0; idx < maxLen; idx++) {
|
|
85
|
+
const seen = [];
|
|
86
|
+
let hasLiteral = false;
|
|
87
|
+
for (const c of candidates) {
|
|
88
|
+
const params = getSigParams(c);
|
|
89
|
+
const t = params[idx];
|
|
90
|
+
if (!t)
|
|
91
|
+
continue;
|
|
92
|
+
if ((0, type_predicate_1.isLiteralTy)(t))
|
|
93
|
+
hasLiteral = true;
|
|
94
|
+
if (!seen.some(x => shallowTyEqual(x, t))) {
|
|
95
|
+
seen.push(t);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const diversity = seen.length;
|
|
99
|
+
if (diversity > bestScore || (diversity === bestScore && (hasLiteral && !bestHasLiteral))) {
|
|
100
|
+
bestScore = diversity;
|
|
101
|
+
bestIdx = idx;
|
|
102
|
+
bestHasLiteral = hasLiteral;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return bestIdx;
|
|
106
|
+
};
|
|
107
|
+
exports.findDiscriminatingParamIndex = findDiscriminatingParamIndex;
|
|
108
|
+
const getDiscriminatingParamIndex = (namespace, name) => (0, exports.findDiscriminatingParamIndex)((0, exports.getRegisteredOverloads)(namespace, name));
|
|
109
|
+
exports.getDiscriminatingParamIndex = getDiscriminatingParamIndex;
|
|
110
|
+
const unionMembers = (t) => ((0, type_predicate_1.isUnionTy)(t) ? (t.typeArguments ?? []) : []);
|
|
111
|
+
// Try to find constraint for a type parameter by name from signature's function type or legacy fields
|
|
112
|
+
const getTypeParamConstraint = (sig, tpName) => {
|
|
113
|
+
if (!tpName)
|
|
114
|
+
return undefined;
|
|
115
|
+
const tps = sig.fn?.typeParams ?? [];
|
|
116
|
+
const found = tps.find(tp => (tp?.typeName ?? tp?.name) === tpName);
|
|
117
|
+
return found?.constraints;
|
|
118
|
+
};
|
|
119
|
+
// Determine if arg fits parameter and compute simple score
|
|
120
|
+
const matchArgToParam = (env, sig, arg, param) => {
|
|
121
|
+
// Literal must match exactly
|
|
122
|
+
if ((0, type_predicate_1.isLiteralTy)(param)) {
|
|
123
|
+
if ((0, type_predicate_1.isLiteralTy)(arg) && arg.literal === param.literal) {
|
|
124
|
+
return { ok: true, exact: true, penalty: 0 };
|
|
125
|
+
}
|
|
126
|
+
return { ok: false, exact: false, penalty: 0 };
|
|
127
|
+
}
|
|
128
|
+
// any param accepts anything (discourage)
|
|
129
|
+
if ((0, type_predicate_1.isAnyTy)(param)) {
|
|
130
|
+
// treat any as compatible but not exact (to avoid biasing selection);
|
|
131
|
+
// heavy penalty so specific overloads are preferred when available
|
|
132
|
+
return { ok: true, exact: (0, type_predicate_1.isAnyTy)(arg), penalty: 5 };
|
|
133
|
+
}
|
|
134
|
+
// Generic type parameter (e.g., T) accepts any type, subject to optional constraints
|
|
135
|
+
if (param.typeKind === 'typeParam') {
|
|
136
|
+
const constraint = getTypeParamConstraint(sig, param.typeName);
|
|
137
|
+
if (constraint) {
|
|
138
|
+
if (!(0, type_predicate_1.isSubTy)(env, arg, constraint)) {
|
|
139
|
+
return { ok: false, exact: false, penalty: 0 };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Prefer concrete matches over generic ones with a small penalty
|
|
143
|
+
return { ok: true, exact: false, penalty: 2 };
|
|
144
|
+
}
|
|
145
|
+
// Union: ok if any member matches
|
|
146
|
+
if ((0, type_predicate_1.isUnionTy)(param)) {
|
|
147
|
+
let best = { ok: false, exact: false, penalty: Number.MAX_SAFE_INTEGER };
|
|
148
|
+
for (const m of unionMembers(param)) {
|
|
149
|
+
const res = matchArgToParam(env, sig, arg, m);
|
|
150
|
+
if (res.ok) {
|
|
151
|
+
if (!best.ok || res.penalty < best.penalty || (res.penalty === best.penalty && res.exact)) {
|
|
152
|
+
best = res;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Union parameters are broader than any of their members, so even if a member matches exactly,
|
|
157
|
+
// the union itself should not be considered an exact match. Add a tiny fractional penalty
|
|
158
|
+
// (e.g., +0.1) so it remains non-exact but avoids colliding with integer penalties like
|
|
159
|
+
// widening(1), generic(2), any(5). This reduces ambiguous ties while preserving expected
|
|
160
|
+
// behavior: concrete exact matches still win, and exact member matches inside a union win
|
|
161
|
+
// over candidates that require a widening conversion.
|
|
162
|
+
const UNION_PENALTY = 0.1;
|
|
163
|
+
return best.ok ? { ok: true, exact: false, penalty: best.penalty + UNION_PENALTY } : { ok: false, exact: false, penalty: 0 };
|
|
164
|
+
}
|
|
165
|
+
// Exact name match
|
|
166
|
+
if (arg.typeName === param.typeName && arg.typeNamespace === param.typeNamespace) {
|
|
167
|
+
return { ok: true, exact: true, penalty: 0 };
|
|
168
|
+
}
|
|
169
|
+
// Long can satisfy Decimal with a minor penalty (numeric widening)
|
|
170
|
+
if ((0, type_predicate_1.isDecimalTy)(param) && (0, type_predicate_1.isLongTy)(arg)) {
|
|
171
|
+
return { ok: true, exact: false, penalty: 1 };
|
|
172
|
+
}
|
|
173
|
+
// Otherwise, not compatible under current simple rules
|
|
174
|
+
return { ok: false, exact: false, penalty: 0 };
|
|
175
|
+
};
|
|
176
|
+
const scoreSignature = (env, args, sig) => {
|
|
177
|
+
const params = getSigParams(sig);
|
|
178
|
+
const pLen = params?.length ?? 0;
|
|
179
|
+
// Detect simple variadic: last parameter is an array/generic with a single type argument
|
|
180
|
+
const lastParam = pLen > 0 ? params[pLen - 1] : undefined;
|
|
181
|
+
const isVariadic = lastParam && lastParam.typeKind === 'generic' && Array.isArray(lastParam.typeArguments) && (lastParam.typeName === 'Array' || lastParam.typeName === 'List' || lastParam.typeName === 'List' || lastParam.typeName === 'Array');
|
|
182
|
+
const minRequired = isVariadic ? Math.max(0, pLen - 1) : pLen;
|
|
183
|
+
if ((args?.length ?? 0) < minRequired) {
|
|
184
|
+
return { compatible: false, exactCount: 0, penalty: Number.MAX_SAFE_INTEGER };
|
|
185
|
+
}
|
|
186
|
+
let exactCount = 0;
|
|
187
|
+
let penalty = 0;
|
|
188
|
+
// Match non-variadic prefix
|
|
189
|
+
const prefixLen = isVariadic ? pLen - 1 : pLen;
|
|
190
|
+
for (let i = 0; i < prefixLen; i++) {
|
|
191
|
+
const res = matchArgToParam(env, sig, args[i], params[i]);
|
|
192
|
+
if (!res.ok) {
|
|
193
|
+
return { compatible: false, exactCount: 0, penalty: Number.MAX_SAFE_INTEGER };
|
|
194
|
+
}
|
|
195
|
+
if (res.exact)
|
|
196
|
+
exactCount++;
|
|
197
|
+
penalty += res.penalty;
|
|
198
|
+
}
|
|
199
|
+
// Match variadic tail against element type if variadic
|
|
200
|
+
if (isVariadic) {
|
|
201
|
+
const elemTy = lastParam.typeArguments[0];
|
|
202
|
+
// Special-case: caller passed a single array/list argument intended to satisfy all variadic params
|
|
203
|
+
if ((args?.length ?? 0) === prefixLen + 1) {
|
|
204
|
+
const extra = args[prefixLen];
|
|
205
|
+
if (extra?.typeKind === 'generic' && extra.typeArguments && (extra.typeName === 'Array' || extra.typeName === 'List')) {
|
|
206
|
+
// Match the element type of the provided array to the expected element type
|
|
207
|
+
const elemArgTy = extra.typeArguments[0];
|
|
208
|
+
const res = matchArgToParam(env, sig, elemArgTy, elemTy);
|
|
209
|
+
if (!res.ok) {
|
|
210
|
+
return { compatible: false, exactCount: 0, penalty: Number.MAX_SAFE_INTEGER };
|
|
211
|
+
}
|
|
212
|
+
if (res.exact)
|
|
213
|
+
exactCount++;
|
|
214
|
+
penalty += res.penalty;
|
|
215
|
+
// we've consumed the single array argument as the variadic tail
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
// otherwise treat it as a single variadic element
|
|
219
|
+
const res = matchArgToParam(env, sig, args[prefixLen], elemTy);
|
|
220
|
+
if (!res.ok) {
|
|
221
|
+
return { compatible: false, exactCount: 0, penalty: Number.MAX_SAFE_INTEGER };
|
|
222
|
+
}
|
|
223
|
+
if (res.exact)
|
|
224
|
+
exactCount++;
|
|
225
|
+
penalty += res.penalty;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
for (let i = prefixLen; i < (args?.length ?? 0); i++) {
|
|
230
|
+
const res = matchArgToParam(env, sig, args[i], elemTy);
|
|
231
|
+
if (!res.ok) {
|
|
232
|
+
return { compatible: false, exactCount: 0, penalty: Number.MAX_SAFE_INTEGER };
|
|
233
|
+
}
|
|
234
|
+
if (res.exact)
|
|
235
|
+
exactCount++;
|
|
236
|
+
penalty += res.penalty;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
// If not variadic but args longer than params => incompatible
|
|
242
|
+
if ((args?.length ?? 0) !== pLen) {
|
|
243
|
+
return { compatible: false, exactCount: 0, penalty: Number.MAX_SAFE_INTEGER };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Coherence check for shared generic type params: indices that share the same type param name
|
|
248
|
+
* must receive equal types; if satisfied, prefer such signatures slightly
|
|
249
|
+
*
|
|
250
|
+
* Overloads like (T, T) will be selected over (T1, T2) when both match the call, provided the two args are the same type.
|
|
251
|
+
* We implement this as a small "bonus" (penalty reduction) to encourage reuse of a single generic across positions.
|
|
252
|
+
*/
|
|
253
|
+
const groups = new Map();
|
|
254
|
+
for (let i = 0; i < params.length; i++) {
|
|
255
|
+
const p = params[i];
|
|
256
|
+
if (p?.typeKind === 'typeParam' && p.typeName) {
|
|
257
|
+
const v = groups.get(p.typeName) ?? [];
|
|
258
|
+
v.push(i);
|
|
259
|
+
groups.set(p.typeName, v);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// Increase coherence bonus to more strongly prefer signatures that reuse the same
|
|
263
|
+
// generic type variable across multiple parameters (e.g., (T, T)). A larger bonus
|
|
264
|
+
// helps disambiguate cases like (T, T) vs (T1, Decimal) when args are (null, Long)
|
|
265
|
+
// because (T,T) can bind T := Long and be an exact/coherent match.
|
|
266
|
+
let coherenceBonus = 0;
|
|
267
|
+
for (const [name, idxs] of groups) {
|
|
268
|
+
if (idxs.length < 2)
|
|
269
|
+
continue;
|
|
270
|
+
// All args in these positions should be equal (bi-directional subtype)
|
|
271
|
+
const eq = (a, b) => (0, type_predicate_1.isSubTy)(env, a, b) && (0, type_predicate_1.isSubTy)(env, b, a);
|
|
272
|
+
const base = args[idxs[0]];
|
|
273
|
+
if (!idxs.every(j => eq(base, args[j]))) {
|
|
274
|
+
return { compatible: false, exactCount: 0, penalty: Number.MAX_SAFE_INTEGER };
|
|
275
|
+
}
|
|
276
|
+
// Reward having a single type var reused across positions (T,T) vs (T1,T2).
|
|
277
|
+
// Use a slightly larger bonus (2) so coherent generics more strongly influence
|
|
278
|
+
// the penalty ordering and break ties in favor of coherent matches.
|
|
279
|
+
coherenceBonus += 2;
|
|
280
|
+
}
|
|
281
|
+
penalty = Math.max(0, penalty - coherenceBonus);
|
|
282
|
+
return { compatible: true, exactCount, penalty };
|
|
283
|
+
};
|
|
284
|
+
const resolveOverloadedFunction = (env, namespace, name, argTys,
|
|
285
|
+
// Optional call-site generic type arguments (e.g., Convert<T> -> [T])
|
|
286
|
+
typeArgs) => {
|
|
287
|
+
const candidates = (0, exports.getRegisteredOverloads)(namespace, name);
|
|
288
|
+
if (!candidates.length) {
|
|
289
|
+
return { retTy: undefined };
|
|
290
|
+
}
|
|
291
|
+
// Compute scores, filter only compatible
|
|
292
|
+
const scored = candidates
|
|
293
|
+
.map(sig => ({ sig, score: scoreSignature(env, argTys, sig) }))
|
|
294
|
+
.filter(x => x.score.compatible);
|
|
295
|
+
if (!scored.length) {
|
|
296
|
+
return { retTy: undefined };
|
|
297
|
+
}
|
|
298
|
+
// Prefer highest exact matches; then lowest penalty (Long over Decimal); if tie remains, ambiguous
|
|
299
|
+
scored.sort((a, b) => {
|
|
300
|
+
if (b.score.exactCount !== a.score.exactCount)
|
|
301
|
+
return b.score.exactCount - a.score.exactCount;
|
|
302
|
+
return a.score.penalty - b.score.penalty;
|
|
303
|
+
});
|
|
304
|
+
const best = scored[0];
|
|
305
|
+
// Ambiguity definition:
|
|
306
|
+
// After sorting by (exactCount desc, penalty asc), if the second-best has the
|
|
307
|
+
// same exactCount and the same penalty as the best, we cannot distinguish them
|
|
308
|
+
// deterministically. We mark the resolution as ambiguous and let the caller decide
|
|
309
|
+
// whether to defer to post-solve normalization or to report an error.
|
|
310
|
+
const ambiguous = scored.length > 1 && scored[1].score.exactCount === best.score.exactCount && scored[1].score.penalty === best.score.penalty;
|
|
311
|
+
if (ambiguous) {
|
|
312
|
+
return {
|
|
313
|
+
retTy: undefined,
|
|
314
|
+
ambiguous: true,
|
|
315
|
+
message: `重载解析存在二义性: ${namespace}.${name}(${argTys.map(t => t?.typeName ?? 'any').join(', ')})`
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
// Work on the unified function type to reuse existing utilities
|
|
319
|
+
const fnTy = best.sig.fn;
|
|
320
|
+
// Step 1: freshen type params (build mapping oldName -> freshTyVar)
|
|
321
|
+
let freshenedFn = fnTy;
|
|
322
|
+
const renameSubst = new Map();
|
|
323
|
+
(fnTy.typeParams ?? []).forEach(tp => {
|
|
324
|
+
const old = tp?.typeName;
|
|
325
|
+
if (old)
|
|
326
|
+
renameSubst.set(old, env.unifier.nextFreshTyAnn('bound'));
|
|
327
|
+
});
|
|
328
|
+
if (renameSubst.size) {
|
|
329
|
+
freshenedFn = (0, subster_1.substTyAnn)(env, renameSubst)(fnTy);
|
|
330
|
+
}
|
|
331
|
+
// Step 2: apply call-site type args mapping (freshName -> provided arg)
|
|
332
|
+
if (typeArgs && typeArgs.length && fnTy.typeParams?.length) {
|
|
333
|
+
const applySubst = new Map();
|
|
334
|
+
fnTy.typeParams.forEach((tp, idx) => {
|
|
335
|
+
const oldName = tp?.typeName;
|
|
336
|
+
const fresh = oldName ? renameSubst.get(oldName) : undefined;
|
|
337
|
+
const freshName = fresh?.typeName;
|
|
338
|
+
if (freshName && typeArgs[idx])
|
|
339
|
+
applySubst.set(freshName, typeArgs[idx]);
|
|
340
|
+
});
|
|
341
|
+
if (applySubst.size) {
|
|
342
|
+
freshenedFn = (0, subster_1.substTyAnn)(env, applySubst)(freshenedFn);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Step 3: infer remaining generic type parameters from argument positions
|
|
346
|
+
// If a parameter is a (freshened) typeParam, bind it to the corresponding argument type
|
|
347
|
+
// Example: IFNULL<T>(a: T, b: T): T and args (Long, Long) => T := Long
|
|
348
|
+
const paramsAfterPartial = freshenedFn.typeArguments ?? [];
|
|
349
|
+
for (let i = 0; i < paramsAfterPartial.length && i < argTys.length; i++) {
|
|
350
|
+
let p = paramsAfterPartial[i];
|
|
351
|
+
const a = argTys[i];
|
|
352
|
+
// 对函数参数中的可变参数标记,直接取出其中的Item类型作为p
|
|
353
|
+
if (p.spread && (0, type_predicate_1.isListTy)(p)) {
|
|
354
|
+
p = p.typeArguments?.[0] ?? type_manager_1.naslAnyTy;
|
|
355
|
+
}
|
|
356
|
+
env.unifier.unify(a, p);
|
|
357
|
+
}
|
|
358
|
+
const outRet = freshenedFn.returnType?.[0] ?? type_manager_1.naslAnyTy;
|
|
359
|
+
// Build a resolved, freshened signature for downstream consumers
|
|
360
|
+
const resolvedSig = {
|
|
361
|
+
name: best.sig.name,
|
|
362
|
+
namespace: best.sig.namespace,
|
|
363
|
+
fn: freshenedFn,
|
|
364
|
+
};
|
|
365
|
+
return { retTy: outRet, chosen: resolvedSig };
|
|
366
|
+
};
|
|
367
|
+
exports.resolveOverloadedFunction = resolveOverloadedFunction;
|
|
6
368
|
// TODO: Zirun,
|
|
7
369
|
// fix the special treatment for SQL functions.
|
|
8
370
|
// 目前 SQL 函数重载参数类型推导,只能通过 QName 来获取。
|
|
9
371
|
const getOverloadParameterTypes = (env, nd, dsSqlType) => {
|
|
10
|
-
//
|
|
11
|
-
const
|
|
12
|
-
|
|
372
|
+
// 从注册表获取该函数在有效命名空间下的所有重载签名,然后抽取“判定参数”的类型集合用于报错提示
|
|
373
|
+
const effectiveNamespace = nd.calleeNamespace === 'nasl.sqlFunction' && dsSqlType
|
|
374
|
+
? env.getSqlFunctionNamespace(dsSqlType)
|
|
375
|
+
: (nd.calleeNamespace ?? '');
|
|
376
|
+
const candidates = (0, exports.getRegisteredOverloads)(effectiveNamespace, nd.calleeName);
|
|
377
|
+
if (!candidates.length)
|
|
378
|
+
return [];
|
|
379
|
+
// 通用:自动选择“最具区分度”的参数位
|
|
380
|
+
const idx = (0, exports.findDiscriminatingParamIndex)(candidates);
|
|
381
|
+
const out = [];
|
|
382
|
+
for (const sig of candidates) {
|
|
383
|
+
const params = getSigParams(sig);
|
|
384
|
+
const t = params[idx];
|
|
385
|
+
if (!t)
|
|
386
|
+
continue;
|
|
387
|
+
if (!out.some(x => shallowTyEqual(x, t))) {
|
|
388
|
+
out.push(t);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return out;
|
|
13
392
|
};
|
|
14
393
|
exports.getOverloadParameterTypes = getOverloadParameterTypes;
|
|
15
394
|
/**
|
|
@@ -28,78 +407,8 @@ const createFallbackOverloadDef = (calleeName, namespace, numOfArgs) => {
|
|
|
28
407
|
return lgc;
|
|
29
408
|
};
|
|
30
409
|
exports.createFallbackOverloadDef = createFallbackOverloadDef;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
case 'Length':
|
|
34
|
-
return type_manager_1.naslLongTy;
|
|
35
|
-
case 'Convert':
|
|
36
|
-
return nd.typeArguments?.[0] ?? type_manager_1.naslAnyTy; // 用户从 type picker 里选择的类型
|
|
37
|
-
case 'CAST':
|
|
38
|
-
return type_manager_1.castTypePickerToReturnType.get(ty?.literal) ?? type_manager_1.naslAnyTy; // 用户从 type picker 里选择的类型
|
|
39
|
-
case 'MAX':
|
|
40
|
-
case 'MIN':
|
|
41
|
-
case 'SUM':
|
|
42
|
-
case 'LAST_DAY':
|
|
43
|
-
case 'ADD_MONTHS':
|
|
44
|
-
default:
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
exports.getOverloadFuncRetTy = getOverloadFuncRetTy;
|
|
49
|
-
// 重载函数,暂时把 第一个参数类型 拼接成字符串作为 key 来实现 name mangling,首字母一般是大写的,any 这种会是小写的,不碍事,不做处理了
|
|
50
|
-
const mangleOvFnName = (fnName, ty) => {
|
|
51
|
-
if (!ty) {
|
|
52
|
-
return fnName;
|
|
53
|
-
}
|
|
54
|
-
if (fnName === 'CAST') {
|
|
55
|
-
/**
|
|
56
|
-
* CAST 现在是类似这样的
|
|
57
|
-
* declare namespace nasl.util {
|
|
58
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'FLOAT'): Decimal;
|
|
59
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'BINARY_FLOAT'): Decimal;
|
|
60
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'BINARY_DOUBLE'): Decimal;
|
|
61
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'INTEGER'): Long;
|
|
62
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'DECIMAL'): Decimal;
|
|
63
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'CHAR'): String;
|
|
64
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'NCHAR'): String;
|
|
65
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'TIMESTAMP'): DateTime;
|
|
66
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'DATE'): Date;
|
|
67
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'VARCHAR(256)'): String;
|
|
68
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'VARCHAR2(256)'): String;
|
|
69
|
-
* export function CAST(value: String | Long | Boolean | Date | Time | DateTime | Decimal, keyword: String, data_type: 'NVARCHAR2(256)'): nasl.core.String;
|
|
70
|
-
* }
|
|
71
|
-
*/
|
|
72
|
-
// types in CAST is literal type, should handle it specially
|
|
73
|
-
if (ty.typeKind === 'literal' && ty.literal) {
|
|
74
|
-
const retTy = type_manager_1.castTypePickerToReturnType.get(ty.literal);
|
|
75
|
-
if (retTy) {
|
|
76
|
-
return `${fnName}${retTy.typeName}`;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
return `${fnName}${ty.typeName}`;
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
exports.mangleOvFnName = mangleOvFnName;
|
|
85
|
-
const getOvParamIdx = (fnName) => {
|
|
86
|
-
switch (fnName) {
|
|
87
|
-
case 'MAX':
|
|
88
|
-
case 'MIN':
|
|
89
|
-
case 'SUM':
|
|
90
|
-
return 1;
|
|
91
|
-
case 'LAST_DAY':
|
|
92
|
-
case 'ADD_MONTHS':
|
|
93
|
-
case 'Convert':
|
|
94
|
-
case 'Length':
|
|
95
|
-
return 0;
|
|
96
|
-
case 'CAST':
|
|
97
|
-
return 2;
|
|
98
|
-
default:
|
|
99
|
-
throw new Error(`Cannot get index of overloaded builtin or sql function ${fnName}`);
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
exports.getOvParamIdx = getOvParamIdx;
|
|
410
|
+
// Removed legacy getOverloadFuncRetTy and mangleOvFnName: generic resolver determines return type and ambiguity.
|
|
411
|
+
// getOvParamIdx removed: selection now handled locally where needed.
|
|
103
412
|
const createCastLiteralType = (value) => nasl_concepts_1.TypeAnnotation.createProtoTypeOnly({
|
|
104
413
|
typeKind: 'literal',
|
|
105
414
|
typeNamespace: 'nasl.core',
|
|
@@ -107,4 +416,12 @@ const createCastLiteralType = (value) => nasl_concepts_1.TypeAnnotation.createPr
|
|
|
107
416
|
literal: value
|
|
108
417
|
});
|
|
109
418
|
exports.createCastLiteralType = createCastLiteralType;
|
|
419
|
+
// General-purpose string literal type for internal encodings (e.g., SelectOverload fields)
|
|
420
|
+
const createStringLiteralType = (value) => nasl_concepts_1.TypeAnnotation.createProtoTypeOnly({
|
|
421
|
+
typeKind: 'literal',
|
|
422
|
+
typeNamespace: 'nasl.core',
|
|
423
|
+
typeName: 'String',
|
|
424
|
+
literal: value
|
|
425
|
+
});
|
|
426
|
+
exports.createStringLiteralType = createStringLiteralType;
|
|
110
427
|
//# sourceMappingURL=overload-helper.js.map
|