@artel/artc 0.6.26025 → 0.6.26027

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 (126) hide show
  1. package/build/Cli.js +3 -3
  2. package/build/api/Api.js +56 -30
  3. package/build/api/ApiNodeJS.js +3 -3
  4. package/build/api/ApiServices.js +342 -496
  5. package/build/{chunk-CIRH34IO.js → chunk-4HXQNBLV.js} +30 -7
  6. package/build/{chunk-7QPDALAB.js → chunk-HOPCXROF.js} +2 -2
  7. package/build/{chunk-OTHSFQXT.js → chunk-IJGHVDYP.js} +11911 -9322
  8. package/build/types/analysis/AccessedFunction.d.ts +3 -0
  9. package/build/types/analysis/AccessibilityCheck.d.ts +3 -4
  10. package/build/types/analysis/Analyzer.d.ts +24 -15
  11. package/build/types/analysis/BaseMemberConflictsValidator.d.ts +1 -1
  12. package/build/types/analysis/ComputedAccess.d.ts +13 -0
  13. package/build/types/analysis/OverrideChecker.d.ts +17 -0
  14. package/build/types/analysis/SpecialNameKey.d.ts +4 -0
  15. package/build/types/analysis/TypeMemberImplementationChecker.d.ts +7 -1
  16. package/build/types/analysis/a/Analyzer.d.ts +24 -25
  17. package/build/types/analysis/a/DereferenceExpressionMeaning.d.ts +6 -4
  18. package/build/types/analysis/a/FindModifier.d.ts +1 -0
  19. package/build/types/analysis/a/IdentifierExpressionMeaning.d.ts +16 -7
  20. package/build/types/analysis/a/IndexedAccessExpressionMeaning.d.ts +7 -5
  21. package/build/types/analysis/a/MemberAccessExpressionMeaning.d.ts +14 -9
  22. package/build/types/analysis/a/ModifierValidator.d.ts +3 -10
  23. package/build/types/analysis/a/ReservedNameDictionary.d.ts +7 -1
  24. package/build/types/analysis/a/SourceFileAnalyzer.d.ts +1 -1
  25. package/build/types/analysis/a/semantic-context/Declarations.d.ts +3 -3
  26. package/build/types/analysis/a/semantic-context/SemanticContextBase.d.ts +4 -4
  27. package/build/types/analysis/a/semantic-context/SpecialLocalDeclarationsBuilder.d.ts +2 -2
  28. package/build/types/analysis/a/semantic-context/SubprogramBodyAndParametersSemanticContext.d.ts +0 -4
  29. package/build/types/api/Api.d.ts +5 -1
  30. package/build/types/api/ApiServices.d.ts +5 -0
  31. package/build/types/common/ArrayUtils.d.ts +1 -0
  32. package/build/types/diagnostic/DiagnosticCode.d.ts +65 -53
  33. package/build/types/diagnostic/DiagnosticFormatter.d.ts +3 -2
  34. package/build/types/emitter/EmitPhaseName.d.ts +3 -2
  35. package/build/types/emitter/Entities.d.ts +2 -0
  36. package/build/types/emitter/EntityMap.d.ts +0 -4
  37. package/build/types/emitter/IrBuilderA.d.ts +3 -3
  38. package/build/types/emitter/IrFactory.d.ts +11 -10
  39. package/build/types/emitter/IrToJs.d.ts +0 -1
  40. package/build/types/emitter/Transformer.d.ts +2 -3
  41. package/build/types/emitter/ir/EmitOptions.d.ts +4 -40
  42. package/build/types/emitter/ir/Nodes.d.ts +16 -34
  43. package/build/types/emitter/ir/VariableAccess.d.ts +18 -0
  44. package/build/types/emitter/ir/index.d.ts +1 -0
  45. package/build/types/emitter/ir/types.d.ts +2 -2
  46. package/build/types/entities/AccessorEntity.d.ts +8 -0
  47. package/build/types/entities/ComputedEntity.d.ts +12 -0
  48. package/build/types/entities/Entity.d.ts +1 -6
  49. package/build/types/entities/EntityKind.d.ts +6 -8
  50. package/build/types/entities/EntityLocalizationContext.d.ts +2 -5
  51. package/build/types/entities/TypeEntity.d.ts +6 -1
  52. package/build/types/entities/TypeEntityMembers.d.ts +5 -0
  53. package/build/types/entities/TypeMemberEntity.d.ts +12 -5
  54. package/build/types/entities/TypeMemberKindFlags.d.ts +4 -3
  55. package/build/types/entities/index.d.ts +2 -0
  56. package/build/types/entities/interfaces/{ConstructorEntity.d.ts → BaseConstructorEntity.d.ts} +5 -5
  57. package/build/types/entities/interfaces/{DestructorEntity.d.ts → BaseDestructorEntity.d.ts} +6 -6
  58. package/build/types/entities/interfaces/BaseOperatorEntity.d.ts +15 -0
  59. package/build/types/entities/interfaces/{OrdinaryMethodEntity.d.ts → BaseOrdinaryMethodEntity.d.ts} +6 -3
  60. package/build/types/entities/interfaces/BaseOrdinaryPackageFunctionEntity.d.ts +36 -0
  61. package/build/types/entities/interfaces/BasePackageMemberAccessorEntity.d.ts +36 -0
  62. package/build/types/entities/interfaces/BaseTypeMemberAccessorEntity.d.ts +19 -0
  63. package/build/types/entities/interfaces/DereferenceOperatorEntity.d.ts +34 -6
  64. package/build/types/entities/interfaces/FieldEntityWithImplicitAccessors.d.ts +15 -0
  65. package/build/types/entities/interfaces/FunctionEntity.d.ts +75 -8
  66. package/build/types/entities/interfaces/IndexerEntity.d.ts +35 -6
  67. package/build/types/entities/interfaces/VariableEntity.d.ts +45 -12
  68. package/build/types/entities/interfaces/a/ConstructorEntityA.d.ts +2 -3
  69. package/build/types/entities/interfaces/a/DestructorEntityA.d.ts +2 -4
  70. package/build/types/entities/interfaces/index.d.ts +8 -6
  71. package/build/types/entities/intrinsic/IntrinsicConstructorEntity.d.ts +3 -1
  72. package/build/types/entities/intrinsic/IntrinsicFunctionEntity.d.ts +7 -14
  73. package/build/types/entities/intrinsic/IntrinsicTypeMemberAccessorEntity.d.ts +11 -0
  74. package/build/types/entities/intrinsic/IntrinsicVariableEntity.d.ts +20 -16
  75. package/build/types/entities/intrinsic/index.d.ts +1 -2
  76. package/build/types/entities/source/a/SourceConstructorEntity.d.ts +2 -1
  77. package/build/types/entities/source/a/SourceDereferenceOperatorEntity.d.ts +6 -9
  78. package/build/types/entities/source/a/SourceDestructorEntity.d.ts +2 -1
  79. package/build/types/entities/source/a/SourceFunctionEntity.d.ts +9 -17
  80. package/build/types/entities/source/a/SourceGetterEntity.d.ts +62 -24
  81. package/build/types/entities/source/a/SourceIndexerEntity.d.ts +6 -9
  82. package/build/types/entities/source/a/SourceSetterEntity.d.ts +68 -25
  83. package/build/types/entities/source/a/SourceVariableEntity.d.ts +35 -42
  84. package/build/types/entities/translated/TranslatedDereferenceOperatorEntity.d.ts +12 -6
  85. package/build/types/entities/translated/TranslatedFunctionEntity.d.ts +27 -2
  86. package/build/types/entities/translated/TranslatedIndexerEntity.d.ts +14 -6
  87. package/build/types/entities/translated/TranslatedPackageMemberAccessorEntity.d.ts +38 -0
  88. package/build/types/entities/translated/TranslatedParameterEntity.d.ts +34 -0
  89. package/build/types/entities/translated/TranslatedTypeMemberAccessorEntity.d.ts +45 -0
  90. package/build/types/entities/translated/TranslatedVariableEntity.d.ts +19 -39
  91. package/build/types/entities/translated/index.d.ts +3 -2
  92. package/build/types/entities/translated/source/a/SourceTranslatedIndexerEntity.d.ts +2 -1
  93. package/build/types/executor/NodeCompiler.d.ts +1 -1
  94. package/build/types/services/CustomRequests.d.ts +0 -55
  95. package/build/types/services/LanguageServer.d.ts +13 -7
  96. package/build/types/services/LanguageServerMessageHandler.d.ts +30 -0
  97. package/build/types/services/a/DisplayService.d.ts +1 -3
  98. package/build/types/services/a/NodeSemanticInfo.d.ts +1 -1
  99. package/build/types/services/a/references/DefinitionInfoFinder.d.ts +1 -1
  100. package/build/types/services/common/display/BaseDisplayService.d.ts +0 -2
  101. package/build/types/services/common/display/DisplayService.d.ts +1 -3
  102. package/build/types/services/common/display/Types.d.ts +16 -7
  103. package/build/types/services/common/references/ReferencesSearchUtils.d.ts +1 -1
  104. package/build/types/services/common/references/ReferencesService.d.ts +1 -0
  105. package/build/types/services/common/source-generation/EntityToSyntax.d.ts +3 -1
  106. package/build/types/tree/a/Nodes.d.ts +12 -4
  107. package/build/types/tree/a/SyntaxFactory.d.ts +4 -4
  108. package/build/types/ts-interop/Entities.d.ts +65 -46
  109. package/build/types/types/ComputedTypeMember.d.ts +3 -0
  110. package/build/types/types/StructuredType.d.ts +2 -1
  111. package/build/types/types/TypeMembers.d.ts +31 -8
  112. package/build/types/types/collections/TypeDictionary.d.ts +32 -0
  113. package/build/types/types/collections/TypeMemberDictionary.d.ts +27 -0
  114. package/build/types/types/collections/TypeMemberSet.d.ts +24 -0
  115. package/build/types/types/collections/TypeSet.d.ts +29 -0
  116. package/build/types/types/index.d.ts +5 -0
  117. package/package.json +4 -3
  118. package/build/types/analysis/OverridableTypeMember.d.ts +0 -6
  119. package/build/types/entities/interfaces/GetterEntity.d.ts +0 -21
  120. package/build/types/entities/interfaces/OperatorEntity.d.ts +0 -12
  121. package/build/types/entities/interfaces/SetterEntity.d.ts +0 -19
  122. package/build/types/entities/intrinsic/IntrinsicGetterEntity.d.ts +0 -24
  123. package/build/types/entities/intrinsic/IntrinsicSetterEntity.d.ts +0 -21
  124. package/build/types/entities/translated/TranslatedGetterEntity.d.ts +0 -24
  125. package/build/types/entities/translated/TranslatedSetterEntity.d.ts +0 -21
  126. package/build/types/services/a/ScriptEditingService.d.ts +0 -13
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  AccessedFunction_entity,
3
3
  AccessedFunction_typeMember,
4
- Analyzer2 as Analyzer,
4
+ AccessorEntity,
5
+ Analyzer3 as Analyzer,
5
6
  Cached,
6
7
  CancelledError,
7
8
  CompilationLoader,
@@ -19,7 +20,6 @@ import {
19
20
  FileSystemTree,
20
21
  FunctionDeclaration_accessedFunction,
21
22
  FunctionDeclaration_entity,
22
- FunctionDeclaration_substitutedFunction,
23
23
  FunctionDeclaration_typeMember,
24
24
  GeneratedSourceFileScheme,
25
25
  GenericCancellationToken,
@@ -39,7 +39,6 @@ import {
39
39
  NamedType_structured,
40
40
  NamedType_variant,
41
41
  NodeModulesDirectoryName,
42
- NodePath,
43
42
  Option,
44
43
  PackageMemberLookup,
45
44
  ParameterDeclaration_matchResultParameter,
@@ -64,6 +63,7 @@ import {
64
63
  TypeMemberLookupA,
65
64
  TypeWithMembersOrExtensionEntity,
66
65
  Uri,
66
+ UrisRelativityKind,
67
67
  VariableDeclaration_entity,
68
68
  VariableDeclaration_typeMember,
69
69
  WellKnownDeclarationsLoadError,
@@ -78,7 +78,6 @@ import {
78
78
  getOrCreateKeywordDictionary,
79
79
  ifTypeEntityIsFunctionTypeAliasThenFunctionType,
80
80
  isAnonymousStructuredTypeDeclaration,
81
- isComputedVariableEntity,
82
81
  isEntityWithParameters,
83
82
  isEntityWithTypeParameters,
84
83
  isExpression,
@@ -92,15 +91,14 @@ import {
92
91
  isPackageStructuredTypeDeclaration,
93
92
  isPackageTypeDeclaration,
94
93
  isPackageTypeEntity,
95
- isRegularOrBlockFunctionLiteral,
96
94
  isSourceOrConfigurationFileName,
97
95
  isStatement,
98
- isSubprogramDeclarationOrLiteral,
99
96
  isTypeEntity,
100
97
  isTypeEntityWithMembers,
101
98
  isTypeMemberDeclaration,
102
99
  isTypeSpecifier,
103
100
  isUnaryOperator,
101
+ isVariableEntityWithExplicitAccessors,
104
102
  kebabCaseToCamelCase,
105
103
  localeToString,
106
104
  modifierKindsInSortOrder,
@@ -109,11 +107,41 @@ import {
109
107
  sortModifiers,
110
108
  traverseTreeAsync,
111
109
  yieldTask
112
- } from "../chunk-OTHSFQXT.js";
110
+ } from "../chunk-IJGHVDYP.js";
113
111
 
114
- // source/services/CustomRequests.ts
112
+ // source/services/common/Types.ts
115
113
  import * as ls from "vscode-languageserver";
116
- var CustomRequestType = class extends ls.RequestType {
114
+ var SourceLocation = class {
115
+ constructor(sourceFile, range) {
116
+ this.sourceFile = sourceFile;
117
+ this.range = range;
118
+ }
119
+ };
120
+ function isCompletionItemData(value) {
121
+ Debug.cast(value);
122
+ return value instanceof Object && typeof value.cacheId === "number" && typeof value.indexInCache === "number";
123
+ }
124
+ function isCodeActionData(value) {
125
+ Debug.cast(value);
126
+ return value instanceof Object && typeof value.name === "string" && value.location instanceof Object && ls.DocumentUri.is(value.location.uri) && ls.Position.is(value.location.position) && "data" in value;
127
+ }
128
+ var SourceFileEdit = class {
129
+ constructor(sourceFile, range, text) {
130
+ this.sourceFile = sourceFile;
131
+ this.range = range;
132
+ this.text = text;
133
+ }
134
+ };
135
+ var NodeLocation = class {
136
+ constructor(sourceFile, path) {
137
+ this.sourceFile = sourceFile;
138
+ this.path = path;
139
+ }
140
+ };
141
+
142
+ // source/services/CustomRequests.ts
143
+ import * as ls2 from "vscode-languageserver";
144
+ var CustomRequestType = class extends ls2.RequestType {
117
145
  };
118
146
  var customRequests = {
119
147
  getLocalesAvailableForTranslation: new CustomRequestType("artel/getLocalesAvailableForTranslation"),
@@ -123,12 +151,7 @@ var customRequests = {
123
151
  emitCodeToString: new CustomRequestType("artel/emitCodeToString"),
124
152
  displayFileSystemTree: new CustomRequestType("artel/displayFileSystemTree"),
125
153
  createOrUpdateSourceFile: new CustomRequestType("artel/fs.createOrUpdateSourceFile"),
126
- deleteSourceFile: new CustomRequestType("artel/fs.deleteSourceFile"),
127
- getNodeRange: new CustomRequestType("artel/getNodeRange"),
128
- assignField: new CustomRequestType("artel/assignField"),
129
- addBlocksToScript: new CustomRequestType("artel/addBlocksToScript"),
130
- canDeleteBlocksFromScript: new CustomRequestType("artel/canDeleteBlocksFromScript"),
131
- deleteBlocksFromScript: new CustomRequestType("artel/deleteBlocksFromScript")
154
+ deleteSourceFile: new CustomRequestType("artel/fs.deleteSourceFile")
132
155
  };
133
156
 
134
157
  // source/services/LanguageServer.ts
@@ -158,36 +181,6 @@ function isGenerateMissingTranslationsCodeActionData(value) {
158
181
  return value instanceof Object && typeof value.onlyTypeMembers === "boolean";
159
182
  }
160
183
 
161
- // source/services/common/Types.ts
162
- import * as ls2 from "vscode-languageserver";
163
- var SourceLocation = class {
164
- constructor(sourceFile, range) {
165
- this.sourceFile = sourceFile;
166
- this.range = range;
167
- }
168
- };
169
- function isCompletionItemData(value) {
170
- Debug.cast(value);
171
- return value instanceof Object && typeof value.cacheId === "number" && typeof value.indexInCache === "number";
172
- }
173
- function isCodeActionData(value) {
174
- Debug.cast(value);
175
- return value instanceof Object && typeof value.name === "string" && value.location instanceof Object && ls2.DocumentUri.is(value.location.uri) && ls2.Position.is(value.location.position) && "data" in value;
176
- }
177
- var SourceFileEdit = class {
178
- constructor(sourceFile, range, text) {
179
- this.sourceFile = sourceFile;
180
- this.range = range;
181
- this.text = text;
182
- }
183
- };
184
- var NodeLocation = class {
185
- constructor(sourceFile, path) {
186
- this.sourceFile = sourceFile;
187
- this.path = path;
188
- }
189
- };
190
-
191
184
  // source/services/a/TreeUtils.ts
192
185
  function getPrecedingToken(sourceFile, offset) {
193
186
  let token = getTokenAtOffset(sourceFile, offset, true);
@@ -566,8 +559,8 @@ var TranslationsGenerator = class _TranslationsGenerator {
566
559
  }
567
560
  return this.createPackageTypeWithMembersTranslation(entity);
568
561
  }
569
- case 8 /* TypeExtension */:
570
- case 10 /* TextTranslation */:
562
+ case 6 /* TypeExtension */:
563
+ case 8 /* TextTranslation */:
571
564
  return void 0;
572
565
  default:
573
566
  Debug.never(entity);
@@ -601,9 +594,9 @@ var TranslationsGenerator = class _TranslationsGenerator {
601
594
  return this.createFieldTranslation(entity);
602
595
  case 1 /* Function */:
603
596
  return this.createMethodTranslation(entity);
604
- case 5 /* Indexer */:
597
+ case 3 /* Indexer */:
605
598
  return this.createIndexerTranslation(entity);
606
- case 6 /* DereferenceOperator */:
599
+ case 4 /* DereferenceOperator */:
607
600
  return void 0;
608
601
  default:
609
602
  Debug.never(entity);
@@ -640,6 +633,7 @@ var TranslationsGenerator = class _TranslationsGenerator {
640
633
  return SyntaxFactory.constructorTranslation(parameters, parameters);
641
634
  }
642
635
  case 2 /* Destructor */:
636
+ case 4 /* Accessor */:
643
637
  return void 0;
644
638
  default:
645
639
  Debug.never(entity.methodKind);
@@ -3872,7 +3866,7 @@ var NodeSemanticInfoServiceA = class {
3872
3866
  if (isNarrowableReferenceExpression(node)) {
3873
3867
  narrowedType = analyzer.type.ofExpression(node);
3874
3868
  }
3875
- const target = new FieldReferenceTarget(meaning.field, meaning.accessKind, narrowedType);
3869
+ const target = new FieldReferenceTarget(meaning.field, meaning.access.kind, narrowedType);
3876
3870
  result = new ReferenceNodeSemanticInfo([target], false);
3877
3871
  break;
3878
3872
  }
@@ -3881,7 +3875,7 @@ var NodeSemanticInfoServiceA = class {
3881
3875
  if (isNarrowableReferenceExpression(node)) {
3882
3876
  narrowedType = analyzer.type.ofExpression(node);
3883
3877
  }
3884
- const target = new FieldReferenceTarget(meaning.field, meaning.accessKind, narrowedType);
3878
+ const target = new FieldReferenceTarget(meaning.field, meaning.access.kind, narrowedType);
3885
3879
  result = new ReferenceNodeSemanticInfo([target], false);
3886
3880
  break;
3887
3881
  }
@@ -3890,7 +3884,7 @@ var NodeSemanticInfoServiceA = class {
3890
3884
  if (isNarrowableReferenceExpression(node)) {
3891
3885
  narrowedType = analyzer.type.ofExpression(node);
3892
3886
  }
3893
- const target = new EntityReferenceTarget(meaning.variable, meaning.accessKind, narrowedType);
3887
+ const target = new EntityReferenceTarget(meaning.variable, meaning.access.kind, narrowedType);
3894
3888
  result = new ReferenceNodeSemanticInfo([target], false);
3895
3889
  break;
3896
3890
  }
@@ -4176,10 +4170,10 @@ var NodeSemanticInfoServiceA = class {
4176
4170
  }
4177
4171
  const variable = meaning.variable;
4178
4172
  if (variable.kind === "entity") {
4179
- const target = new EntityReferenceTarget(variable.value, meaning.accessKind, narrowedType);
4173
+ const target = new EntityReferenceTarget(variable.value, meaning.access.kind, narrowedType);
4180
4174
  result = new ReferenceNodeSemanticInfo([target], false);
4181
4175
  } else if (variable.kind === "type-member") {
4182
- const target = new FieldReferenceTarget(variable.value, meaning.accessKind, narrowedType);
4176
+ const target = new FieldReferenceTarget(variable.value, meaning.access.kind, narrowedType);
4183
4177
  result = new ReferenceNodeSemanticInfo([target], false);
4184
4178
  } else {
4185
4179
  Debug.never(variable);
@@ -4242,11 +4236,11 @@ var NodeSemanticInfoServiceA = class {
4242
4236
  if (isNonEmptyArray(meaning.suitableIndexers)) {
4243
4237
  result = createIndexersReference(
4244
4238
  meaning.suitableIndexers,
4245
- meaning.accessKind,
4239
+ meaning.access.kind,
4246
4240
  meaning.suitableIndexers.length > 1
4247
4241
  );
4248
4242
  } else if (isNonEmptyArray(meaning.candidates)) {
4249
- result = createIndexersReference(meaning.candidates, meaning.accessKind, true);
4243
+ result = createIndexersReference(meaning.candidates, meaning.access.kind, true);
4250
4244
  }
4251
4245
  if (result !== void 0 && options7.includeBetterReferenceTargets) {
4252
4246
  result = this.getBetterReferenceTargetsOrPreserve(result);
@@ -4308,7 +4302,7 @@ var NodeSemanticInfoServiceA = class {
4308
4302
  static ofDereferenceExpressionOperator(analyzer, node, options7) {
4309
4303
  const meaning = analyzer.resolveDereferenceExpression(node);
4310
4304
  if (meaning.kind === "resolved") {
4311
- const target = new DereferenceOperatorReferenceTarget(meaning.operator, meaning.accessKind);
4305
+ const target = new DereferenceOperatorReferenceTarget(meaning.operator, meaning.access.kind);
4312
4306
  let result = new ReferenceNodeSemanticInfo([target], false);
4313
4307
  if (options7.includeBetterReferenceTargets) {
4314
4308
  result = this.getBetterReferenceTargetsOrPreserve(result);
@@ -4616,45 +4610,79 @@ var NodeSemanticInfoServiceA = class {
4616
4610
  }
4617
4611
  static getBetterReferenceTargetsOrPreserve(info) {
4618
4612
  const currentTargets = info.betterTargets ?? info.targets;
4619
- const betterTargets = Query.from(currentTargets).mapAndFilter((t) => this.getBetterReferenceTarget(t)).toArray();
4613
+ const betterTargets = currentTargets.map((t) => this.getBetterReferenceTargets(t)).filter((t) => t !== void 0).flat();
4620
4614
  if (isNonEmptyArray(betterTargets)) {
4621
4615
  return new ReferenceNodeSemanticInfo(info.targets, info.isAmbiguous, betterTargets);
4622
4616
  }
4623
4617
  return info;
4624
4618
  }
4625
- static getBetterReferenceTarget(original) {
4619
+ static getBetterReferenceTargets(original) {
4626
4620
  let result;
4627
- let currentTarget = original;
4628
- let betterTarget;
4621
+ let currentTargets = [original];
4622
+ let betterTargets;
4623
+ let foundBetterTarget;
4629
4624
  do {
4630
- betterTarget = void 0;
4631
- if (currentTarget.kind === "entity" && currentTarget.entity.kind === 0 /* Variable */) {
4632
- {
4633
- if (currentTarget.entity.subkind === "parameter") {
4634
- const specialVariableInfo = currentTarget.entity.isSpecial();
4635
- if (specialVariableInfo?.kind === "implicit-function-block-parameter") {
4636
- betterTarget = new TypeParameterReferenceTarget(
4637
- specialVariableInfo.targetTypeParameter,
4638
- currentTarget.accessKind
4639
- );
4625
+ betterTargets = [];
4626
+ foundBetterTarget = false;
4627
+ for (const currentTarget of currentTargets) {
4628
+ let foundBetterCurrentTarget = false;
4629
+ if (currentTarget.kind === "entity" && currentTarget.entity.kind === 0 /* Variable */) {
4630
+ {
4631
+ if (currentTarget.entity.subkind === "parameter") {
4632
+ const specialVariableInfo = currentTarget.entity.isSpecial();
4633
+ if (specialVariableInfo?.kind === "implicit-function-block-parameter") {
4634
+ const target = new TypeParameterReferenceTarget(
4635
+ specialVariableInfo.targetTypeParameter,
4636
+ currentTarget.accessKind
4637
+ );
4638
+ betterTargets.push(target);
4639
+ foundBetterCurrentTarget = true;
4640
+ }
4640
4641
  }
4641
4642
  }
4642
- }
4643
- } else if (currentTarget.kind === "accessed-function") {
4644
- const entity = currentTarget.func.getEntity();
4645
- if (entity.subkind === "method" && TypeMemberEntity.isConstructor(entity) && entity.getDefinition().kind === 1 /* Intrinsic */) {
4646
- const containingEntity = entity.getContainingEntity();
4647
- if (containingEntity.kind === 2 /* Type */ && containingEntity.getDefinition().kind === 0 /* Source */) {
4648
- betterTarget = new EntityReferenceTarget(containingEntity, 0 /* Get */);
4643
+ } else if (currentTarget.kind === "accessed-function") {
4644
+ const entity = currentTarget.func.getEntity();
4645
+ if (TypeMemberEntity.isConstructor(entity) && entity.getDefinition().kind === 1 /* Intrinsic */) {
4646
+ const containingEntity = entity.getContainingEntity();
4647
+ if (containingEntity.kind === 2 /* Type */ && containingEntity.getDefinition().kind === 0 /* Source */) {
4648
+ const target = new EntityReferenceTarget(containingEntity, 0 /* Get */);
4649
+ betterTargets.push(target);
4650
+ foundBetterCurrentTarget = true;
4651
+ }
4649
4652
  }
4653
+ } else if (currentTarget.kind === "entity" && currentTarget.entity.kind === 1 /* Function */) {
4654
+ } else if (currentTarget.kind === "match-result-value-parameter") {
4655
+ const containingEntity = currentTarget.parameter.entity.getContainingEntity();
4656
+ if (containingEntity.kind === 3 /* Indexer */ && containingEntity.getDefinition().kind === 0 /* Source */) {
4657
+ const indexerParameters = containingEntity.getParameters();
4658
+ const parameterIndex = indexerParameters.indexOf(currentTarget.parameter.entity);
4659
+ if (parameterIndex >= 0) {
4660
+ const getterParameter = containingEntity.getGetter()?.getParameters()[parameterIndex];
4661
+ const setterParameter = containingEntity.getSetter()?.getParameters()[parameterIndex];
4662
+ if (getterParameter !== void 0) {
4663
+ const target = new EntityReferenceTarget(getterParameter, currentTarget.accessKind);
4664
+ betterTargets.push(target);
4665
+ foundBetterCurrentTarget = true;
4666
+ }
4667
+ if (setterParameter !== void 0) {
4668
+ const target = new EntityReferenceTarget(setterParameter, currentTarget.accessKind);
4669
+ betterTargets.push(target);
4670
+ foundBetterCurrentTarget = true;
4671
+ }
4672
+ }
4673
+ }
4674
+ }
4675
+ if (foundBetterCurrentTarget) {
4676
+ foundBetterTarget ||= true;
4677
+ } else {
4678
+ betterTargets.push(currentTarget);
4650
4679
  }
4651
- } else if (currentTarget.kind === "entity" && currentTarget.entity.kind === 1 /* Function */) {
4652
4680
  }
4653
- if (betterTarget !== void 0) {
4654
- result = betterTarget;
4655
- currentTarget = betterTarget;
4681
+ if (foundBetterTarget) {
4682
+ result = betterTargets;
4683
+ currentTargets = betterTargets;
4656
4684
  }
4657
- } while (betterTarget !== void 0);
4685
+ } while (foundBetterTarget);
4658
4686
  return result;
4659
4687
  }
4660
4688
  static getResolvedContainingTranslationPackage(analyzer, node) {
@@ -4703,7 +4731,7 @@ var NodeSemanticInfoServiceA = class {
4703
4731
 
4704
4732
  // source/services/common/Utils.ts
4705
4733
  function getEntitySourceLocations(analyzer, entity) {
4706
- if (entity.kind === 9 /* Package */) {
4734
+ if (entity.kind === 7 /* Package */) {
4707
4735
  return void 0;
4708
4736
  }
4709
4737
  let result;
@@ -4724,7 +4752,7 @@ function getEntitySourceLocations(analyzer, entity) {
4724
4752
  Debug.never(definition.value);
4725
4753
  }
4726
4754
  }
4727
- } else if (entity.kind === 5 /* Indexer */) {
4755
+ } else if (entity.kind === 3 /* Indexer */) {
4728
4756
  const definition = entity.getDefinition();
4729
4757
  if (definition.kind === 0 /* Source */) {
4730
4758
  result = definition.nodes.map((d) => {
@@ -4733,7 +4761,7 @@ function getEntitySourceLocations(analyzer, entity) {
4733
4761
  return new SourceLocation(sourceFile, range);
4734
4762
  });
4735
4763
  }
4736
- } else if (entity.kind === 6 /* DereferenceOperator */) {
4764
+ } else if (entity.kind === 4 /* DereferenceOperator */) {
4737
4765
  const definition = entity.getDefinition();
4738
4766
  if (definition.kind === 0 /* Source */) {
4739
4767
  result = definition.nodes.map((d) => {
@@ -4742,7 +4770,7 @@ function getEntitySourceLocations(analyzer, entity) {
4742
4770
  return new SourceLocation(sourceFile, range);
4743
4771
  });
4744
4772
  }
4745
- } else if (entity.kind === 10 /* TextTranslation */) {
4773
+ } else if (entity.kind === 8 /* TextTranslation */) {
4746
4774
  const definition = entity.getDefinition();
4747
4775
  if (definition.kind === 0 /* Source */) {
4748
4776
  const range = definition.node.rangeWithoutTrivia;
@@ -5385,22 +5413,8 @@ var HoverService = class {
5385
5413
  }
5386
5414
  }
5387
5415
  createHoverAtAccessedFunction(func, range) {
5388
- switch (func.kind) {
5389
- case "entity": {
5390
- const declaration = new FunctionDeclaration_entity(func.value);
5391
- return new Hover(this.displayService.displayFunctionDeclaration(declaration), range);
5392
- }
5393
- case "type-member": {
5394
- const declaration = new FunctionDeclaration_typeMember(func.value);
5395
- return new Hover(this.displayService.displayFunctionDeclaration(declaration), range);
5396
- }
5397
- case "substituted-function": {
5398
- const declaration = new FunctionDeclaration_substitutedFunction(func.value);
5399
- return new Hover(this.displayService.displayFunctionDeclaration(declaration), range);
5400
- }
5401
- default:
5402
- Debug.never(func);
5403
- }
5416
+ const declaration = new FunctionDeclaration_accessedFunction(func);
5417
+ return new Hover(this.displayService.displayFunctionDeclaration(declaration), range);
5404
5418
  }
5405
5419
  };
5406
5420
 
@@ -5609,7 +5623,7 @@ var ReferencesFinder = class {
5609
5623
  return void 0;
5610
5624
  }
5611
5625
  } else if (this.definitions.length > 1 && potentialReferenceDefinitions.length > 1) {
5612
- if (this.definitions.length === potentialReferenceDefinitions.length && this.definitions.every((d) => potentialReferenceDefinitions.some((rd) => this.areEntitiesWithSameDefinition(rd.value, d.value)))) {
5626
+ if (potentialReferenceDefinitions.some((r) => this.definitions.some((d) => this.areEntitiesWithSameDefinition(r.value, d.value)))) {
5613
5627
  return potentialReferenceDefinitions[0].referenceKind;
5614
5628
  } else {
5615
5629
  return void 0;
@@ -5639,7 +5653,7 @@ var ReferencesFinderA = class extends ReferencesFinder {
5639
5653
  return __async(this, null, function* () {
5640
5654
  let semanticInfoOptions;
5641
5655
  const firstDefinition = this.definitions[0].value;
5642
- if (firstDefinition.kind === 1 /* Function */ && firstDefinition.subkind === "method" && TypeMemberEntity.isConstructor(firstDefinition)) {
5656
+ if (TypeMemberEntity.isConstructor(firstDefinition)) {
5643
5657
  semanticInfoOptions = {
5644
5658
  preferredTargetOfExplicitConstructorCall: "constructor-declaration",
5645
5659
  includeBetterReferenceTargets: true
@@ -5889,6 +5903,7 @@ var ReferencesService = class {
5889
5903
  if (definitions.length === 0) {
5890
5904
  return [];
5891
5905
  }
5906
+ this.expandDefinitionsArray(definitions);
5892
5907
  const result = [];
5893
5908
  const firstDefinition = definitions[0];
5894
5909
  const restrictions = this.getReferenceRestrictions(firstDefinition, options7);
@@ -5907,6 +5922,46 @@ var ReferencesService = class {
5907
5922
  return result;
5908
5923
  });
5909
5924
  }
5925
+ expandDefinitionsArray(definitions) {
5926
+ const length = definitions.length;
5927
+ for (let i = 0; i < length; i++) {
5928
+ const definition = definitions[i];
5929
+ if (definition.value.kind === 0 /* Variable */ && definition.value.subkind === "parameter") {
5930
+ const containingEntity = definition.value.getContainingEntity();
5931
+ if (containingEntity.kind === 3 /* Indexer */) {
5932
+ const parameterIndex = containingEntity.getParameters().indexOf(definition.value);
5933
+ if (parameterIndex >= 0) {
5934
+ const getterParameter = containingEntity.getGetter()?.getParameters()[parameterIndex];
5935
+ if (getterParameter !== void 0 && !definitions.some((d) => d.value === getterParameter)) {
5936
+ definitions.push(new DefinitionInfo(getterParameter, definition.referenceKind));
5937
+ }
5938
+ const setterParameter = containingEntity.getSetter()?.getParameters()[parameterIndex];
5939
+ if (setterParameter !== void 0 && !definitions.some((d) => d.value === setterParameter)) {
5940
+ definitions.push(new DefinitionInfo(setterParameter, definition.referenceKind));
5941
+ }
5942
+ }
5943
+ } else if (TypeMemberEntity.isAccessor(containingEntity)) {
5944
+ const accessorOwner = containingEntity.getAccessorOwner();
5945
+ if (accessorOwner?.kind === 3 /* Indexer */) {
5946
+ const parameterIndex = containingEntity.getParameters().indexOf(definition.value);
5947
+ if (parameterIndex >= 0) {
5948
+ const indexerParameter = accessorOwner.getParameters()[parameterIndex];
5949
+ if (indexerParameter !== void 0 && !definitions.some((d) => d.value === indexerParameter)) {
5950
+ definitions.push(new DefinitionInfo(indexerParameter, definition.referenceKind));
5951
+ }
5952
+ }
5953
+ const otherAccessor = AccessorEntity.isGetter(containingEntity) ? accessorOwner.getSetter() : accessorOwner.getGetter();
5954
+ if (otherAccessor !== void 0) {
5955
+ const otherAccessorParameter = otherAccessor.getParameters()[parameterIndex];
5956
+ if (otherAccessorParameter !== void 0 && !definitions.some((d) => d.value === otherAccessorParameter)) {
5957
+ definitions.push(new DefinitionInfo(otherAccessorParameter, definition.referenceKind));
5958
+ }
5959
+ }
5960
+ }
5961
+ }
5962
+ }
5963
+ }
5964
+ }
5910
5965
  getReferencedDefinitionInfosAtOffset(analyzer, sourceFile, offset, options7) {
5911
5966
  switch (sourceFile.dialect) {
5912
5967
  case 0 /* ArtelA */:
@@ -5920,7 +5975,7 @@ var ReferencesService = class {
5920
5975
  getReferenceRestrictions(definition, _options) {
5921
5976
  const result = new ReferenceRestrictions();
5922
5977
  let namedDefinitionInfo;
5923
- if (definition.value.kind === 1 /* Function */ && definition.value.subkind === "method" && TypeMemberEntity.isConstructor(definition.value)) {
5978
+ if (TypeMemberEntity.isConstructor(definition.value)) {
5924
5979
  const type = TypeWithMembersOrExtensionEntity.getContextualTypeEntity(definition.value.getContainingEntity());
5925
5980
  if (type !== void 0) {
5926
5981
  namedDefinitionInfo = this.isEntityWithRegularName(type);
@@ -5931,12 +5986,12 @@ var ReferencesService = class {
5931
5986
  if (namedDefinitionInfo !== void 0) {
5932
5987
  result.canBeIdentifier = true;
5933
5988
  }
5934
- const isConstructor = definition.value.kind === 1 /* Function */ && definition.value.subkind === "method" && TypeMemberEntity.isConstructor(definition.value);
5989
+ const isConstructor = TypeMemberEntity.isConstructor(definition.value);
5935
5990
  if (isConstructor) {
5936
5991
  result.canBeAutotypeCall = true;
5937
5992
  result.canBeConstructorDeclaration = true;
5938
5993
  }
5939
- if (definition.value.kind === 6 /* DereferenceOperator */) {
5994
+ if (definition.value.kind === 4 /* DereferenceOperator */) {
5940
5995
  result.canBeDereferenceOperator = true;
5941
5996
  }
5942
5997
  if (isTypeEntity(definition.value) || isConstructor) {
@@ -5945,7 +6000,7 @@ var ReferencesService = class {
5945
6000
  if (definition.value.kind === 1 /* Function */) {
5946
6001
  result.canBeBaseExpression = true;
5947
6002
  }
5948
- if (definition.value.kind === 5 /* Indexer */) {
6003
+ if (definition.value.kind === 3 /* Indexer */) {
5949
6004
  result.canBeIndexer = true;
5950
6005
  }
5951
6006
  if (definition.value.kind === 0 /* Variable */ && definition.value.subkind === "parameter" && definition.value.isObjectParameter()) {
@@ -6010,15 +6065,13 @@ var ReferencesService = class {
6010
6065
  }
6011
6066
  return void 0;
6012
6067
  }
6013
- case 7 /* PackageAlias */:
6068
+ case 5 /* PackageAlias */:
6014
6069
  return { name: entity.getName() };
6015
- case 3 /* Getter */:
6016
- case 4 /* Setter */:
6017
- case 5 /* Indexer */:
6018
- case 6 /* DereferenceOperator */:
6019
- case 9 /* Package */:
6020
- case 8 /* TypeExtension */:
6021
- case 10 /* TextTranslation */:
6070
+ case 3 /* Indexer */:
6071
+ case 4 /* DereferenceOperator */:
6072
+ case 7 /* Package */:
6073
+ case 6 /* TypeExtension */:
6074
+ case 8 /* TextTranslation */:
6022
6075
  return void 0;
6023
6076
  default:
6024
6077
  Debug.never(entity);
@@ -6164,155 +6217,6 @@ var RenameServiceA = class extends RenameService {
6164
6217
  }
6165
6218
  };
6166
6219
 
6167
- // source/services/common/script-editing/ScriptEditingService.ts
6168
- var ScriptEditingService = class _ScriptEditingService {
6169
- static {
6170
- this.indentationStep = " ";
6171
- }
6172
- static {
6173
- this.elementParameterNameText = "o";
6174
- }
6175
- static {
6176
- this.elementParameterName = new Name(_ScriptEditingService.elementParameterNameText);
6177
- }
6178
- createScriptBlockText(blockInfo, indentation, newLine) {
6179
- const i = indentation;
6180
- const s = _ScriptEditingService.indentationStep;
6181
- const nl = newLine;
6182
- const el = _ScriptEditingService.elementParameterNameText;
6183
- let result = `${i}${blockInfo.name}(${nl}${i}${s}key = ${blockInfo.key},${nl}`;
6184
- if (blockInfo.areaIndex !== void 0) {
6185
- result += `${i}${s}areaIndex = ${blockInfo.areaIndex},${nl}`;
6186
- }
6187
- result += `${i}${s}body =${nl}${i}${s}{${nl}` + Object.entries(blockInfo.elementProperties).map(([p, v]) => `${i}${s}${s}${el}.${p} = ${v}${nl}`).join("");
6188
- if (blockInfo.nestedBlocks.length > 0) {
6189
- result += blockInfo.nestedBlocks.map((b) => this.createScriptBlockText(b, `${i}${s}${s}`, nl) + nl).join("");
6190
- }
6191
- result += `${i}${s}})`;
6192
- return result;
6193
- }
6194
- detectNewLine(text) {
6195
- return text.includes("\r\n") ? "\r\n" : "\n";
6196
- }
6197
- };
6198
-
6199
- // source/services/a/ScriptEditingService.ts
6200
- var ScriptEditingServiceA = class _ScriptEditingServiceA extends ScriptEditingService {
6201
- createEditWithFieldAssignment(analyzer, sourceFile, scriptDeclaration, fieldName, value) {
6202
- const subprogramBlock = scriptDeclaration.block;
6203
- if (subprogramBlock === void 0) {
6204
- return void 0;
6205
- }
6206
- const lastAssignmentStatement = this.findLastAssignmentToField(analyzer, subprogramBlock, fieldName);
6207
- let result;
6208
- if (lastAssignmentStatement !== void 0) {
6209
- result = new SourceFileEdit(sourceFile, lastAssignmentStatement.right.rangeWithoutTrivia, value);
6210
- } else {
6211
- const assignmentText = `${_ScriptEditingServiceA.elementParameterNameText}.${fieldName} = ${value}`;
6212
- const lastStatement = subprogramBlock.statementList?.statements.last();
6213
- let editRange;
6214
- let indentationText;
6215
- if (lastStatement !== void 0) {
6216
- editRange = Range.empty(lastStatement.rangeWithoutTrivia.end);
6217
- const statementStartCharacter = sourceFile.getPositionAt(lastStatement.rangeWithoutTrivia.start).character;
6218
- indentationText = `${this.detectNewLine(sourceFile.getSourceText())}${" ".repeat(statementStartCharacter)}`;
6219
- } else {
6220
- const openBraceRange = subprogramBlock.openBraceToken.rangeWithoutTrivia;
6221
- const closeBraceRange = subprogramBlock.closeBraceToken.rangeWithoutTrivia;
6222
- const openBracePosition = sourceFile.getPositionAt(openBraceRange.start);
6223
- const closeBracePosition = sourceFile.getPositionAt(closeBraceRange.start);
6224
- if (openBracePosition.line !== closeBracePosition.line) {
6225
- editRange = Range.empty(openBraceRange.end);
6226
- indentationText = `${this.detectNewLine(sourceFile.getSourceText())}${" ".repeat(closeBracePosition.character + 2)}`;
6227
- } else {
6228
- editRange = Range.empty(openBraceRange.end);
6229
- indentationText = " ";
6230
- }
6231
- }
6232
- result = new SourceFileEdit(sourceFile, editRange, `${indentationText}${assignmentText}`);
6233
- }
6234
- return result;
6235
- }
6236
- createEditAddingBlocks(sourceFile, scriptDeclaration, addedBlockInfos) {
6237
- const subprogramBlock = scriptDeclaration.block;
6238
- if (subprogramBlock === void 0) {
6239
- return void 0;
6240
- }
6241
- let scriptBlockIndentation;
6242
- let editStart;
6243
- const lastStatement = subprogramBlock.statementList.statements.last();
6244
- if (lastStatement !== void 0) {
6245
- const lastStatementStartCharacter = sourceFile.getPositionAt(lastStatement.rangeWithoutTrivia.start).character;
6246
- scriptBlockIndentation = " ".repeat(lastStatementStartCharacter);
6247
- editStart = lastStatement.rangeWithoutTrivia.end;
6248
- } else {
6249
- const openBraceStartCharacter = sourceFile.getPositionAt(subprogramBlock.openBraceToken.rangeWithoutTrivia.start).character;
6250
- scriptBlockIndentation = " ".repeat(openBraceStartCharacter) + _ScriptEditingServiceA.indentationStep;
6251
- editStart = subprogramBlock.openBraceToken.rangeWithoutTrivia.end;
6252
- }
6253
- const newLine = this.detectNewLine(sourceFile.getSourceText());
6254
- const scriptBlocksText = addedBlockInfos.map((i) => this.createScriptBlockText(i, scriptBlockIndentation, newLine)).join(newLine);
6255
- const editText = `${newLine}${scriptBlocksText}`;
6256
- const result = new SourceFileEdit(sourceFile, Range.empty(editStart), editText);
6257
- return result;
6258
- }
6259
- canDeleteBlocks(outerScriptFunctionLocation, scriptFunctionLocations) {
6260
- const outerScriptPathText = outerScriptFunctionLocation.path.toString();
6261
- return scriptFunctionLocations.every((l) => l.sourceFile === outerScriptFunctionLocation.sourceFile && l.path.toString().startsWith(outerScriptPathText));
6262
- }
6263
- createEditDeletingBlock(sourceFile, scriptDeclaration) {
6264
- let result;
6265
- if (isRegularOrBlockFunctionLiteral(scriptDeclaration) && scriptDeclaration.parent.kind === 148 /* Argument */ && scriptDeclaration.parent.parent.parent.kind === 65 /* CallExpression */) {
6266
- const callExpression = scriptDeclaration.parent.parent.parent;
6267
- let rangeStart = callExpression.rangeWithoutTrivia.start;
6268
- let rangeEnd = callExpression.rangeWithoutTrivia.end;
6269
- const leadingTrivia = callExpression.findLeftmostToken()?.selectLeadingTrivia(() => true);
6270
- const lastLeadingTrivia = leadingTrivia !== void 0 && leadingTrivia.length > 0 ? leadingTrivia[leadingTrivia.length - 1] : void 0;
6271
- if (lastLeadingTrivia?.kind === 0 /* Whitespace */) {
6272
- rangeStart = lastLeadingTrivia.range.start;
6273
- }
6274
- const trailingTrivia = callExpression.findRightmostToken()?.selectTrailingTrivia(() => true);
6275
- if (trailingTrivia !== void 0) {
6276
- let trailingTriviaIndex = -1;
6277
- if (trailingTrivia.length > trailingTriviaIndex + 1 && trailingTrivia[trailingTriviaIndex + 1].kind === 0 /* Whitespace */) {
6278
- trailingTriviaIndex++;
6279
- }
6280
- if (trailingTrivia.length > trailingTriviaIndex + 1 && trailingTrivia[trailingTriviaIndex + 1].kind === 1 /* NewLine */) {
6281
- trailingTriviaIndex++;
6282
- }
6283
- if (trailingTriviaIndex >= 0) {
6284
- rangeEnd = trailingTrivia[trailingTriviaIndex].range.end;
6285
- }
6286
- }
6287
- result = new SourceFileEdit(sourceFile, new Range(rangeStart, rangeEnd), "");
6288
- }
6289
- return result;
6290
- }
6291
- findLastAssignmentToField(analyzer, block, fieldNameText) {
6292
- const fieldName = new Name(fieldNameText);
6293
- const statements = block.statementList.statements.toArray();
6294
- for (let i = statements.length - 1; i >= 0; i--) {
6295
- const statement = statements[i];
6296
- if (statement.kind === 90 /* AssignmentStatement */) {
6297
- const left = statement.left.unwrapParenthesizedExpressions();
6298
- if (left.kind === 73 /* MemberAccessExpression */) {
6299
- const memberAccessMeaning = analyzer.resolveMemberAccessExpression(left);
6300
- if (memberAccessMeaning.kind === "instance-field-access" && memberAccessMeaning.field.getName().considerEqual(fieldName)) {
6301
- const receiver = left.expression.unwrapParenthesizedExpressions();
6302
- if (receiver.kind === 86 /* IdentifierExpression */) {
6303
- const receiverMeaning = analyzer.resolveIdentifierExpression(receiver);
6304
- if (receiverMeaning.kind === "variable-access" && receiverMeaning.variable.getName().considerEqual(_ScriptEditingServiceA.elementParameterName)) {
6305
- return statement;
6306
- }
6307
- }
6308
- }
6309
- }
6310
- }
6311
- }
6312
- return void 0;
6313
- }
6314
- };
6315
-
6316
6220
  // source/services/common/selection-rage/Types.ts
6317
6221
  var SelectionRange = class {
6318
6222
  constructor(range, parent) {
@@ -9798,7 +9702,7 @@ var EntityToSyntax = class {
9798
9702
  const tags = this.convertTags(entity.getTags());
9799
9703
  const modifiers = this.convertPackageVariableModifiers(entity);
9800
9704
  let result;
9801
- if (isComputedVariableEntity(entity)) {
9705
+ if (isVariableEntityWithExplicitAccessors(entity)) {
9802
9706
  result = [];
9803
9707
  const getterEntity = entity.getGetter();
9804
9708
  if (getterEntity !== void 0) {
@@ -9806,7 +9710,7 @@ var EntityToSyntax = class {
9806
9710
  }
9807
9711
  const setterEntity = entity.getSetter();
9808
9712
  if (setterEntity !== void 0) {
9809
- result.push(SyntaxFactory.packageVariableSetterDeclaration(tags, modifiers, name, void 0));
9713
+ result.push(SyntaxFactory.packageVariableSetterDeclaration(tags, modifiers, name, type, void 0));
9810
9714
  }
9811
9715
  } else {
9812
9716
  result = SyntaxFactory.packageVariableDeclaration(tags, modifiers, name, type);
@@ -9967,9 +9871,9 @@ var EntityToSyntax = class {
9967
9871
  return sortModifiers(modifiers);
9968
9872
  }
9969
9873
  convertTypeEntityMembers(members) {
9970
- const variables = members.getNamedMembers(127 /* All */).filter((m) => m.kind === 0 /* Variable */).flatMap((m) => this.convertField(m));
9874
+ const variables = members.getNamedMembers(255 /* All */).filter((m) => m.kind === 0 /* Variable */).flatMap((m) => this.convertField(m));
9971
9875
  const groupedVariables = this.groupTypeMemberDeclarations(variables);
9972
- const ordinaryMethods = members.getNamedMembers(127 /* All */).filter((m) => TypeMemberEntity.isOrdinaryMethod(m)).map((m) => this.convertMethod(m));
9876
+ const ordinaryMethods = members.getNamedMembers(255 /* All */).filter((m) => TypeMemberEntity.isOrdinaryMethod(m)).map((m) => this.convertMethod(m));
9973
9877
  const groupedOrdinaryMethods = this.groupTypeMemberDeclarations(ordinaryMethods);
9974
9878
  const operators = members.getOperators().map((m) => this.convertMethod(m));
9975
9879
  const groupedOperators = this.groupTypeMemberDeclarations(operators);
@@ -9979,11 +9883,14 @@ var EntityToSyntax = class {
9979
9883
  const groupedDestructors = this.groupTypeMemberDeclarations(destructors);
9980
9884
  const indexers = members.getIndexers().flatMap((i) => this.convertIndexer(i));
9981
9885
  const groupedIndexers = this.groupTypeMemberDeclarations(indexers);
9886
+ const dereferenceOperators = members.getDereferenceOperators().flatMap((i) => this.convertDereferenceOperator(i));
9887
+ const groupedDereferenceOperators = this.groupTypeMemberDeclarations(dereferenceOperators);
9982
9888
  return groupedVariables.concat(
9983
9889
  groupedIndexers,
9984
9890
  groupedConstructors,
9985
9891
  groupedOrdinaryMethods,
9986
9892
  groupedOperators,
9893
+ groupedDereferenceOperators,
9987
9894
  groupedDestructors
9988
9895
  );
9989
9896
  }
@@ -9991,22 +9898,22 @@ var EntityToSyntax = class {
9991
9898
  if (entity.isVariant()) {
9992
9899
  return this.convertVariant(entity);
9993
9900
  }
9994
- const name = this.getEntityName(entity);
9995
- const type = this.convertType(entity.getType());
9996
- const tags = this.convertTags(entity.getTags());
9997
- const modifiers = this.convertFieldModifiers(entity);
9998
9901
  let result;
9999
- if (isComputedVariableEntity(entity)) {
9902
+ if (isVariableEntityWithExplicitAccessors(entity)) {
10000
9903
  result = [];
10001
9904
  const getterEntity = entity.getGetter();
10002
9905
  if (getterEntity !== void 0) {
10003
- result.push(SyntaxFactory.fieldGetterDeclaration(tags, modifiers, name, type, void 0));
9906
+ result.push(this.convertTypeMemberAccessor(getterEntity));
10004
9907
  }
10005
9908
  const setterEntity = entity.getSetter();
10006
9909
  if (setterEntity !== void 0) {
10007
- result.push(SyntaxFactory.fieldSetterDeclaration(tags, modifiers, name, void 0));
9910
+ result.push(this.convertTypeMemberAccessor(setterEntity));
10008
9911
  }
10009
9912
  } else {
9913
+ const name = this.getEntityName(entity);
9914
+ const type = this.convertType(entity.getType());
9915
+ const tags = this.convertTags(entity.getTags());
9916
+ const modifiers = this.convertFieldModifiers(entity);
10010
9917
  result = SyntaxFactory.fieldDeclaration(tags, modifiers, name, type);
10011
9918
  }
10012
9919
  return result;
@@ -10058,6 +9965,8 @@ var EntityToSyntax = class {
10058
9965
  const parameters = this.convertParameters(entity.getParameters());
10059
9966
  return SyntaxFactory.destructorDeclaration(tags, modifiers, parameters, void 0);
10060
9967
  }
9968
+ case 4 /* Accessor */:
9969
+ return this.convertTypeMemberAccessor(entity);
10061
9970
  default:
10062
9971
  Debug.never(entity.methodKind);
10063
9972
  }
@@ -10104,25 +10013,64 @@ var EntityToSyntax = class {
10104
10013
  }
10105
10014
  return sortModifiers(modifiers);
10106
10015
  }
10107
- convertIndexer(entity) {
10108
- const tags = this.convertTags(entity.getTags());
10109
- const modifiers = this.convertIndexerModifiers(entity);
10110
- const parameters = this.convertParameters(entity.getParameters());
10111
- const result = new Array();
10112
- const getterEntity = entity.getGetter();
10113
- if (getterEntity !== void 0) {
10114
- const type = this.convertType(entity.getType());
10115
- const declaration = SyntaxFactory.indexedElementGetterDeclaration(tags, modifiers, parameters, type, void 0);
10116
- result.push(declaration);
10016
+ convertTypeMemberAccessor(entity) {
10017
+ const accessorKind = entity.accessorKind;
10018
+ if (accessorKind === void 0) {
10019
+ return SyntaxFactory.missingTypeMemberDeclaration([], []);
10117
10020
  }
10118
- const setterEntity = entity.getSetter();
10119
- if (setterEntity !== void 0) {
10120
- const declaration = SyntaxFactory.indexedElementSetterDeclaration(tags, modifiers, parameters, void 0);
10121
- result.push(declaration);
10021
+ const tags = this.convertTags(entity.getTags());
10022
+ const modifiers = this.convertAccessorModifiers(entity);
10023
+ switch (accessorKind) {
10024
+ case 2 /* FieldGetter */: {
10025
+ const owningEntity = entity.getAccessorOwner();
10026
+ if (owningEntity?.kind !== 0 /* Variable */) {
10027
+ return SyntaxFactory.missingTypeMemberDeclaration([], []);
10028
+ }
10029
+ const name = this.getEntityName(owningEntity);
10030
+ const type = this.convertType(entity.getReturnType());
10031
+ return SyntaxFactory.fieldGetterDeclaration(tags, modifiers, name, type, void 0);
10032
+ }
10033
+ case 3 /* FieldSetter */: {
10034
+ const owningEntity = entity.getAccessorOwner();
10035
+ if (owningEntity?.kind !== 0 /* Variable */) {
10036
+ return SyntaxFactory.missingTypeMemberDeclaration([], []);
10037
+ }
10038
+ const type = this.convertType(owningEntity.getType());
10039
+ const name = this.getEntityName(owningEntity);
10040
+ return SyntaxFactory.fieldSetterDeclaration(tags, modifiers, name, type, void 0);
10041
+ }
10042
+ case 4 /* IndexedElementGetter */: {
10043
+ const parameters = this.convertParameters(entity.getParameters());
10044
+ const type = this.convertType(entity.getReturnType());
10045
+ return SyntaxFactory.indexedElementGetterDeclaration(tags, modifiers, parameters, type, void 0);
10046
+ }
10047
+ case 5 /* IndexedElementSetter */: {
10048
+ const owningEntity = entity.getAccessorOwner();
10049
+ if (owningEntity?.kind !== 3 /* Indexer */) {
10050
+ return SyntaxFactory.missingTypeMemberDeclaration([], []);
10051
+ }
10052
+ const parameterEntities = entity.getParameters();
10053
+ const parameters = this.convertParameters(parameterEntities.slice(0, parameterEntities.length - 1));
10054
+ const type = this.convertType(owningEntity.getType());
10055
+ return SyntaxFactory.indexedElementSetterDeclaration(tags, modifiers, parameters, type, void 0);
10056
+ }
10057
+ case 6 /* DereferencedVariableGetter */: {
10058
+ const type = this.convertType(entity.getReturnType());
10059
+ return SyntaxFactory.dereferencedVariableGetterDeclaration(tags, modifiers, type, void 0);
10060
+ }
10061
+ case 7 /* DereferencedVariableSetter */: {
10062
+ const owningEntity = entity.getAccessorOwner();
10063
+ if (owningEntity?.kind !== 4 /* DereferenceOperator */) {
10064
+ return SyntaxFactory.missingTypeMemberDeclaration([], []);
10065
+ }
10066
+ const type = this.convertType(owningEntity.getType());
10067
+ return SyntaxFactory.dereferencedVariableSetterDeclaration(tags, modifiers, type, void 0);
10068
+ }
10069
+ default:
10070
+ Debug.never(accessorKind);
10122
10071
  }
10123
- return result;
10124
10072
  }
10125
- convertIndexerModifiers(entity) {
10073
+ convertAccessorModifiers(entity) {
10126
10074
  const modifiers = new Array();
10127
10075
  const isHidden = entity.isHidden();
10128
10076
  if (isHidden !== void 0) {
@@ -10131,11 +10079,41 @@ var EntityToSyntax = class {
10131
10079
  if (entity.isStatic()) {
10132
10080
  modifiers.push(SyntaxFactory.modifier(45 /* Static */));
10133
10081
  }
10082
+ if (entity.markedBasic()) {
10083
+ modifiers.push(SyntaxFactory.modifier(21 /* Basic */));
10084
+ }
10134
10085
  if (entity.markedAbstract()) {
10135
10086
  modifiers.push(SyntaxFactory.modifier(42 /* Abstract */));
10136
10087
  }
10088
+ if (entity.isOverride()) {
10089
+ modifiers.push(SyntaxFactory.modifier(43 /* Override */));
10090
+ }
10137
10091
  return sortModifiers(modifiers);
10138
10092
  }
10093
+ convertIndexer(entity) {
10094
+ const result = new Array();
10095
+ const getterEntity = entity.getGetter();
10096
+ if (getterEntity !== void 0) {
10097
+ result.push(this.convertTypeMemberAccessor(getterEntity));
10098
+ }
10099
+ const setterEntity = entity.getSetter();
10100
+ if (setterEntity !== void 0) {
10101
+ result.push(this.convertTypeMemberAccessor(setterEntity));
10102
+ }
10103
+ return result;
10104
+ }
10105
+ convertDereferenceOperator(entity) {
10106
+ const result = new Array();
10107
+ const getterEntity = entity.getGetter();
10108
+ if (getterEntity !== void 0) {
10109
+ result.push(this.convertTypeMemberAccessor(getterEntity));
10110
+ }
10111
+ const setterEntity = entity.getSetter();
10112
+ if (setterEntity !== void 0) {
10113
+ result.push(this.convertTypeMemberAccessor(setterEntity));
10114
+ }
10115
+ return result;
10116
+ }
10139
10117
  convertVariant(entity) {
10140
10118
  const tags = this.convertTags(entity.getTags());
10141
10119
  const name = this.getEntityName(entity);
@@ -10616,19 +10594,16 @@ var SourceGenerationService = class extends RxObject7 {
10616
10594
  default:
10617
10595
  Debug.never(entity);
10618
10596
  }
10619
- case 3 /* Getter */:
10620
- case 4 /* Setter */:
10621
- return this.checkIfEntityOfKindIsPresentInGeneratedCode(entity.getOwningEntity());
10622
- case 5 /* Indexer */:
10623
- case 6 /* DereferenceOperator */:
10597
+ case 3 /* Indexer */:
10598
+ case 4 /* DereferenceOperator */:
10624
10599
  return this.checkIfEntityOfKindIsPresentInGeneratedCode(entity.getContainingEntity());
10625
- case 7 /* PackageAlias */:
10600
+ case 5 /* PackageAlias */:
10626
10601
  return false;
10627
- case 9 /* Package */:
10602
+ case 7 /* Package */:
10628
10603
  return false;
10629
- case 8 /* TypeExtension */:
10604
+ case 6 /* TypeExtension */:
10630
10605
  return true;
10631
- case 10 /* TextTranslation */:
10606
+ case 8 /* TextTranslation */:
10632
10607
  return true;
10633
10608
  default:
10634
10609
  Debug.never(entity);
@@ -10719,17 +10694,15 @@ var EntityFinder = class {
10719
10694
  default:
10720
10695
  Debug.never(entity);
10721
10696
  }
10722
- case 5 /* Indexer */:
10697
+ case 3 /* Indexer */:
10723
10698
  return this.findIndexerEntity(entity);
10724
- case 6 /* DereferenceOperator */:
10699
+ case 4 /* DereferenceOperator */:
10725
10700
  return this.findDereferenceOperatorEntity(entity);
10726
- case 7 /* PackageAlias */:
10727
- case 3 /* Getter */:
10728
- case 4 /* Setter */:
10729
- case 9 /* Package */:
10730
- case 8 /* TypeExtension */:
10701
+ case 5 /* PackageAlias */:
10702
+ case 7 /* Package */:
10703
+ case 6 /* TypeExtension */:
10731
10704
  return void 0;
10732
- case 10 /* TextTranslation */:
10705
+ case 8 /* TextTranslation */:
10733
10706
  return void 0;
10734
10707
  default:
10735
10708
  Debug.never(entity);
@@ -10741,7 +10714,7 @@ var EntityFinder = class {
10741
10714
  } else if (entity.subkind === "field") {
10742
10715
  const containingType = this.findEntity(entity.getContainingEntity());
10743
10716
  if (containingType !== void 0 && isTypeEntity(containingType) && isTypeEntityWithMembers(containingType)) {
10744
- return containingType.getMembers().getNamedMembersByName(entity.getName(), 127 /* All */)[0];
10717
+ return containingType.getMembers().getNamedMembersByName(entity.getName(), 255 /* All */)[0];
10745
10718
  }
10746
10719
  } else if (entity.subkind === "parameter") {
10747
10720
  const originalContainingEntity = entity.getContainingEntity();
@@ -10776,7 +10749,7 @@ var EntityFinder = class {
10776
10749
  if (!(containingType !== void 0 && isTypeEntity(containingType) && isTypeEntityWithMembers(containingType))) {
10777
10750
  return void 0;
10778
10751
  }
10779
- const members = containingType.getMembers().getNamedMembersByName(entity.getSpecialNameOrName(), 127 /* All */).filter((m) => m.kind === 1 /* Function */);
10752
+ const members = containingType.getMembers().getNamedMembersByName(entity.getSpecialNameOrName(), 255 /* All */).filter((m) => m.kind === 1 /* Function */);
10780
10753
  if (members.length === 0) {
10781
10754
  return void 0;
10782
10755
  } else if (members.length === 1) {
@@ -10845,7 +10818,7 @@ var EntityFinder = class {
10845
10818
  switch (entity.kind) {
10846
10819
  case 1 /* Function */:
10847
10820
  return entity.getParameters();
10848
- case 5 /* Indexer */:
10821
+ case 3 /* Indexer */:
10849
10822
  return entity.getParameters();
10850
10823
  case 2 /* Type */: {
10851
10824
  if (entity.typeEntityKind === 0 /* Function */) {
@@ -10854,14 +10827,12 @@ var EntityFinder = class {
10854
10827
  return void 0;
10855
10828
  }
10856
10829
  case 0 /* Variable */:
10857
- case 3 /* Getter */:
10858
- case 4 /* Setter */:
10859
- case 7 /* PackageAlias */:
10860
- case 9 /* Package */:
10861
- case 8 /* TypeExtension */:
10862
- case 6 /* DereferenceOperator */:
10830
+ case 5 /* PackageAlias */:
10831
+ case 7 /* Package */:
10832
+ case 6 /* TypeExtension */:
10833
+ case 4 /* DereferenceOperator */:
10863
10834
  return void 0;
10864
- case 10 /* TextTranslation */:
10835
+ case 8 /* TextTranslation */:
10865
10836
  return void 0;
10866
10837
  default:
10867
10838
  Debug.never(entity);
@@ -10877,15 +10848,13 @@ var EntityFinder = class {
10877
10848
  }
10878
10849
  return void 0;
10879
10850
  }
10880
- case 5 /* Indexer */:
10881
- case 6 /* DereferenceOperator */:
10851
+ case 3 /* Indexer */:
10852
+ case 4 /* DereferenceOperator */:
10882
10853
  case 0 /* Variable */:
10883
- case 3 /* Getter */:
10884
- case 4 /* Setter */:
10885
- case 7 /* PackageAlias */:
10886
- case 9 /* Package */:
10887
- case 8 /* TypeExtension */:
10888
- case 10 /* TextTranslation */:
10854
+ case 5 /* PackageAlias */:
10855
+ case 7 /* Package */:
10856
+ case 6 /* TypeExtension */:
10857
+ case 8 /* TextTranslation */:
10889
10858
  return void 0;
10890
10859
  default:
10891
10860
  Debug.never(entity);
@@ -10965,7 +10934,6 @@ var _LanguageServer = class _LanguageServer {
10965
10934
  this.signatureHelpServiceA = new SignatureHelpServiceA();
10966
10935
  this.fileSystemTreeDisplayService = new FileSystemTreeDisplayService();
10967
10936
  this.selectionRangeServiceA = new SelectionRangeServiceA();
10968
- this.scriptEditingServiceA = new ScriptEditingServiceA();
10969
10937
  this.codeActionsServiceA = new CodeActionsServiceA();
10970
10938
  this.connection = config.connection;
10971
10939
  this.config = config;
@@ -10984,6 +10952,22 @@ var _LanguageServer = class _LanguageServer {
10984
10952
  static {
10985
10953
  this.DefaultCancellationTokenThrottleTime = 50;
10986
10954
  }
10955
+ registerMessageHandler(handler) {
10956
+ switch (handler.kind) {
10957
+ case "request": {
10958
+ const disposable = this.connection.onRequest(handler.requestType, (params, token) => this.withTaskController(token, (taskController) => handler.onRequest(params, this.getOrCreateMessageHandlerContext(), taskController)));
10959
+ this.disposables.push(disposable);
10960
+ break;
10961
+ }
10962
+ case "notification": {
10963
+ const disposable = this.connection.onNotification(handler.notificationType, (params) => this.withTaskController(void 0, (taskController) => handler.onNotification(params, this.getOrCreateMessageHandlerContext(), taskController)));
10964
+ this.disposables.push(disposable);
10965
+ break;
10966
+ }
10967
+ default:
10968
+ Debug.never(handler);
10969
+ }
10970
+ }
10987
10971
  start() {
10988
10972
  let disposable;
10989
10973
  disposable = this.connection.onInitialize((params) => this.onInitialize(params));
@@ -11060,16 +11044,6 @@ var _LanguageServer = class _LanguageServer {
11060
11044
  (params) => this.onDeleteSourceFile(params)
11061
11045
  );
11062
11046
  this.disposables.push(disposable);
11063
- disposable = this.connection.onRequest(customRequests.getNodeRange, (params, token) => this.withTaskController(token, (taskController) => this.onGetNodeRange(params, taskController)));
11064
- this.disposables.push(disposable);
11065
- disposable = this.connection.onRequest(customRequests.assignField, (params, token) => this.withTaskController(token, (taskController) => this.onAssignField(params, taskController)));
11066
- this.disposables.push(disposable);
11067
- disposable = this.connection.onRequest(customRequests.addBlocksToScript, (params, token) => this.withTaskController(token, (taskController) => this.onAddBlocksToScript(params, taskController)));
11068
- this.disposables.push(disposable);
11069
- disposable = this.connection.onRequest(customRequests.canDeleteBlocksFromScript, (params, token) => this.withTaskController(token, (taskController) => this.onCanDeleteBlocksFromScript(params, taskController)));
11070
- this.disposables.push(disposable);
11071
- disposable = this.connection.onRequest(customRequests.deleteBlocksFromScript, (params, token) => this.withTaskController(token, (taskController) => this.onDeleteBlocksFromScript(params, taskController)));
11072
- this.disposables.push(disposable);
11073
11047
  this.connection.listen();
11074
11048
  }
11075
11049
  dispose() {
@@ -11714,143 +11688,6 @@ var _LanguageServer = class _LanguageServer {
11714
11688
  const code = diagnostic.data.code;
11715
11689
  return { message, range, severity, tags, code };
11716
11690
  }
11717
- onAssignField(params, taskController) {
11718
- return __async(this, null, function* () {
11719
- const scriptFunctionUri = URI.parse(params.scriptFunctionUri);
11720
- const sourceFileContext = yield this.getSourceFileContext(scriptFunctionUri, taskController);
11721
- if (sourceFileContext !== void 0) {
11722
- const { analyzer, sourceFile } = sourceFileContext;
11723
- let sourceFileEdit;
11724
- switch (sourceFile.dialect) {
11725
- case 0 /* ArtelA */: {
11726
- const scriptDeclaration = NodePath.parse(scriptFunctionUri.fragment).getNode(sourceFile.getSyntaxNode());
11727
- if (scriptDeclaration !== void 0 && isSubprogramDeclarationOrLiteral(scriptDeclaration)) {
11728
- sourceFileEdit = this.scriptEditingServiceA.createEditWithFieldAssignment(
11729
- analyzer.dialectA,
11730
- sourceFile,
11731
- scriptDeclaration,
11732
- params.fieldName,
11733
- params.value
11734
- );
11735
- }
11736
- break;
11737
- }
11738
- case 1 /* ArtelM */:
11739
- break;
11740
- default:
11741
- Debug.never(sourceFile);
11742
- }
11743
- if (sourceFileEdit !== void 0) {
11744
- const textDocumentEdit = this.convertSourceFileEdit(sourceFileEdit);
11745
- const workspaceEdit = { documentChanges: [textDocumentEdit] };
11746
- yield this.connection.workspace.applyEdit(workspaceEdit);
11747
- }
11748
- }
11749
- });
11750
- }
11751
- onAddBlocksToScript(params, taskController) {
11752
- return __async(this, null, function* () {
11753
- const sourceFileEdits = new Array();
11754
- const convertAddedScriptBlock = (block) => {
11755
- return {
11756
- name: block.name,
11757
- key: block.key,
11758
- areaIndex: block.areaIndex,
11759
- elementProperties: block.elementProperties ?? {},
11760
- nestedBlocks: block.nestedBlocks?.map(convertAddedScriptBlock) ?? []
11761
- };
11762
- };
11763
- for (const scriptBlockAddedToOuterScript of params) {
11764
- const scriptFunctionUri = URI.parse(scriptBlockAddedToOuterScript.outerScriptFunctionUri);
11765
- const sourceFileContext = yield this.getSourceFileContext(scriptFunctionUri, taskController);
11766
- if (sourceFileContext !== void 0) {
11767
- const { sourceFile } = sourceFileContext;
11768
- let sourceFileEdit;
11769
- switch (sourceFile.dialect) {
11770
- case 0 /* ArtelA */: {
11771
- const scriptDeclaration = NodePath.parse(scriptFunctionUri.fragment).getNode(sourceFile.getSyntaxNode());
11772
- if (scriptDeclaration !== void 0 && isSubprogramDeclarationOrLiteral(scriptDeclaration)) {
11773
- const addedBlockInfos = scriptBlockAddedToOuterScript.values.map(convertAddedScriptBlock);
11774
- sourceFileEdit = this.scriptEditingServiceA.createEditAddingBlocks(
11775
- sourceFile,
11776
- scriptDeclaration,
11777
- addedBlockInfos
11778
- );
11779
- }
11780
- break;
11781
- }
11782
- case 1 /* ArtelM */:
11783
- break;
11784
- default:
11785
- Debug.never(sourceFile);
11786
- }
11787
- if (sourceFileEdit !== void 0) {
11788
- sourceFileEdits.push(sourceFileEdit);
11789
- }
11790
- }
11791
- }
11792
- if (sourceFileEdits.length > 0) {
11793
- const workspaceEdit = this.convertSourceFileEditsToWorkspaceEdit(sourceFileEdits);
11794
- yield this.connection.workspace.applyEdit(workspaceEdit);
11795
- }
11796
- });
11797
- }
11798
- onCanDeleteBlocksFromScript(params, taskController) {
11799
- return __async(this, null, function* () {
11800
- let result = false;
11801
- const outerScriptFunctionUri = URI.parse(params.outerScriptFunctionUri);
11802
- const sourceFileContext = yield this.getSourceFileContext(outerScriptFunctionUri, taskController);
11803
- if (sourceFileContext !== void 0) {
11804
- const outerScriptFunctionLocation = new NodeLocation(
11805
- sourceFileContext.sourceFile,
11806
- NodePath.parse(outerScriptFunctionUri.fragment)
11807
- );
11808
- const scriptFunctionLocations = Query.from(params.scriptFunctionUris).map((u) => {
11809
- const parsedVscodeUri = URI.parse(u);
11810
- const uri = this.convertVscodeUriToUri(parsedVscodeUri);
11811
- const sourceFile = sourceFileContext.analyzer.compilation.getSourceFileByUri(uri);
11812
- return sourceFile !== void 0 ? new NodeLocation(sourceFile, NodePath.parse(parsedVscodeUri.fragment)) : void 0;
11813
- }).toNullable();
11814
- if (scriptFunctionLocations !== void 0) {
11815
- result = this.scriptEditingServiceA.canDeleteBlocks(outerScriptFunctionLocation, scriptFunctionLocations);
11816
- }
11817
- }
11818
- return result;
11819
- });
11820
- }
11821
- onDeleteBlocksFromScript(params, taskController) {
11822
- return __async(this, null, function* () {
11823
- const sourceFileEdits = new Array();
11824
- for (const scriptFunctionUri of params.scriptFunctionUris) {
11825
- const parsedScriptFunctionUri = URI.parse(scriptFunctionUri);
11826
- const sourceFileContext = yield this.getSourceFileContext(parsedScriptFunctionUri, taskController);
11827
- if (sourceFileContext !== void 0) {
11828
- const { sourceFile } = sourceFileContext;
11829
- let sourceFileEdit;
11830
- switch (sourceFile.dialect) {
11831
- case 0 /* ArtelA */: {
11832
- const scriptDeclaration = NodePath.parse(parsedScriptFunctionUri.fragment).getNode(sourceFile.getSyntaxNode());
11833
- if (scriptDeclaration !== void 0 && isSubprogramDeclarationOrLiteral(scriptDeclaration)) {
11834
- sourceFileEdit = this.scriptEditingServiceA.createEditDeletingBlock(sourceFile, scriptDeclaration);
11835
- }
11836
- break;
11837
- }
11838
- case 1 /* ArtelM */:
11839
- break;
11840
- default:
11841
- Debug.never(sourceFile);
11842
- }
11843
- if (sourceFileEdit !== void 0) {
11844
- sourceFileEdits.push(sourceFileEdit);
11845
- }
11846
- }
11847
- }
11848
- if (sourceFileEdits.length > 0) {
11849
- const workspaceEdit = this.convertSourceFileEditsToWorkspaceEdit(sourceFileEdits);
11850
- yield this.connection.workspace.applyEdit(workspaceEdit);
11851
- }
11852
- });
11853
- }
11854
11691
  convertSourceFileEdit(edit) {
11855
11692
  const range = this.convertSourceFileRange(edit.sourceFile, edit.range);
11856
11693
  const textDocument = ls3.OptionalVersionedTextDocumentIdentifier.create(
@@ -11863,24 +11700,6 @@ var _LanguageServer = class _LanguageServer {
11863
11700
  const convertedEdits = edits.map((e) => this.convertSourceFileEdit(e));
11864
11701
  return { documentChanges: convertedEdits };
11865
11702
  }
11866
- onGetNodeRange(params, taskController) {
11867
- return __async(this, null, function* () {
11868
- const uri = URI.parse(params.uri);
11869
- const sourceFileContext = yield this.getSourceFileContext(uri, taskController);
11870
- let result;
11871
- if (sourceFileContext !== void 0) {
11872
- const node = NodePath.parse(uri.fragment).getNode(sourceFileContext.sourceFile.getSyntaxNode());
11873
- if (node !== void 0) {
11874
- let nodeForRange = node;
11875
- if (node.kind === 90 /* AssignmentStatement */) {
11876
- nodeForRange = node.right;
11877
- }
11878
- result = this.convertSourceFileRange(sourceFileContext.sourceFile, nodeForRange.rangeWithoutTrivia);
11879
- }
11880
- }
11881
- return result;
11882
- });
11883
- }
11884
11703
  onCreateOrUpdateSourceFile(params) {
11885
11704
  return __async(this, null, function* () {
11886
11705
  const uri = this.convertVscodeUriToUri(URI.parse(params.uri));
@@ -12471,6 +12290,21 @@ ${e}`);
12471
12290
  convertVscodeUriToUri(uri) {
12472
12291
  return Uri.from(uri.scheme, uri.authority, uri.path);
12473
12292
  }
12293
+ getOrCreateMessageHandlerContext() {
12294
+ if (this.messageHandlerContext === void 0) {
12295
+ this.messageHandlerContext = {
12296
+ connection: this.connection,
12297
+ workspace: this.workspace,
12298
+ convertSourceFileEdit: this.convertSourceFileEdit.bind(this),
12299
+ convertSourceFileEditsToWorkspaceEdit: this.convertSourceFileEditsToWorkspaceEdit.bind(this),
12300
+ convertSourceFileRange: this.convertSourceFileRange.bind(this),
12301
+ convertUriToVscodeUri: this.convertUriToVscodeUri.bind(this),
12302
+ convertVscodeUriToUri: this.convertVscodeUriToUri.bind(this),
12303
+ getSourceFileContext: this.getSourceFileContext.bind(this)
12304
+ };
12305
+ }
12306
+ return this.messageHandlerContext;
12307
+ }
12474
12308
  createCancellationToken(cancellationToken) {
12475
12309
  if (!this.enableRequestCancellation) {
12476
12310
  return new StubCancellationToken();
@@ -12479,9 +12313,10 @@ ${e}`);
12479
12313
  }
12480
12314
  withTaskController(token, handler) {
12481
12315
  return __async(this, null, function* () {
12316
+ const cancellationToken = token !== void 0 ? this.createCancellationToken(token) : void 0;
12482
12317
  const taskController = new TaskController(
12483
12318
  _LanguageServer.DefaultCancellationTokenThrottleTime,
12484
- this.createCancellationToken(token)
12319
+ cancellationToken
12485
12320
  );
12486
12321
  try {
12487
12322
  return yield handler(taskController);
@@ -12546,5 +12381,16 @@ export {
12546
12381
  ClientCancellationToken,
12547
12382
  FileSystemSynchronizationMode,
12548
12383
  LanguageServer,
12549
- customRequests
12384
+ NodeLocation,
12385
+ Range,
12386
+ SourceFileContext,
12387
+ SourceFileEdit,
12388
+ SourceLocation,
12389
+ TaskController,
12390
+ Uri,
12391
+ UrisRelativityKind,
12392
+ Workspace,
12393
+ customRequests,
12394
+ isCodeActionData,
12395
+ isCompletionItemData
12550
12396
  };