@artel/artc 0.6.26031 → 0.6.26033

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/build/Cli.js CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CommandLineCompiler
4
- } from "./chunk-7SE7MWTW.js";
5
- import "./chunk-BRJTOL5L.js";
4
+ } from "./chunk-KQUEKJUM.js";
5
+ import "./chunk-DCJQ3UJL.js";
6
6
  import {
7
7
  __async
8
- } from "./chunk-B3EA7MMZ.js";
8
+ } from "./chunk-QLAPGBIO.js";
9
9
 
10
10
  // source/Cli.ts
11
11
  function main() {
package/build/api/Api.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Compiler
3
- } from "../chunk-BRJTOL5L.js";
3
+ } from "../chunk-DCJQ3UJL.js";
4
4
  import {
5
5
  AccessKind,
6
6
  AccessedFunction_entity,
@@ -310,7 +310,7 @@ import {
310
310
  withoutQuotes,
311
311
  withoutTemplateQuotes,
312
312
  yieldTask
313
- } from "../chunk-B3EA7MMZ.js";
313
+ } from "../chunk-QLAPGBIO.js";
314
314
  export {
315
315
  AccessKind,
316
316
  AccessedFunction_entity,
@@ -6,9 +6,9 @@ import {
6
6
  PhysicalFileSystem,
7
7
  PhysicalTypeScriptLibrariesProvider,
8
8
  PrintingDiagnosticAcceptor
9
- } from "../chunk-7SE7MWTW.js";
10
- import "../chunk-BRJTOL5L.js";
11
- import "../chunk-B3EA7MMZ.js";
9
+ } from "../chunk-KQUEKJUM.js";
10
+ import "../chunk-DCJQ3UJL.js";
11
+ import "../chunk-QLAPGBIO.js";
12
12
  export {
13
13
  CommandLineCompiler,
14
14
  FileSystemUri,
@@ -107,7 +107,7 @@ import {
107
107
  sortModifiers,
108
108
  traverseTreeAsync,
109
109
  yieldTask
110
- } from "../chunk-B3EA7MMZ.js";
110
+ } from "../chunk-QLAPGBIO.js";
111
111
 
112
112
  // source/services/common/Types.ts
113
113
  import * as ls from "vscode-languageserver";
@@ -9,7 +9,7 @@ import {
9
9
  WellKnownDeclarationsLoadError,
10
10
  __async,
11
11
  createTsInteropInputsForCompilation
12
- } from "./chunk-B3EA7MMZ.js";
12
+ } from "./chunk-QLAPGBIO.js";
13
13
 
14
14
  // source/executor/Compiler.ts
15
15
  var Compiler = class {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Compiler
3
- } from "./chunk-BRJTOL5L.js";
3
+ } from "./chunk-DCJQ3UJL.js";
4
4
  import {
5
5
  ArtelVersion,
6
6
  Cached,
@@ -16,7 +16,7 @@ import {
16
16
  __async,
17
17
  performanceMeasurementStageNames,
18
18
  performanceMeasurementStages
19
- } from "./chunk-B3EA7MMZ.js";
19
+ } from "./chunk-QLAPGBIO.js";
20
20
 
21
21
  // source/executor/FileSystemUri.ts
22
22
  import { platform } from "os";
@@ -764,7 +764,7 @@ var UniqueWithComparatorQuery = class extends Query {
764
764
  };
765
765
 
766
766
  // source/common/Constants.ts
767
- var ArtelVersion = true ? "0.6.26031" : "";
767
+ var ArtelVersion = true ? "0.6.26033" : "";
768
768
  var ArtelSourceFileExtensions = [".\u0430\u0440\u0442", ".\u0430\u0440\u0442\u0435\u043B\u044C", ".art", ".artel", ".\u0430\u0440\u0442\u043C", ".\u0430\u0440\u0442\u0435\u043B\u044C\u043C", ".artm", ".artelm"];
769
769
  var ArtelSourceFileExtensionSet = new Set(ArtelSourceFileExtensions);
770
770
  var ArtelSourceAndConfigurationFileExtensionSet = new Set(ArtelSourceFileExtensionSet).add(".json");
@@ -49103,7 +49103,15 @@ var TsParameterEntity = class {
49103
49103
  getType() {
49104
49104
  return this.type.getOrInsertWith(() => {
49105
49105
  const tsType = this.tsctx.tsChecker.getTypeOfSymbol(this.symbol);
49106
- return this.tsctx.type.ofTsType(tsType);
49106
+ let result = this.tsctx.type.ofTsType(tsType);
49107
+ if (this.isVariadic()) {
49108
+ const elementType = this.tsctx.analyzer.ifTypeArrayOrReadonlyArrayThenElementType(result);
49109
+ if (elementType !== void 0) {
49110
+ const entity = this.tsctx.analyzer.getLocalizedWellKnownDeclarations(this.getLocale()).parameterArray;
49111
+ result = this.tsctx.analyzer.instantiateType(entity, [elementType]);
49112
+ }
49113
+ }
49114
+ return result;
49107
49115
  });
49108
49116
  }
49109
49117
  getDefinition() {
@@ -49135,7 +49143,7 @@ var TsParameterEntity = class {
49135
49143
  }
49136
49144
  isOptional() {
49137
49145
  const decl = this.getDeclaration();
49138
- return decl !== void 0 && this.tsctx.tsChecker.isOptionalParameter(decl);
49146
+ return decl !== void 0 && this.tsctx.tsChecker.isOptionalParameter(decl) || this.isVariadic();
49139
49147
  }
49140
49148
  isVariadic() {
49141
49149
  return this.getDeclaration()?.dotDotDotToken !== void 0;
@@ -67590,6 +67598,9 @@ var Parameter2 = class {
67590
67598
  isOptional() {
67591
67599
  return this.entity.isOptional();
67592
67600
  }
67601
+ isVariadic() {
67602
+ return this.entity.isVariadic();
67603
+ }
67593
67604
  };
67594
67605
  var FunctionTypeMatcherSignature = class {
67595
67606
  constructor(analyzer, value) {
@@ -70846,62 +70857,48 @@ var OverloadResolver = class {
70846
70857
  let bestSignature = matchingSignatures[0];
70847
70858
  for (let i = 1; i < matchingSignatures.length && bestSignature !== void 0; i++) {
70848
70859
  const currentSignature = matchingSignatures[i];
70849
- const betterTypeCheckResults = new Array();
70850
- for (const argument2 of this.arguments_) {
70851
- const bestSignatureTargetParameter = bestSignature.matchResult.mapping.get(argument2);
70852
- const currentSignatureTargetParameter = currentSignature.matchResult.mapping.get(argument2);
70853
- if (bestSignatureTargetParameter === void 0 || currentSignatureTargetParameter === void 0) {
70854
- bestSignature = void 0;
70855
- break;
70856
- }
70857
- const bestSignatureTargetParameterType = bestSignature.substitutedParameterTypes[bestSignatureTargetParameter.getIndex()];
70858
- const argumentTypeWithBestSignature = argument2.getType(
70859
- this.analysisOptions.withTargetTypeAndAllowCaching(bestSignatureTargetParameterType, false)
70860
- );
70861
- const currentSignatureTargetParameterType = currentSignature.substitutedParameterTypes[currentSignatureTargetParameter.getIndex()];
70862
- const argumentTypeWithCurrentSignature = argument2.getType(
70863
- this.analysisOptions.withTargetTypeAndAllowCaching(currentSignatureTargetParameterType, false)
70864
- );
70865
- const checkResult = this.chooseBetterTargetType(
70866
- bestSignatureTargetParameterType,
70867
- argumentTypeWithBestSignature,
70868
- currentSignatureTargetParameterType,
70869
- argumentTypeWithCurrentSignature
70870
- );
70871
- betterTypeCheckResults.push(checkResult);
70872
- }
70873
- if (bestSignature === void 0) {
70874
- break;
70875
- }
70876
- if (betterTypeCheckResults.every((c) => c === 1 /* TypeAIsBetter */ || c === 0 /* Equally */) && betterTypeCheckResults.some((c) => c === 1 /* TypeAIsBetter */)) {
70877
- } else if (betterTypeCheckResults.every((c) => c === 2 /* TypeBIsBetter */ || c === 0 /* Equally */) && betterTypeCheckResults.some((c) => c === 2 /* TypeBIsBetter */)) {
70878
- bestSignature = currentSignature;
70879
- } else {
70860
+ const newBestSignature = this.tryChooseBetterSignatureBasedOnParameterTypes(bestSignature, currentSignature) ?? this.tryChooseBetterSignatureBasedOnVariadicParameters(bestSignature, currentSignature) ?? this.tryChooseBetterSignatureBasedOnPresenceOfTypeParameters(bestSignature, currentSignature) ?? this.tryChooseBetterSignatureBasedOnParameterCount(bestSignature, currentSignature);
70861
+ if (newBestSignature === void 0) {
70880
70862
  bestSignature = void 0;
70863
+ break;
70881
70864
  }
70865
+ bestSignature = newBestSignature;
70882
70866
  }
70883
- if (bestSignature !== void 0) {
70884
- return bestSignature;
70885
- }
70886
- const signaturesWithTypeParametersCount = ArrayUtils.count(
70887
- matchingSignatures,
70888
- (s) => s.value.getTypeParameters().length > 0
70889
- );
70890
- if (signaturesWithTypeParametersCount !== matchingSignatures.length) {
70891
- matchingSignatures = matchingSignatures.filter((s) => s.value.getTypeParameters().length === 0);
70892
- }
70893
- if (matchingSignatures.length === 1) {
70894
- return matchingSignatures[0];
70895
- }
70896
- const signatureWithLeastParameterCount = Query.minByValue(matchingSignatures, (s) => s.value.getParameters().length);
70897
- if (signatureWithLeastParameterCount !== void 0) {
70898
- const parameterCount = signatureWithLeastParameterCount.value.getParameters().length;
70899
- const isSingle = Query.from(matchingSignatures).count((s) => s.value.getParameters().length === parameterCount) === 1;
70900
- if (isSingle) {
70901
- return signatureWithLeastParameterCount;
70867
+ return bestSignature;
70868
+ }
70869
+ tryChooseBetterSignatureBasedOnParameterTypes(signature1, signature2) {
70870
+ const betterTypeCheckResults = new Array();
70871
+ for (const argument2 of this.arguments_) {
70872
+ const signature1TargetParameter = signature1.matchResult.mapping.get(argument2);
70873
+ const signature2TargetParameter = signature2.matchResult.mapping.get(argument2);
70874
+ if (signature1TargetParameter === void 0 || signature2TargetParameter === void 0) {
70875
+ return void 0;
70902
70876
  }
70877
+ const signature1TargetParameterType = signature1.substitutedParameterTypes[signature1TargetParameter.getIndex()];
70878
+ const argumentTypeWithSignature1 = argument2.getType(
70879
+ this.analysisOptions.withTargetTypeAndAllowCaching(signature1TargetParameterType, false)
70880
+ );
70881
+ const signature2TargetParameterType = signature2.substitutedParameterTypes[signature2TargetParameter.getIndex()];
70882
+ const argumentTypeWithSignature2 = argument2.getType(
70883
+ this.analysisOptions.withTargetTypeAndAllowCaching(signature2TargetParameterType, false)
70884
+ );
70885
+ const checkResult = this.chooseBetterTargetType(
70886
+ signature1TargetParameterType,
70887
+ argumentTypeWithSignature1,
70888
+ signature2TargetParameterType,
70889
+ argumentTypeWithSignature2
70890
+ );
70891
+ betterTypeCheckResults.push(checkResult);
70903
70892
  }
70904
- return void 0;
70893
+ let result;
70894
+ if (betterTypeCheckResults.every((c) => c === 1 /* TypeAIsBetter */ || c === 0 /* Equally */) && betterTypeCheckResults.some((c) => c === 1 /* TypeAIsBetter */)) {
70895
+ result = signature1;
70896
+ } else if (betterTypeCheckResults.every((c) => c === 2 /* TypeBIsBetter */ || c === 0 /* Equally */) && betterTypeCheckResults.some((c) => c === 2 /* TypeBIsBetter */)) {
70897
+ result = signature2;
70898
+ } else {
70899
+ result = void 0;
70900
+ }
70901
+ return result;
70905
70902
  }
70906
70903
  chooseBetterTargetType(targetTypeA, typeWhenTargetTypeIsA, targetTypeB, typeWhenTargetTypeIsB) {
70907
70904
  const targetTypeAAssignabilityFlags = this.analyzer.getTypeAssignabilityFlags(typeWhenTargetTypeIsA, targetTypeA);
@@ -70920,6 +70917,45 @@ var OverloadResolver = class {
70920
70917
  }
70921
70918
  return 0 /* Equally */;
70922
70919
  }
70920
+ tryChooseBetterSignatureBasedOnVariadicParameters(signature1, signature2) {
70921
+ let result;
70922
+ const lastSignature1Parameter = signature1.value.getParameters().at(-1);
70923
+ const lastSignature2Parameter = signature2.value.getParameters().at(-1);
70924
+ if (lastSignature2Parameter !== void 0 && lastSignature2Parameter.isVariadic() && (lastSignature1Parameter === void 0 || !lastSignature1Parameter.isVariadic())) {
70925
+ result = signature1;
70926
+ } else if (lastSignature1Parameter !== void 0 && lastSignature1Parameter.isVariadic() && (lastSignature2Parameter === void 0 || !lastSignature2Parameter.isVariadic())) {
70927
+ result = signature2;
70928
+ } else {
70929
+ result = void 0;
70930
+ }
70931
+ return result;
70932
+ }
70933
+ tryChooseBetterSignatureBasedOnPresenceOfTypeParameters(signature1, signature2) {
70934
+ let result;
70935
+ const signature1HasTypeParameters = signature1.value.getTypeParameters().length > 0;
70936
+ const signature2HasTypeParameters = signature2.value.getTypeParameters().length > 0;
70937
+ if (!signature1HasTypeParameters && signature2HasTypeParameters) {
70938
+ result = signature1;
70939
+ } else if (!signature2HasTypeParameters && signature1HasTypeParameters) {
70940
+ result = signature2;
70941
+ } else {
70942
+ result = void 0;
70943
+ }
70944
+ return result;
70945
+ }
70946
+ tryChooseBetterSignatureBasedOnParameterCount(signature1, signature2) {
70947
+ let result;
70948
+ const signature1ParameterCount = signature1.value.getParameters().length;
70949
+ const signature2ParameterCount = signature2.value.getParameters().length;
70950
+ if (signature1ParameterCount === signature2ParameterCount) {
70951
+ result = void 0;
70952
+ } else if (signature1ParameterCount < signature2ParameterCount) {
70953
+ result = signature1;
70954
+ } else {
70955
+ result = signature2;
70956
+ }
70957
+ return result;
70958
+ }
70923
70959
  functionLiteralCouldBeAssignableToType(type) {
70924
70960
  type = type.unalias();
70925
70961
  return type.getEntity()?.getOriginalEntity() === this.analyzer.originalWellKnownDeclarations.object || type.getEntity()?.getOriginalEntity() === this.analyzer.originalWellKnownDeclarations.func || type.kind === "function" || type.kind === "union" && type.originalTypes.some((t) => this.functionLiteralCouldBeAssignableToType(t));
@@ -71268,7 +71304,7 @@ var SignatureParameter = class {
71268
71304
  return this.value.isOptional();
71269
71305
  }
71270
71306
  isVariadic() {
71271
- return false;
71307
+ return this.value.isVariadic();
71272
71308
  }
71273
71309
  };
71274
71310
  var SignatureWithTypeEntity = class {
@@ -71850,6 +71886,9 @@ var OverloadResolverSignatureParameter = class {
71850
71886
  isOptional() {
71851
71887
  return this.value.entity.isOptional();
71852
71888
  }
71889
+ isVariadic() {
71890
+ return this.value.entity.isVariadic();
71891
+ }
71853
71892
  getIndex() {
71854
71893
  return this.index;
71855
71894
  }
@@ -72061,6 +72100,9 @@ var MatcherParameter = class {
72061
72100
  isOptional() {
72062
72101
  return this.entity.isOptional();
72063
72102
  }
72103
+ isVariadic() {
72104
+ return this.entity.isVariadic();
72105
+ }
72064
72106
  };
72065
72107
 
72066
72108
  // source/analysis/a/DeclarationsUsageCounter.ts
@@ -73148,6 +73190,9 @@ var OverloadResolverParameter = class {
73148
73190
  isOptional() {
73149
73191
  return this.parameter.getEntity().isOptional();
73150
73192
  }
73193
+ isVariadic() {
73194
+ return this.parameter.getEntity().isVariadic();
73195
+ }
73151
73196
  };
73152
73197
 
73153
73198
  // source/analysis/a/MemberAccessExpressionMeaning.ts
@@ -74966,6 +75011,9 @@ var OverloadResolverParameterInfo = class {
74966
75011
  isOptional() {
74967
75012
  return false;
74968
75013
  }
75014
+ isVariadic() {
75015
+ return false;
75016
+ }
74969
75017
  };
74970
75018
 
74971
75019
  // source/analysis/a/UserDefinableUnaryOperatorResolver.ts
@@ -25,6 +25,7 @@ export interface ISignature<TParameter extends ISignatureParameter> {
25
25
  export interface ISignatureParameter {
26
26
  getName(): Name | undefined;
27
27
  isOptional(): boolean;
28
+ isVariadic(): boolean;
28
29
  }
29
30
  export interface IArgument {
30
31
  readonly name: Name | undefined;
@@ -22,7 +22,11 @@ export declare class OverloadResolver<TSignature extends ISignature<TParameter>,
22
22
  resolveOverload(): ProcessedSignature<TSignature, TParameter, TArgument>[];
23
23
  private areArgumentTypesAssignableToParameterTypes;
24
24
  private tryChooseBestSignature;
25
+ private tryChooseBetterSignatureBasedOnParameterTypes;
25
26
  private chooseBetterTargetType;
27
+ private tryChooseBetterSignatureBasedOnVariadicParameters;
28
+ private tryChooseBetterSignatureBasedOnPresenceOfTypeParameters;
29
+ private tryChooseBetterSignatureBasedOnParameterCount;
26
30
  private functionLiteralCouldBeAssignableToType;
27
31
  private reportAmbiguousAccessDiagnostic;
28
32
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artel/artc",
3
- "version": "0.6.26031",
3
+ "version": "0.6.26033",
4
4
  "description": "Артель Компилятор | Artel Compiler",
5
5
  "author": "Nezaboodka Team <contact@nezaboodka.com>",
6
6
  "license": "Apache-2.0",