@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.
- package/build/Cli.js +3 -3
- package/build/api/Api.js +56 -30
- package/build/api/ApiNodeJS.js +3 -3
- package/build/api/ApiServices.js +342 -496
- package/build/{chunk-CIRH34IO.js → chunk-4HXQNBLV.js} +30 -7
- package/build/{chunk-7QPDALAB.js → chunk-HOPCXROF.js} +2 -2
- package/build/{chunk-OTHSFQXT.js → chunk-IJGHVDYP.js} +11911 -9322
- package/build/types/analysis/AccessedFunction.d.ts +3 -0
- package/build/types/analysis/AccessibilityCheck.d.ts +3 -4
- package/build/types/analysis/Analyzer.d.ts +24 -15
- package/build/types/analysis/BaseMemberConflictsValidator.d.ts +1 -1
- package/build/types/analysis/ComputedAccess.d.ts +13 -0
- package/build/types/analysis/OverrideChecker.d.ts +17 -0
- package/build/types/analysis/SpecialNameKey.d.ts +4 -0
- package/build/types/analysis/TypeMemberImplementationChecker.d.ts +7 -1
- package/build/types/analysis/a/Analyzer.d.ts +24 -25
- package/build/types/analysis/a/DereferenceExpressionMeaning.d.ts +6 -4
- package/build/types/analysis/a/FindModifier.d.ts +1 -0
- package/build/types/analysis/a/IdentifierExpressionMeaning.d.ts +16 -7
- package/build/types/analysis/a/IndexedAccessExpressionMeaning.d.ts +7 -5
- package/build/types/analysis/a/MemberAccessExpressionMeaning.d.ts +14 -9
- package/build/types/analysis/a/ModifierValidator.d.ts +3 -10
- package/build/types/analysis/a/ReservedNameDictionary.d.ts +7 -1
- package/build/types/analysis/a/SourceFileAnalyzer.d.ts +1 -1
- package/build/types/analysis/a/semantic-context/Declarations.d.ts +3 -3
- package/build/types/analysis/a/semantic-context/SemanticContextBase.d.ts +4 -4
- package/build/types/analysis/a/semantic-context/SpecialLocalDeclarationsBuilder.d.ts +2 -2
- package/build/types/analysis/a/semantic-context/SubprogramBodyAndParametersSemanticContext.d.ts +0 -4
- package/build/types/api/Api.d.ts +5 -1
- package/build/types/api/ApiServices.d.ts +5 -0
- package/build/types/common/ArrayUtils.d.ts +1 -0
- package/build/types/diagnostic/DiagnosticCode.d.ts +65 -53
- package/build/types/diagnostic/DiagnosticFormatter.d.ts +3 -2
- package/build/types/emitter/EmitPhaseName.d.ts +3 -2
- package/build/types/emitter/Entities.d.ts +2 -0
- package/build/types/emitter/EntityMap.d.ts +0 -4
- package/build/types/emitter/IrBuilderA.d.ts +3 -3
- package/build/types/emitter/IrFactory.d.ts +11 -10
- package/build/types/emitter/IrToJs.d.ts +0 -1
- package/build/types/emitter/Transformer.d.ts +2 -3
- package/build/types/emitter/ir/EmitOptions.d.ts +4 -40
- package/build/types/emitter/ir/Nodes.d.ts +16 -34
- package/build/types/emitter/ir/VariableAccess.d.ts +18 -0
- package/build/types/emitter/ir/index.d.ts +1 -0
- package/build/types/emitter/ir/types.d.ts +2 -2
- package/build/types/entities/AccessorEntity.d.ts +8 -0
- package/build/types/entities/ComputedEntity.d.ts +12 -0
- package/build/types/entities/Entity.d.ts +1 -6
- package/build/types/entities/EntityKind.d.ts +6 -8
- package/build/types/entities/EntityLocalizationContext.d.ts +2 -5
- package/build/types/entities/TypeEntity.d.ts +6 -1
- package/build/types/entities/TypeEntityMembers.d.ts +5 -0
- package/build/types/entities/TypeMemberEntity.d.ts +12 -5
- package/build/types/entities/TypeMemberKindFlags.d.ts +4 -3
- package/build/types/entities/index.d.ts +2 -0
- package/build/types/entities/interfaces/{ConstructorEntity.d.ts → BaseConstructorEntity.d.ts} +5 -5
- package/build/types/entities/interfaces/{DestructorEntity.d.ts → BaseDestructorEntity.d.ts} +6 -6
- package/build/types/entities/interfaces/BaseOperatorEntity.d.ts +15 -0
- package/build/types/entities/interfaces/{OrdinaryMethodEntity.d.ts → BaseOrdinaryMethodEntity.d.ts} +6 -3
- package/build/types/entities/interfaces/BaseOrdinaryPackageFunctionEntity.d.ts +36 -0
- package/build/types/entities/interfaces/BasePackageMemberAccessorEntity.d.ts +36 -0
- package/build/types/entities/interfaces/BaseTypeMemberAccessorEntity.d.ts +19 -0
- package/build/types/entities/interfaces/DereferenceOperatorEntity.d.ts +34 -6
- package/build/types/entities/interfaces/FieldEntityWithImplicitAccessors.d.ts +15 -0
- package/build/types/entities/interfaces/FunctionEntity.d.ts +75 -8
- package/build/types/entities/interfaces/IndexerEntity.d.ts +35 -6
- package/build/types/entities/interfaces/VariableEntity.d.ts +45 -12
- package/build/types/entities/interfaces/a/ConstructorEntityA.d.ts +2 -3
- package/build/types/entities/interfaces/a/DestructorEntityA.d.ts +2 -4
- package/build/types/entities/interfaces/index.d.ts +8 -6
- package/build/types/entities/intrinsic/IntrinsicConstructorEntity.d.ts +3 -1
- package/build/types/entities/intrinsic/IntrinsicFunctionEntity.d.ts +7 -14
- package/build/types/entities/intrinsic/IntrinsicTypeMemberAccessorEntity.d.ts +11 -0
- package/build/types/entities/intrinsic/IntrinsicVariableEntity.d.ts +20 -16
- package/build/types/entities/intrinsic/index.d.ts +1 -2
- package/build/types/entities/source/a/SourceConstructorEntity.d.ts +2 -1
- package/build/types/entities/source/a/SourceDereferenceOperatorEntity.d.ts +6 -9
- package/build/types/entities/source/a/SourceDestructorEntity.d.ts +2 -1
- package/build/types/entities/source/a/SourceFunctionEntity.d.ts +9 -17
- package/build/types/entities/source/a/SourceGetterEntity.d.ts +62 -24
- package/build/types/entities/source/a/SourceIndexerEntity.d.ts +6 -9
- package/build/types/entities/source/a/SourceSetterEntity.d.ts +68 -25
- package/build/types/entities/source/a/SourceVariableEntity.d.ts +35 -42
- package/build/types/entities/translated/TranslatedDereferenceOperatorEntity.d.ts +12 -6
- package/build/types/entities/translated/TranslatedFunctionEntity.d.ts +27 -2
- package/build/types/entities/translated/TranslatedIndexerEntity.d.ts +14 -6
- package/build/types/entities/translated/TranslatedPackageMemberAccessorEntity.d.ts +38 -0
- package/build/types/entities/translated/TranslatedParameterEntity.d.ts +34 -0
- package/build/types/entities/translated/TranslatedTypeMemberAccessorEntity.d.ts +45 -0
- package/build/types/entities/translated/TranslatedVariableEntity.d.ts +19 -39
- package/build/types/entities/translated/index.d.ts +3 -2
- package/build/types/entities/translated/source/a/SourceTranslatedIndexerEntity.d.ts +2 -1
- package/build/types/executor/NodeCompiler.d.ts +1 -1
- package/build/types/services/CustomRequests.d.ts +0 -55
- package/build/types/services/LanguageServer.d.ts +13 -7
- package/build/types/services/LanguageServerMessageHandler.d.ts +30 -0
- package/build/types/services/a/DisplayService.d.ts +1 -3
- package/build/types/services/a/NodeSemanticInfo.d.ts +1 -1
- package/build/types/services/a/references/DefinitionInfoFinder.d.ts +1 -1
- package/build/types/services/common/display/BaseDisplayService.d.ts +0 -2
- package/build/types/services/common/display/DisplayService.d.ts +1 -3
- package/build/types/services/common/display/Types.d.ts +16 -7
- package/build/types/services/common/references/ReferencesSearchUtils.d.ts +1 -1
- package/build/types/services/common/references/ReferencesService.d.ts +1 -0
- package/build/types/services/common/source-generation/EntityToSyntax.d.ts +3 -1
- package/build/types/tree/a/Nodes.d.ts +12 -4
- package/build/types/tree/a/SyntaxFactory.d.ts +4 -4
- package/build/types/ts-interop/Entities.d.ts +65 -46
- package/build/types/types/ComputedTypeMember.d.ts +3 -0
- package/build/types/types/StructuredType.d.ts +2 -1
- package/build/types/types/TypeMembers.d.ts +31 -8
- package/build/types/types/collections/TypeDictionary.d.ts +32 -0
- package/build/types/types/collections/TypeMemberDictionary.d.ts +27 -0
- package/build/types/types/collections/TypeMemberSet.d.ts +24 -0
- package/build/types/types/collections/TypeSet.d.ts +29 -0
- package/build/types/types/index.d.ts +5 -0
- package/package.json +4 -3
- package/build/types/analysis/OverridableTypeMember.d.ts +0 -6
- package/build/types/entities/interfaces/GetterEntity.d.ts +0 -21
- package/build/types/entities/interfaces/OperatorEntity.d.ts +0 -12
- package/build/types/entities/interfaces/SetterEntity.d.ts +0 -19
- package/build/types/entities/intrinsic/IntrinsicGetterEntity.d.ts +0 -24
- package/build/types/entities/intrinsic/IntrinsicSetterEntity.d.ts +0 -21
- package/build/types/entities/translated/TranslatedGetterEntity.d.ts +0 -24
- package/build/types/entities/translated/TranslatedSetterEntity.d.ts +0 -21
- package/build/types/services/a/ScriptEditingService.d.ts +0 -13
package/build/api/ApiServices.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AccessedFunction_entity,
|
|
3
3
|
AccessedFunction_typeMember,
|
|
4
|
-
|
|
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-
|
|
110
|
+
} from "../chunk-IJGHVDYP.js";
|
|
113
111
|
|
|
114
|
-
// source/services/
|
|
112
|
+
// source/services/common/Types.ts
|
|
115
113
|
import * as ls from "vscode-languageserver";
|
|
116
|
-
var
|
|
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
|
|
570
|
-
case
|
|
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
|
|
597
|
+
case 3 /* Indexer */:
|
|
605
598
|
return this.createIndexerTranslation(entity);
|
|
606
|
-
case
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
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
|
|
4619
|
+
static getBetterReferenceTargets(original) {
|
|
4626
4620
|
let result;
|
|
4627
|
-
let
|
|
4628
|
-
let
|
|
4621
|
+
let currentTargets = [original];
|
|
4622
|
+
let betterTargets;
|
|
4623
|
+
let foundBetterTarget;
|
|
4629
4624
|
do {
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
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
|
-
|
|
4644
|
-
|
|
4645
|
-
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
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 (
|
|
4654
|
-
result =
|
|
4655
|
-
|
|
4681
|
+
if (foundBetterTarget) {
|
|
4682
|
+
result = betterTargets;
|
|
4683
|
+
currentTargets = betterTargets;
|
|
4656
4684
|
}
|
|
4657
|
-
} while (
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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
|
-
|
|
5389
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 =
|
|
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 ===
|
|
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 ===
|
|
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
|
|
6068
|
+
case 5 /* PackageAlias */:
|
|
6014
6069
|
return { name: entity.getName() };
|
|
6015
|
-
case 3 /*
|
|
6016
|
-
case 4 /*
|
|
6017
|
-
case
|
|
6018
|
-
case 6 /*
|
|
6019
|
-
case
|
|
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 (
|
|
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(
|
|
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(
|
|
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 (
|
|
9902
|
+
if (isVariableEntityWithExplicitAccessors(entity)) {
|
|
10000
9903
|
result = [];
|
|
10001
9904
|
const getterEntity = entity.getGetter();
|
|
10002
9905
|
if (getterEntity !== void 0) {
|
|
10003
|
-
result.push(
|
|
9906
|
+
result.push(this.convertTypeMemberAccessor(getterEntity));
|
|
10004
9907
|
}
|
|
10005
9908
|
const setterEntity = entity.getSetter();
|
|
10006
9909
|
if (setterEntity !== void 0) {
|
|
10007
|
-
result.push(
|
|
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
|
-
|
|
10108
|
-
const
|
|
10109
|
-
|
|
10110
|
-
|
|
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
|
|
10119
|
-
|
|
10120
|
-
|
|
10121
|
-
|
|
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
|
-
|
|
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 /*
|
|
10620
|
-
case 4 /*
|
|
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
|
|
10600
|
+
case 5 /* PackageAlias */:
|
|
10626
10601
|
return false;
|
|
10627
|
-
case
|
|
10602
|
+
case 7 /* Package */:
|
|
10628
10603
|
return false;
|
|
10629
|
-
case
|
|
10604
|
+
case 6 /* TypeExtension */:
|
|
10630
10605
|
return true;
|
|
10631
|
-
case
|
|
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
|
|
10697
|
+
case 3 /* Indexer */:
|
|
10723
10698
|
return this.findIndexerEntity(entity);
|
|
10724
|
-
case
|
|
10699
|
+
case 4 /* DereferenceOperator */:
|
|
10725
10700
|
return this.findDereferenceOperatorEntity(entity);
|
|
10726
|
-
case
|
|
10727
|
-
case
|
|
10728
|
-
case
|
|
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
|
|
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(),
|
|
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(),
|
|
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
|
|
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
|
|
10858
|
-
case
|
|
10859
|
-
case
|
|
10860
|
-
case
|
|
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
|
|
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
|
|
10881
|
-
case
|
|
10851
|
+
case 3 /* Indexer */:
|
|
10852
|
+
case 4 /* DereferenceOperator */:
|
|
10882
10853
|
case 0 /* Variable */:
|
|
10883
|
-
case
|
|
10884
|
-
case
|
|
10885
|
-
case
|
|
10886
|
-
case
|
|
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
|
-
|
|
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
|
-
|
|
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
|
};
|