@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.
Files changed (107) hide show
  1. package/out/checker.d.ts +6 -0
  2. package/out/checker.d.ts.map +1 -1
  3. package/out/checker.js +28 -7
  4. package/out/checker.js.map +1 -1
  5. package/out/index.d.ts +2 -1
  6. package/out/index.d.ts.map +1 -1
  7. package/out/index.js +3 -1
  8. package/out/index.js.map +1 -1
  9. package/out/reference-manager/build-q-name-def.d.ts.map +1 -1
  10. package/out/reference-manager/build-q-name-def.js +0 -9
  11. package/out/reference-manager/build-q-name-def.js.map +1 -1
  12. package/out/reference-manager/builtin-q-name.d.ts.map +1 -1
  13. package/out/reference-manager/builtin-q-name.js +1 -5
  14. package/out/reference-manager/builtin-q-name.js.map +1 -1
  15. package/out/reference-manager/reference-manager.d.ts.map +1 -1
  16. package/out/reference-manager/reference-manager.js +4 -1
  17. package/out/reference-manager/reference-manager.js.map +1 -1
  18. package/out/reference-manager/symbol-type.d.ts +1 -1
  19. package/out/reference-manager/symbol-type.d.ts.map +1 -1
  20. package/out/reference-manager/symbol-type.js.map +1 -1
  21. package/out/typer/collectGlobalDefs.d.ts.map +1 -1
  22. package/out/typer/collectGlobalDefs.js +3 -1
  23. package/out/typer/collectGlobalDefs.js.map +1 -1
  24. package/out/typer/component-def-manager/utils.d.ts.map +1 -1
  25. package/out/typer/component-def-manager/utils.js +4 -2
  26. package/out/typer/component-def-manager/utils.js.map +1 -1
  27. package/out/typer/dispatch-call.d.ts.map +1 -1
  28. package/out/typer/dispatch-call.js +177 -26
  29. package/out/typer/dispatch-call.js.map +1 -1
  30. package/out/typer/dispatch-def.d.ts.map +1 -1
  31. package/out/typer/dispatch-def.js +6 -2
  32. package/out/typer/dispatch-def.js.map +1 -1
  33. package/out/typer/dispatch-expr.d.ts +4 -2
  34. package/out/typer/dispatch-expr.d.ts.map +1 -1
  35. package/out/typer/dispatch-expr.js +111 -18
  36. package/out/typer/dispatch-expr.js.map +1 -1
  37. package/out/typer/dispatch-stmt.d.ts.map +1 -1
  38. package/out/typer/dispatch-stmt.js +1 -0
  39. package/out/typer/dispatch-stmt.js.map +1 -1
  40. package/out/typer/dispatch-view.js +1 -1
  41. package/out/typer/dispatch-view.js.map +1 -1
  42. package/out/typer/get-export-interfaces-files.d.ts +8 -0
  43. package/out/typer/get-export-interfaces-files.d.ts.map +1 -0
  44. package/out/typer/get-export-interfaces-files.js +31 -0
  45. package/out/typer/get-export-interfaces-files.js.map +1 -0
  46. package/out/typer/get-origin-logic-files.d.ts +1 -1
  47. package/out/typer/get-origin-logic-files.js +1 -1
  48. package/out/typer/index.d.ts +2 -1
  49. package/out/typer/index.d.ts.map +1 -1
  50. package/out/typer/index.js +3 -1
  51. package/out/typer/index.js.map +1 -1
  52. package/out/typer/oql-checker/chain-call-transformer.d.ts +21 -0
  53. package/out/typer/oql-checker/chain-call-transformer.d.ts.map +1 -0
  54. package/out/typer/oql-checker/chain-call-transformer.js +150 -0
  55. package/out/typer/oql-checker/chain-call-transformer.js.map +1 -0
  56. package/out/typer/oql-checker/ts-parser.d.ts +46 -0
  57. package/out/typer/oql-checker/ts-parser.d.ts.map +1 -0
  58. package/out/typer/oql-checker/ts-parser.js +706 -0
  59. package/out/typer/oql-checker/ts-parser.js.map +1 -0
  60. package/out/typer/oql-checker/ts-printer.d.ts +3 -0
  61. package/out/typer/oql-checker/ts-printer.d.ts.map +1 -0
  62. package/out/typer/oql-checker/ts-printer.js +37 -0
  63. package/out/typer/oql-checker/ts-printer.js.map +1 -0
  64. package/out/typer/overload-helper.d.ts +17 -6
  65. package/out/typer/overload-helper.d.ts.map +1 -1
  66. package/out/typer/overload-helper.js +393 -76
  67. package/out/typer/overload-helper.js.map +1 -1
  68. package/out/typer/subster.d.ts.map +1 -1
  69. package/out/typer/subster.js +70 -2
  70. package/out/typer/subster.js.map +1 -1
  71. package/out/typer/type-manager.js +4 -4
  72. package/out/typer/type-manager.js.map +1 -1
  73. package/out/typer/type-predicate.d.ts +9 -0
  74. package/out/typer/type-predicate.d.ts.map +1 -1
  75. package/out/typer/type-predicate.js +14 -1
  76. package/out/typer/type-predicate.js.map +1 -1
  77. package/out/typer/typer.d.ts +13 -3
  78. package/out/typer/typer.d.ts.map +1 -1
  79. package/out/typer/typer.js +21 -5
  80. package/out/typer/typer.js.map +1 -1
  81. package/out/typer/unifier.d.ts.map +1 -1
  82. package/out/typer/unifier.js +4 -5
  83. package/out/typer/unifier.js.map +1 -1
  84. package/out/utils/debug.d.ts +6 -0
  85. package/out/utils/debug.d.ts.map +1 -0
  86. package/out/utils/debug.js +62 -0
  87. package/out/utils/debug.js.map +1 -0
  88. package/out/utils/file-node-cache.d.ts.map +1 -1
  89. package/out/utils/file-node-cache.js +4 -1
  90. package/out/utils/file-node-cache.js.map +1 -1
  91. package/out/utils/internal-tuple.d.ts +2 -0
  92. package/out/utils/internal-tuple.d.ts.map +1 -0
  93. package/out/utils/internal-tuple.js +29 -0
  94. package/out/utils/internal-tuple.js.map +1 -0
  95. package/out/utils/parseTsClassType.d.ts +1 -5
  96. package/out/utils/parseTsClassType.d.ts.map +1 -1
  97. package/out/utils/parseTsClassType.js +103 -66
  98. package/out/utils/parseTsClassType.js.map +1 -1
  99. package/out/utils/type-operator.d.ts +29 -1
  100. package/out/utils/type-operator.d.ts.map +1 -1
  101. package/out/utils/type-operator.js +181 -1
  102. package/out/utils/type-operator.js.map +1 -1
  103. package/out/utils/type-operators/CheckUniqueKeys.d.ts +15 -0
  104. package/out/utils/type-operators/CheckUniqueKeys.d.ts.map +1 -0
  105. package/out/utils/type-operators/CheckUniqueKeys.js +86 -0
  106. package/out/utils/type-operators/CheckUniqueKeys.js.map +1 -0
  107. 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,3 @@
1
+ import * as ts from 'typescript';
2
+ export declare const printSourceFile: (ast: ts.SourceFile) => string;
3
+ //# sourceMappingURL=ts-printer.d.ts.map
@@ -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 SemEnv } from './typer';
3
- export declare const getOverloadParameterTypes: (env: SemEnv, nd: CallFunction, dsSqlType: 'mysql' | 'oracle' | 'dameng' | undefined) => Array<TypeAnnotation>;
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;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAWtC,eAAO,MAAM,yBAAyB,QAAS,MAAM,MAAM,YAAY,aAAa,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,KAAG,MAAM,cAAc,CAInJ,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,yBAAyB,eAAgB,MAAM,aAAa,MAAM,aAAa,MAAM,KAAG,GAWpG,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,YAAY,OAAO,cAAc,+BAgBzE,CAAA;AAGD,eAAO,MAAM,cAAc,WAAY,MAAM,MAAM,cAAc,uBAiChE,CAAC;AAGF,eAAO,MAAM,aAAa,WAAY,MAAM,cAgB3C,CAAA;AAED,eAAO,MAAM,qBAAqB,UAAW,MAAM,mBAKjD,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.getOvParamIdx = exports.mangleOvFnName = exports.getOverloadFuncRetTy = exports.createFallbackOverloadDef = exports.getOverloadParameterTypes = void 0;
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
- // 这里不需要 QName,只是顺便处理下 SQL 函数的数据库类型 dbType
11
- const qName = env.getMangledQName(nd, nd.calleeName, dsSqlType);
12
- return env.overloadParameterTypesCache.get(qName) ?? [];
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
- const getOverloadFuncRetTy = (nd, ty) => {
32
- switch (nd.calleeName) {
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