@lcap/nasl-language-server-core 4.0.1-rc.1 → 4.1.0-beta.10

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 (102) hide show
  1. package/out/checker.d.ts +1 -1
  2. package/out/checker.d.ts.map +1 -1
  3. package/out/checker.js +38 -3
  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 +4 -1
  8. package/out/index.js.map +1 -1
  9. package/out/reference-manager/builtin-q-name.d.ts +1 -1
  10. package/out/reference-manager/builtin-q-name.d.ts.map +1 -1
  11. package/out/reference-manager/builtin-q-name.js +14 -10
  12. package/out/reference-manager/builtin-q-name.js.map +1 -1
  13. package/out/reference-manager/collect-q-name.d.ts.map +1 -1
  14. package/out/reference-manager/collect-q-name.js +15 -13
  15. package/out/reference-manager/collect-q-name.js.map +1 -1
  16. package/out/reference-manager/get-q-name.d.ts +0 -2
  17. package/out/reference-manager/get-q-name.d.ts.map +1 -1
  18. package/out/reference-manager/get-q-name.js +30 -46
  19. package/out/reference-manager/get-q-name.js.map +1 -1
  20. package/out/reference-manager/reference-manager.d.ts +19 -10
  21. package/out/reference-manager/reference-manager.d.ts.map +1 -1
  22. package/out/reference-manager/reference-manager.js +141 -101
  23. package/out/reference-manager/reference-manager.js.map +1 -1
  24. package/out/reference-manager/remove-q-name.d.ts.map +1 -1
  25. package/out/reference-manager/remove-q-name.js +22 -15
  26. package/out/reference-manager/remove-q-name.js.map +1 -1
  27. package/out/reference-manager/symbol-type.d.ts +3 -2
  28. package/out/reference-manager/symbol-type.d.ts.map +1 -1
  29. package/out/reference-manager/symbol-type.js +7 -1
  30. package/out/reference-manager/symbol-type.js.map +1 -1
  31. package/out/reference-manager/update-nasl-fragment.d.ts.map +1 -1
  32. package/out/reference-manager/update-nasl-fragment.js +4 -4
  33. package/out/reference-manager/update-nasl-fragment.js.map +1 -1
  34. package/out/symbol/traverse/concepts/index.d.ts +1 -1
  35. package/out/symbol/traverse/concepts/index.d.ts.map +1 -1
  36. package/out/typer/collectGlobalDefs.d.ts +1 -1
  37. package/out/typer/collectGlobalDefs.d.ts.map +1 -1
  38. package/out/typer/collectGlobalDefs.js +2 -2
  39. package/out/typer/collectGlobalDefs.js.map +1 -1
  40. package/out/typer/component-def-manager/component-def-manager.js +2 -2
  41. package/out/typer/component-def-manager/component-def-manager.js.map +1 -1
  42. package/out/typer/dispatch-all.d.ts +1 -1
  43. package/out/typer/dispatch-all.d.ts.map +1 -1
  44. package/out/typer/dispatch-all.js +2 -2
  45. package/out/typer/dispatch-all.js.map +1 -1
  46. package/out/typer/dispatch-expr.d.ts.map +1 -1
  47. package/out/typer/dispatch-expr.js +150 -106
  48. package/out/typer/dispatch-expr.js.map +1 -1
  49. package/out/typer/dispatch-process.js +1 -1
  50. package/out/typer/dispatch-process.js.map +1 -1
  51. package/out/typer/dispatch-view.d.ts +1 -1
  52. package/out/typer/dispatch-view.d.ts.map +1 -1
  53. package/out/typer/dispatch-view.js +13 -10
  54. package/out/typer/dispatch-view.js.map +1 -1
  55. package/out/typer/incremental-update.d.ts.map +1 -1
  56. package/out/typer/incremental-update.js +23 -39
  57. package/out/typer/incremental-update.js.map +1 -1
  58. package/out/typer/index.d.ts +2 -1
  59. package/out/typer/index.d.ts.map +1 -1
  60. package/out/typer/index.js +3 -1
  61. package/out/typer/index.js.map +1 -1
  62. package/out/typer/overload-helper.d.ts +12 -0
  63. package/out/typer/overload-helper.d.ts.map +1 -0
  64. package/out/typer/overload-helper.js +110 -0
  65. package/out/typer/overload-helper.js.map +1 -0
  66. package/out/typer/sem-diag.d.ts +5 -0
  67. package/out/typer/sem-diag.d.ts.map +1 -1
  68. package/out/typer/sem-diag.js +15 -1
  69. package/out/typer/sem-diag.js.map +1 -1
  70. package/out/typer/solver.d.ts +2 -2
  71. package/out/typer/solver.d.ts.map +1 -1
  72. package/out/typer/solver.js +17 -19
  73. package/out/typer/solver.js.map +1 -1
  74. package/out/typer/subster.js +3 -3
  75. package/out/typer/subster.js.map +1 -1
  76. package/out/typer/type-hint-manager/type-hint-manager.d.ts +1 -1
  77. package/out/typer/type-hint-manager/type-hint-manager.d.ts.map +1 -1
  78. package/out/typer/type-manager.d.ts.map +1 -1
  79. package/out/typer/type-manager.js +3 -3
  80. package/out/typer/type-manager.js.map +1 -1
  81. package/out/typer/type-predicate.js +5 -5
  82. package/out/typer/type-predicate.js.map +1 -1
  83. package/out/typer/typer.d.ts +7 -4
  84. package/out/typer/typer.d.ts.map +1 -1
  85. package/out/typer/typer.js +24 -17
  86. package/out/typer/typer.js.map +1 -1
  87. package/out/typer/unifier.d.ts.map +1 -1
  88. package/out/typer/unifier.js +10 -4
  89. package/out/typer/unifier.js.map +1 -1
  90. package/out/utils/parseTsClassType.d.ts +2 -3
  91. package/out/utils/parseTsClassType.d.ts.map +1 -1
  92. package/out/utils/parseTsClassType.js +25 -58
  93. package/out/utils/parseTsClassType.js.map +1 -1
  94. package/out/utils/string.d.ts +4 -0
  95. package/out/utils/string.d.ts.map +1 -0
  96. package/out/utils/string.js +29 -0
  97. package/out/utils/string.js.map +1 -0
  98. package/out/utils/type-operator.d.ts +1 -1
  99. package/out/utils/type-operator.d.ts.map +1 -1
  100. package/out/utils/type-operator.js +12 -12
  101. package/out/utils/type-operator.js.map +1 -1
  102. package/package.json +10 -7
package/out/checker.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { SyntaxNode, App, BaseNode } from '@lcap/nasl-concepts';
2
2
  import { TypeAnnotation } from '@lcap/nasl-concepts';
3
- import { type SemEnv } from './typer';
3
+ import { type SemEnv } from './typer/typer';
4
4
  import { Diagnostic as NaslTypeDiagnostic } from '@lcap/nasl-types';
5
5
  export declare enum Severity {
6
6
  WARN = "warning",
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAU0F,GAAG,EAMvG,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACgE,cAAc,EAGpF,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAIhE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAIpE,oBAAY,QAAQ;IAClB,IAAI,YAAY;IAChB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAMF,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAMrE,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAqBF,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAiQF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe;oCAmmIpB,OAAO;sDAPW,gBAAgB,EAAE;;;;sBAhBjD,UAAU,GAAG,SAAS;;;8BA4Df,UAAU;2BAuBb,UAAU;;kBAvmInB,UAAU,WAAW,MAAM,YAAY,YAAY;EAynIzE;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrC,mBAAmB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,qBAAqB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,6BAA6B,aAAc,UAAU,sCAAoC,MAAM,gBAAgB,CAmC3H,CAAA;AAMD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAU0F,GAAG,EAMvG,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACgE,cAAc,EAGpF,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMpE,oBAAY,QAAQ;IAClB,IAAI,YAAY;IAChB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAMF,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAMrE,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAqBF,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAiQF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe;oCAsoIpB,OAAO;sDAPW,gBAAgB,EAAE;;;;sBAhBjD,UAAU,GAAG,SAAS;;;8BA4Df,UAAU;2BAuBb,UAAU;;kBA1oInB,UAAU,WAAW,MAAM,YAAY,YAAY;EA4pIzE;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrC,mBAAmB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,qBAAqB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,6BAA6B,aAAc,UAAU,sCAAoC,MAAM,gBAAgB,CAmC3H,CAAA;AAMD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
package/out/checker.js CHANGED
@@ -6,10 +6,11 @@ const nasl_concepts_1 = require("@lcap/nasl-concepts");
6
6
  const service_1 = require("@lcap/nasl-concepts/service");
7
7
  const file_node_cache_1 = require("./utils/file-node-cache");
8
8
  const nasl_utils_1 = require("@lcap/nasl-utils");
9
- const typer_1 = require("./typer");
9
+ const sem_diag_1 = require("./typer/sem-diag");
10
10
  const type_predicate_1 = require("./typer/type-predicate");
11
11
  const type_manager_1 = require("./typer/type-manager");
12
12
  const nasl_predicate_1 = require("./typer/nasl-predicate");
13
+ const helper_1 = require("./typer/helper");
13
14
  var Severity;
14
15
  (function (Severity) {
15
16
  Severity["WARN"] = "warning";
@@ -333,7 +334,7 @@ function createErrorDiagnoser(context) {
333
334
  currentNode = currentNode.parentNode;
334
335
  }
335
336
  const finalNode = memberExpression ?? node;
336
- (0, typer_1.createOnPush)(diagnostics, finalNode, diagnostic);
337
+ (0, helper_1.createOnPush)(diagnostics, finalNode, diagnostic);
337
338
  finalNode.tsErrorDetail = diagnostic;
338
339
  }
339
340
  else { }
@@ -2816,6 +2817,9 @@ function createErrorDiagnoser(context) {
2816
2817
  if (node.calleeName === 'Clear' && type?.typeKind === 'union') {
2817
2818
  error(node, `传入类型错误,接收类型:非union类型`);
2818
2819
  }
2820
+ if (node.calleeName === 'ListSort' || node.calleeName === 'ListSortAsync') {
2821
+ checkListSort(node);
2822
+ }
2819
2823
  if (node.typeArguments?.length) {
2820
2824
  yield* (0, nasl_utils_1.wrapForEachToGenerator)(node.typeArguments, function* (node) {
2821
2825
  yield* checkNode(node);
@@ -2859,6 +2863,23 @@ function createErrorDiagnoser(context) {
2859
2863
  }
2860
2864
  }
2861
2865
  return type;
2866
+ function checkListSort(nd) {
2867
+ for (let i = 1; i < nd.arguments.length; i++) {
2868
+ const expr = nd.arguments[i].expression;
2869
+ let resTy;
2870
+ if (expr?.concept === 'AnonymousFunction') {
2871
+ resTy = env.getType(expr.body);
2872
+ }
2873
+ else if (expr?.concept === 'SubLogic') {
2874
+ resTy = env.getType(expr.returns?.[0]);
2875
+ }
2876
+ const byTy = resTy?.properties?.find((prop) => prop.name === 'by')?.typeAnnotation;
2877
+ if (byTy?.typeKind === 'union') {
2878
+ // 这里使用 node.arguments[i] 则无红框,猜测是 ListSort 的特殊交互导致的问题
2879
+ error(node, (0, sem_diag_1.mkIncompatibleTyErr)(env, byTy, '非 union 的基础类型:如字符串、整数、布尔等'));
2880
+ }
2881
+ }
2882
+ }
2862
2883
  }
2863
2884
  /**
2864
2885
  * 检查 调用逻辑
@@ -3277,7 +3298,7 @@ function createErrorDiagnoser(context) {
3277
3298
  /**
3278
3299
  * 参考类型检查器的 {@link tpIdentifier}方法
3279
3300
  */
3280
- return typer_1.naslLongTy;
3301
+ return type_manager_1.naslLongTy;
3281
3302
  }
3282
3303
  else if (node.name === 'it') {
3283
3304
  return env.getType(node);
@@ -3833,6 +3854,18 @@ function createErrorDiagnoser(context) {
3833
3854
  }
3834
3855
  return env.getType(node);
3835
3856
  }
3857
+ function* checkVariadicExpression(node) {
3858
+ if (!node.expressions?.[0]) {
3859
+ error(node, '表达式不能为空!');
3860
+ }
3861
+ if (!node.expressions?.[1]) {
3862
+ error(node, '表达式不能为空!');
3863
+ }
3864
+ yield* (0, nasl_utils_1.wrapForEachToGenerator)(node.expressions, function* (node) {
3865
+ yield* checkNode(node);
3866
+ });
3867
+ return env.getType(node);
3868
+ }
3836
3869
  /**
3837
3870
  * 检查 一元表达式
3838
3871
  * @param node
@@ -4222,6 +4255,8 @@ function createErrorDiagnoser(context) {
4222
4255
  return yield* checkPaginate(node);
4223
4256
  case 'BinaryExpression':
4224
4257
  return yield* checkBinaryExpression(node);
4258
+ case 'VariadicExpression':
4259
+ return yield* checkVariadicExpression(node);
4225
4260
  case 'UnaryExpression':
4226
4261
  return yield* checkUnaryExpression(node);
4227
4262
  case 'Comment':