@artel/artc 0.6.26015 → 0.6.26017

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 (79) hide show
  1. package/build/Cli.js +3 -3
  2. package/build/api/Api.js +5 -7
  3. package/build/api/ApiNodeJS.js +3 -3
  4. package/build/api/ApiServices.js +190 -290
  5. package/build/{chunk-XUXWFZTI.js → chunk-65XBWCU7.js} +2 -2
  6. package/build/{chunk-Y3SDLINT.js → chunk-SJFIPH42.js} +3202 -4216
  7. package/build/{chunk-LUMKCD5K.js → chunk-UCBPXOLW.js} +1 -1
  8. package/build/types/analysis/AnalyzedTranslationPackage.d.ts +0 -1
  9. package/build/types/analysis/Analyzer.d.ts +8 -29
  10. package/build/types/analysis/BaseExpressionMeaning.d.ts +2 -14
  11. package/build/types/analysis/CallExpressionMeaning.d.ts +1 -11
  12. package/build/types/analysis/IdentifierExpressionMeaning.d.ts +9 -21
  13. package/build/types/analysis/MemberAccessExpressionMeaning.d.ts +2 -17
  14. package/build/types/analysis/ObjectExpressionMeaning.d.ts +7 -1
  15. package/build/types/analysis/ReductionSourceMemberFinder.d.ts +0 -1
  16. package/build/types/analysis/ResolvedImplementationPackage.d.ts +1 -3
  17. package/build/types/analysis/SourceFileAnalyzer.d.ts +4 -1
  18. package/build/types/analysis/SpecialNameKey.d.ts +32 -0
  19. package/build/types/analysis/TypeMemberConflictsValidator.d.ts +0 -1
  20. package/build/types/analysis/TypeMemberLookup.d.ts +1 -5
  21. package/build/types/analysis/UserDefinableBinaryOperatorResolver.d.ts +1 -1
  22. package/build/types/analysis/UserDefinableUnaryOperatorResolver.d.ts +2 -2
  23. package/build/types/analysis/semantic-context/FieldWithInitializerSemanticContext.d.ts +3 -2
  24. package/build/types/analysis/semantic-context/SemanticContextBase.d.ts +36 -21
  25. package/build/types/analysis/semantic-context/SemanticContextBuilder.d.ts +1 -5
  26. package/build/types/analysis/semantic-context/SemanticContextValidatingNameConflicts.d.ts +3 -2
  27. package/build/types/analysis/semantic-context/SemanticContextWithParent.d.ts +2 -1
  28. package/build/types/analysis/semantic-context/SourceFileSemanticContext.d.ts +4 -3
  29. package/build/types/analysis/semantic-context/SpecialLocalDeclarationsBuilder.d.ts +0 -1
  30. package/build/types/analysis/semantic-context/SubprogramSemanticContext.d.ts +32 -22
  31. package/build/types/analysis/semantic-context/TypeSemanticContext.d.ts +9 -11
  32. package/build/types/common/Name.d.ts +3 -2
  33. package/build/types/diagnostic/DiagnosticCode.d.ts +110 -107
  34. package/build/types/emitter/Entities.d.ts +2 -0
  35. package/build/types/emitter/EntityMap.d.ts +0 -1
  36. package/build/types/emitter/IrBuilder.d.ts +1 -2
  37. package/build/types/emitter/IrFactory.d.ts +5 -4
  38. package/build/types/emitter/IrToJs.d.ts +1 -0
  39. package/build/types/emitter/Transformer.d.ts +2 -0
  40. package/build/types/emitter/ir/EmitOptions.d.ts +6 -2
  41. package/build/types/emitter/ir/Nodes.d.ts +110 -90
  42. package/build/types/emitter/ir/types.d.ts +2 -2
  43. package/build/types/entities/Entity.d.ts +4 -4
  44. package/build/types/entities/EntityLocalizationContext.d.ts +2 -3
  45. package/build/types/entities/OperatorKind.d.ts +20 -20
  46. package/build/types/entities/TypeEntityMembers.d.ts +2 -10
  47. package/build/types/entities/interfaces/FunctionEntity.d.ts +2 -1
  48. package/build/types/entities/interfaces/VariableEntity.d.ts +3 -2
  49. package/build/types/entities/interfaces/index.d.ts +0 -1
  50. package/build/types/entities/intrinsic/IntrinsicFunctionEntity.d.ts +4 -2
  51. package/build/types/entities/intrinsic/IntrinsicStructuredTypeEntity.d.ts +3 -3
  52. package/build/types/entities/intrinsic/IntrinsicVariableEntity.d.ts +3 -1
  53. package/build/types/entities/source/SourceFunctionEntity.d.ts +4 -1
  54. package/build/types/entities/source/SourceVariableEntity.d.ts +4 -0
  55. package/build/types/entities/source/index.d.ts +0 -1
  56. package/build/types/entities/translated/TranslatedFunctionEntity.d.ts +2 -1
  57. package/build/types/entities/translated/TranslatedVariableEntity.d.ts +1 -0
  58. package/build/types/entities/translated/index.d.ts +0 -1
  59. package/build/types/parser/TokenKind.d.ts +1 -2
  60. package/build/types/services/DisplayService.d.ts +5 -27
  61. package/build/types/services/NodeSemanticInfo.d.ts +2 -6
  62. package/build/types/services/RenameService.d.ts +1 -0
  63. package/build/types/services/TreeUtils.d.ts +1 -1
  64. package/build/types/services/signature-help/SignatureWithParameters.d.ts +1 -8
  65. package/build/types/tree/BaseNode.d.ts +5 -5
  66. package/build/types/tree/Nodes.d.ts +11 -34
  67. package/build/types/tree/OperatorKind.d.ts +16 -17
  68. package/build/types/tree/SyntaxFactory.d.ts +3 -4
  69. package/build/types/tree/SyntaxToCode.d.ts +0 -1
  70. package/build/types/tree/TokenFlags.d.ts +1 -0
  71. package/build/types/tree/TokenKind.d.ts +1 -2
  72. package/build/types/tree/index.d.ts +5 -5
  73. package/build/types/ts-interop/Entities.d.ts +6 -2
  74. package/build/types/types/TypeMembers.d.ts +4 -24
  75. package/package.json +1 -1
  76. package/build/types/analysis/OperatorAccessResolver.d.ts +0 -10
  77. package/build/types/entities/interfaces/OperatorEntity.d.ts +0 -25
  78. package/build/types/entities/source/SourceOperatorEntity.d.ts +0 -42
  79. package/build/types/entities/translated/TranslatedOperatorEntity.d.ts +0 -54
@@ -55,7 +55,7 @@ import {
55
55
  IntersectionTypeSpecifier,
56
56
  JavaScriptInterfacePackageImplementationConfig,
57
57
  JsonConfigurationFileNameSet,
58
- Keyword,
58
+ Keyword2 as Keyword,
59
59
  KeywordExpression,
60
60
  LocaleByConfigurationDirectoryName,
61
61
  LocaleByJsonConfigurationFileName,
@@ -76,8 +76,6 @@ import {
76
76
  NodePath,
77
77
  NodeTypeUtils,
78
78
  NullableTypeSpecifier,
79
- OperatorDeclaration,
80
- OperatorDeclaration_typeMember,
81
79
  Option,
82
80
  PackageAliasTypeDeclaration,
83
81
  PackageAspectDeclaration,
@@ -166,6 +164,7 @@ import {
166
164
  isEntityWithParameters,
167
165
  isEntityWithTypeParameters,
168
166
  isIdentifier,
167
+ isKeyword,
169
168
  isNamedTypeEntity,
170
169
  isNarrowableReferenceExpression,
171
170
  isNonEmptyArray,
@@ -185,7 +184,7 @@ import {
185
184
  unwrapParenthesizedExpressions,
186
185
  visitChildren,
187
186
  yieldTask
188
- } from "../chunk-Y3SDLINT.js";
187
+ } from "../chunk-SJFIPH42.js";
189
188
 
190
189
  // source/services/CustomRequests.ts
191
190
  import * as ls from "vscode-languageserver";
@@ -540,25 +539,6 @@ var SyntaxFactory = class {
540
539
  void 0
541
540
  );
542
541
  }
543
- static operatorDeclaration(tags, modifiers, name, parameters, returnTypeSpecifier, body, operatorKind) {
544
- const tagList = tags instanceof Array ? new TagList(tags, void 0) : tags;
545
- const modifierList = modifiers instanceof Array ? new ModifierList(modifiers, void 0) : modifiers;
546
- const functionKeyword = this.keyword(16 /* Function */);
547
- const nameIdentifier = this.identifier(name);
548
- const parameterClause = this.parameterClause(parameters);
549
- const returnTypeAnnotation = this.createTypeAnnotation(returnTypeSpecifier);
550
- return new OperatorDeclaration(
551
- tagList,
552
- modifierList,
553
- functionKeyword,
554
- nameIdentifier,
555
- parameterClause,
556
- returnTypeAnnotation,
557
- body,
558
- operatorKind,
559
- void 0
560
- );
561
- }
562
542
  static constructorDeclaration(tags, modifiers, parameters, body) {
563
543
  const tagList = tags instanceof Array ? new TagList(tags, void 0) : tags;
564
544
  const modifierList = modifiers instanceof Array ? new ModifierList(modifiers, void 0) : modifiers;
@@ -1052,16 +1032,6 @@ var SyntaxFactory = class {
1052
1032
  node.returnTypeAnnotation?.typeSpecifier,
1053
1033
  node.block
1054
1034
  );
1055
- case 48 /* OperatorDeclaration */:
1056
- return this.operatorDeclaration(
1057
- node.tagList,
1058
- modifierList,
1059
- node.name,
1060
- node.parameterClause.parameterList,
1061
- node.returnTypeAnnotation?.typeSpecifier,
1062
- node.block,
1063
- node.operatorKind
1064
- );
1065
1035
  case 49 /* FieldDeclaration */:
1066
1036
  return this.fieldDeclaration(
1067
1037
  node.tagList,
@@ -1088,9 +1058,9 @@ var SyntaxFactory = class {
1088
1058
  Debug.never(node);
1089
1059
  }
1090
1060
  }
1091
- static identifier(value) {
1061
+ static identifier(value, flags = 0 /* None */) {
1092
1062
  if (typeof value === "string") {
1093
- return this.createToken(9 /* Identifier */, value, 0 /* None */);
1063
+ return this.createToken(9 /* Identifier */, value, flags);
1094
1064
  }
1095
1065
  return value;
1096
1066
  }
@@ -1464,20 +1434,6 @@ var SyntaxToCode = class _SyntaxToCode {
1464
1434
  this.writeDeclarationBody(node.block);
1465
1435
  }
1466
1436
  }
1467
- writeOperatorDeclaration(node) {
1468
- this.writeDeclarationTags(node.tagList);
1469
- this.writeDeclarationModifiers(node.modifierList);
1470
- this.writeKeyword(node.functionKeyword);
1471
- this.writeWhitespace();
1472
- this.writeToken(node.name);
1473
- this.writeParameterClause(node.parameterClause);
1474
- if (node.returnTypeAnnotation !== void 0) {
1475
- this.writeTypeAnnotation(node.returnTypeAnnotation, true);
1476
- }
1477
- if (node.block !== void 0) {
1478
- this.writeDeclarationBody(node.block);
1479
- }
1480
- }
1481
1437
  writeConstructorDeclaration(node) {
1482
1438
  this.writeDeclarationTags(node.tagList);
1483
1439
  this.writeDeclarationModifiers(node.modifierList);
@@ -2070,7 +2026,6 @@ var SyntaxToCode = class _SyntaxToCode {
2070
2026
  case 43 /* IndexedElementSetterDeclaration */:
2071
2027
  case 46 /* DereferencedVariableSetterDeclaration */:
2072
2028
  case 47 /* MethodDeclaration */:
2073
- case 48 /* OperatorDeclaration */:
2074
2029
  case 22 /* PackageEntryPointDeclaration */:
2075
2030
  return 3155970 /* SingularFemNoun */;
2076
2031
  case 19 /* PackageAliasTypeDeclaration */:
@@ -2107,7 +2062,13 @@ var SyntaxToCode = class _SyntaxToCode {
2107
2062
  } else {
2108
2063
  let value = token.value;
2109
2064
  if (token.tokenKind === 9 /* Identifier */) {
2110
- if (value.startsWith("'") && value.endsWith("'")) {
2065
+ if ((token.flags & 2048 /* ObjectParameterName */) !== 0) {
2066
+ value = LocalizationHelper.localizeKeywordAndTakeFirst(
2067
+ 7 /* Object */,
2068
+ this.keywordsLocale,
2069
+ this.keywordsDialect
2070
+ );
2071
+ } else if (value.startsWith("'") && value.endsWith("'")) {
2111
2072
  value = `'${this.escapeLiteralIdentifier(value.substring(1, value.length - 1))}'`;
2112
2073
  } else if (this.singleWordKeywordValues.has(value)) {
2113
2074
  value = `'${value}'`;
@@ -2191,7 +2152,6 @@ var SyntaxToCode = class _SyntaxToCode {
2191
2152
  [45 /* DereferencedVariableGetterDeclaration */]: this.prototype.writeDereferencedVariableGetterDeclaration,
2192
2153
  [46 /* DereferencedVariableSetterDeclaration */]: this.prototype.writeDereferencedVariableSetterDeclaration,
2193
2154
  [47 /* MethodDeclaration */]: this.prototype.writeMethodDeclaration,
2194
- [48 /* OperatorDeclaration */]: this.prototype.writeOperatorDeclaration,
2195
2155
  [49 /* FieldDeclaration */]: this.prototype.writeFieldDeclaration,
2196
2156
  [50 /* FieldGetterDeclaration */]: this.prototype.writeFieldGetterDeclaration,
2197
2157
  [51 /* FieldSetterDeclaration */]: this.prototype.writeFieldSetterDeclaration,
@@ -2830,7 +2790,7 @@ var TranslationsGenerator = class _TranslationsGenerator {
2830
2790
  createPackageFunctionTranslation(entity) {
2831
2791
  const name = this.getNameText(entity.getName());
2832
2792
  const typeParameters = entity.getTypeParameters().map((p) => this.getNameText(p.getName()));
2833
- const parameters = entity.getParameters().map((p) => this.getNameText(p.getName()));
2793
+ const parameters = this.createParameters(entity.getParameters());
2834
2794
  return SyntaxFactory.packageFunctionTranslation(name, typeParameters, parameters, name, typeParameters, parameters);
2835
2795
  }
2836
2796
  createPackageTypeWithMembersTranslation(entity) {
@@ -2842,7 +2802,7 @@ var TranslationsGenerator = class _TranslationsGenerator {
2842
2802
  createFunctionTypeAliasTranslation(entity, aliasTarget) {
2843
2803
  const name = this.getNameText(entity.getName());
2844
2804
  const typeParameters = entity.getTypeParameters().map((p) => this.getNameText(p.getName()));
2845
- const parameters = aliasTarget.getParameters().map((p) => this.getNameText(p.getName()));
2805
+ const parameters = this.createParameters(aliasTarget.getParameters());
2846
2806
  return SyntaxFactory.functionTypeTranslation(name, typeParameters, parameters, name, typeParameters, parameters);
2847
2807
  }
2848
2808
  createTypeMemberTranslationNode(entity) {
@@ -2855,8 +2815,6 @@ var TranslationsGenerator = class _TranslationsGenerator {
2855
2815
  return this.createConstructorTranslation(entity);
2856
2816
  case 5 /* Indexer */:
2857
2817
  return this.createIndexerTranslation(entity);
2858
- case 9 /* Operator */:
2859
- return this.createOperatorTranslation(entity);
2860
2818
  case 6 /* DereferenceOperator */:
2861
2819
  case 8 /* Destructor */:
2862
2820
  return void 0;
@@ -2869,23 +2827,34 @@ var TranslationsGenerator = class _TranslationsGenerator {
2869
2827
  return SyntaxFactory.fieldOrVariantTranslation(name, name);
2870
2828
  }
2871
2829
  createMethodTranslation(entity) {
2872
- const name = this.getNameText(entity.getName());
2830
+ let name;
2831
+ const operatorKind = entity.getOperatorKind();
2832
+ if (operatorKind === void 0) {
2833
+ name = this.getNameText(entity.getName());
2834
+ } else {
2835
+ name = `'${LocalizationHelper.localizeOperatorKind(operatorKind, this.locale, this.dialect)}'`;
2836
+ }
2873
2837
  const typeParameters = entity.getTypeParameters().map((p) => this.getNameText(p.getName()));
2874
- const parameters = entity.getParameters().map((p) => this.getNameText(p.getName()));
2838
+ const parameters = this.createParameters(entity.getParameters());
2875
2839
  return SyntaxFactory.methodTranslation(name, typeParameters, parameters, name, typeParameters, parameters);
2876
2840
  }
2877
2841
  createConstructorTranslation(entity) {
2878
- const parameters = entity.getParameters().map((p) => this.getNameText(p.getName()));
2842
+ const parameters = this.createParameters(entity.getParameters());
2879
2843
  return SyntaxFactory.constructorTranslation(parameters, parameters);
2880
2844
  }
2881
2845
  createIndexerTranslation(entity) {
2882
- const parameters = entity.getParameters().map((p) => this.getNameText(p.getName()));
2846
+ const parameters = this.createParameters(entity.getParameters());
2883
2847
  return SyntaxFactory.indexerTranslation(parameters, parameters);
2884
2848
  }
2885
- createOperatorTranslation(entity) {
2886
- const name = `'${LocalizationHelper.localizeOperatorKind(entity.getOperatorKind(), this.locale, this.dialect)}'`;
2887
- const parameters = entity.getParameters().map((p) => this.getNameText(p.getName()));
2888
- return SyntaxFactory.methodTranslation(name, [], parameters, name, [], parameters);
2849
+ createParameters(parameters) {
2850
+ return parameters.map((p) => {
2851
+ const nameText = this.getNameText(p.getName());
2852
+ let flags = 0 /* None */;
2853
+ if (p.isObjectParameter()) {
2854
+ flags |= 2048 /* ObjectParameterName */;
2855
+ }
2856
+ return SyntaxFactory.identifier(nameText, flags);
2857
+ });
2889
2858
  }
2890
2859
  getNameText(name) {
2891
2860
  const flags = name.flags & ~8 /* ConflictResolvingParameterName */;
@@ -3101,15 +3070,6 @@ var SignatureForNode = class _SignatureForNode {
3101
3070
  });
3102
3071
  return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
3103
3072
  }
3104
- case "operator-call": {
3105
- let suitableSignatureIndex;
3106
- const singleOperator = meaning.singleOperator;
3107
- if (singleOperator !== void 0) {
3108
- suitableSignatureIndex = meaning.candidates.findIndex((c) => c.equals(singleOperator));
3109
- }
3110
- const signatures = meaning.candidates.map((c) => new OperatorSignature(c));
3111
- return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
3112
- }
3113
3073
  case "object-function-call": {
3114
3074
  const signature = new FunctionTypeSignature(meaning.type);
3115
3075
  return new SignaturesWithSingleSuitable([signature], 0);
@@ -3335,16 +3295,6 @@ var AccessedFunctionSignature = class {
3335
3295
  return this.parameters.getOrInsertWith(() => this.func.getParameters().map((p) => new UniversalParameter(p.type, p.entity)));
3336
3296
  }
3337
3297
  };
3338
- var OperatorSignature = class {
3339
- constructor(operator) {
3340
- this.kind = "operator";
3341
- this.parameters = new Cached();
3342
- this.operator = operator;
3343
- }
3344
- getParameters() {
3345
- return this.parameters.getOrInsertWith(() => this.operator.getParameters().map((p) => new UniversalParameter(p.getType(), p.getEntity())));
3346
- }
3347
- };
3348
3298
  var FunctionTypeSignature = class {
3349
3299
  constructor(functionType) {
3350
3300
  this.kind = "function-type";
@@ -3483,7 +3433,7 @@ var CompletionService = class {
3483
3433
  if (syntaxContext.isInComment || syntaxContext.isInText) {
3484
3434
  return { kind: "none" };
3485
3435
  }
3486
- if (syntaxContext.isInQuotedIdentifier !== void 0 && (syntaxContext.isInQuotedIdentifier.parent.kind === 48 /* OperatorDeclaration */ || syntaxContext.isInQuotedIdentifier.parent.kind === 47 /* MethodDeclaration */)) {
3436
+ if (syntaxContext.isInQuotedIdentifier !== void 0 && syntaxContext.isInQuotedIdentifier.parent.kind === 47 /* MethodDeclaration */) {
3487
3437
  return new OperatorNameCompletionContext(syntaxContext.isInQuotedIdentifier);
3488
3438
  }
3489
3439
  const tokenOrKeyword = positionDescription.tokenOrKeyword;
@@ -3891,15 +3841,16 @@ var CompletionService = class {
3891
3841
  }
3892
3842
  if (syntaxContext.isExpressionContext !== void 0) {
3893
3843
  kinds.add(47 /* Not */).add(56 /* Yes */).add(57 /* No */).add(61 /* Null */).add(44 /* Async */).add(16 /* Function */).add(58 /* Reference */).add(2 /* Autotype */).add(34 /* Cond */).add(35 /* Creation */);
3894
- if (positionDescription.kind === "after-token-or-keyword") {
3844
+ const objectVariableInfo = semanticContext.getObjectVariableInfo();
3845
+ if (objectVariableInfo !== void 0 && !(objectVariableInfo.kind === "containing-type-context" && semanticContext.isStatic())) {
3846
+ kinds.add(7 /* Object */);
3847
+ }
3848
+ if (!semanticContext.isStatic()) {
3895
3849
  const container = semanticContext.getContainingTypeOrTypeExtension();
3896
- if (container !== void 0) {
3897
- kinds.add(7 /* Object */);
3898
- if (container.kind === "type") {
3899
- const typeEntity = container.value;
3900
- if (typeEntity?.typeEntityKind === 1 /* Structured */ && typeEntity.getBaseObjectType() !== void 0 || typeEntity?.typeEntityKind === 3 /* Variant */ || typeEntity?.typeEntityKind === 4 /* Alias */) {
3901
- kinds.add(60 /* Base */);
3902
- }
3850
+ if (container !== void 0 && container.kind === "type") {
3851
+ const typeEntity = container.value;
3852
+ if (typeEntity?.typeEntityKind === 1 /* Structured */ && typeEntity.getBaseObjectType() !== void 0 || typeEntity?.typeEntityKind === 3 /* Variant */ || typeEntity?.typeEntityKind === 4 /* Alias */) {
3853
+ kinds.add(60 /* Base */);
3903
3854
  }
3904
3855
  }
3905
3856
  }
@@ -4062,10 +4013,14 @@ var CompletionService = class {
4062
4013
  return parameters.map((p) => new TargetSignatureParameterCompletionItemInfo(this.completionItemInfoContext, p));
4063
4014
  }
4064
4015
  getScopeCompletionItemInfos(semanticContext) {
4065
- return Query.from(semanticContext.getNamedDeclarations()).map((d) => {
4016
+ return Query.from(semanticContext.getNamedDeclarations()).mapAndFilter((d) => {
4066
4017
  switch (d.kind) {
4067
4018
  case "variable": {
4068
4019
  if (d.value.kind === "entity") {
4020
+ const entity = d.value.value;
4021
+ if (entity.subkind === "parameter" && entity.isObjectParameter()) {
4022
+ return void 0;
4023
+ }
4069
4024
  return new VariableEntityCompletionItemInfo(this.completionItemInfoContext, d.value.value);
4070
4025
  } else {
4071
4026
  return new FieldCompletionItemInfo(this.completionItemInfoContext, d.value.value);
@@ -4088,9 +4043,7 @@ var CompletionService = class {
4088
4043
  default:
4089
4044
  Debug.never(d);
4090
4045
  }
4091
- }).chain(
4092
- Query.from(semanticContext.getOperators()).map((o) => new OperatorCompletionItemInfo(this.completionItemInfoContext, o))
4093
- );
4046
+ });
4094
4047
  }
4095
4048
  getTypeCompletionItemInfos(ctx) {
4096
4049
  let result;
@@ -4251,7 +4204,7 @@ var CompletionService = class {
4251
4204
  default:
4252
4205
  Debug.never(m);
4253
4206
  }
4254
- }).concat(memberLookup.getOperators(ctx.lookupContext, ctx.lookupOptions).map((o) => new OperatorCompletionItemInfo(this.completionItemInfoContext, o)));
4207
+ });
4255
4208
  }
4256
4209
  getPackageImportCompletionItemInfos(ctx) {
4257
4210
  const result = this.analyzer.packageImports.getPackagesAvailableForImport(this.sourceFile.package).map((p) => p.getName()).filter((n) => {
@@ -4400,8 +4353,7 @@ var CompletionService = class {
4400
4353
  for (const itemInfo of completionItemInfos) {
4401
4354
  switch (itemInfo.kind) {
4402
4355
  case "method":
4403
- case "function-entity":
4404
- case "operator": {
4356
+ case "function-entity": {
4405
4357
  const label = itemInfo.getLabel();
4406
4358
  const functionInfo = functionInfoByLabel.get(label);
4407
4359
  if (functionInfo !== void 0) {
@@ -4755,10 +4707,17 @@ var MethodCompletionItemInfo = class {
4755
4707
  this.kind = "method";
4756
4708
  }
4757
4709
  getLabel() {
4758
- return this.ctx.getInsertTextForName(this.method.getName());
4710
+ let result;
4711
+ const operatorKind = this.method.getOperatorKind();
4712
+ if (operatorKind === void 0) {
4713
+ result = this.ctx.getInsertTextForName(this.method.getName());
4714
+ } else {
4715
+ result = `'${this.ctx.displayService.displayOperatorKind(operatorKind)}'`;
4716
+ }
4717
+ return result;
4759
4718
  }
4760
4719
  getCompletionItemKind() {
4761
- return 3 /* Method */;
4720
+ return this.method.getOperatorKind() === void 0 ? 3 /* Method */ : 4 /* Operator */;
4762
4721
  }
4763
4722
  getDetails() {
4764
4723
  return this.ctx.displayService.displayTypeMember(this.method);
@@ -4773,31 +4732,6 @@ var MethodCompletionItemInfo = class {
4773
4732
  return void 0;
4774
4733
  }
4775
4734
  };
4776
- var OperatorCompletionItemInfo = class {
4777
- constructor(ctx, operator) {
4778
- this.ctx = ctx;
4779
- this.operator = operator;
4780
- this.kind = "operator";
4781
- }
4782
- getLabel() {
4783
- return `'${this.ctx.displayService.displayOperatorKind(this.operator.getOperatorKind())}'`;
4784
- }
4785
- getCompletionItemKind() {
4786
- return 4 /* Operator */;
4787
- }
4788
- getDetails() {
4789
- return this.ctx.displayService.displayTypeMember(this.operator);
4790
- }
4791
- getInsertText() {
4792
- return void 0;
4793
- }
4794
- getSortText() {
4795
- return void 0;
4796
- }
4797
- getEditRange() {
4798
- return void 0;
4799
- }
4800
- };
4801
4735
  var VariableEntityCompletionItemInfo = class {
4802
4736
  constructor(ctx, entity) {
4803
4737
  this.ctx = ctx;
@@ -4841,14 +4775,21 @@ var FunctionEntityCompletionItemInfo = class {
4841
4775
  this.kind = "function-entity";
4842
4776
  }
4843
4777
  getLabel() {
4844
- return this.ctx.getInsertTextForName(this.entity.getName());
4778
+ let result;
4779
+ const operatorKind = this.entity.subkind === "method" ? this.entity.getOperatorKind() : void 0;
4780
+ if (operatorKind === void 0) {
4781
+ result = this.ctx.getInsertTextForName(this.entity.getName());
4782
+ } else {
4783
+ result = `'${this.ctx.displayService.displayOperatorKind(operatorKind)}'`;
4784
+ }
4785
+ return result;
4845
4786
  }
4846
4787
  getCompletionItemKind() {
4847
4788
  switch (this.entity.subkind) {
4848
4789
  case "package":
4849
4790
  return 8 /* PackageFunction */;
4850
4791
  case "method":
4851
- return 3 /* Method */;
4792
+ return this.entity.subkind === "method" && this.entity.getOperatorKind() !== void 0 ? 4 /* Operator */ : 3 /* Method */;
4852
4793
  case "nested":
4853
4794
  return 11 /* NestedFunction */;
4854
4795
  default:
@@ -5594,7 +5535,7 @@ var SyntaxContextFactory = class {
5594
5535
  ) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(
5595
5536
  tokenOrKeyword,
5596
5537
  46 /* DereferencedVariableSetterDeclaration */
5597
- ) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 47 /* MethodDeclaration */) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 48 /* OperatorDeclaration */) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 40 /* ConstructorDeclaration */) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 41 /* DestructorDeclaration */) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 145 /* VariantValueDeclaration */)) {
5538
+ ) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 47 /* MethodDeclaration */) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 40 /* ConstructorDeclaration */) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 41 /* DestructorDeclaration */) || SyntaxContextUtils.tokenOrKeywordIsValidEndOfNode(tokenOrKeyword, 145 /* VariantValueDeclaration */)) {
5598
5539
  return true;
5599
5540
  }
5600
5541
  if (tokenOrKeyword.isKeyword() && tokenOrKeyword.parent.kind === 152 /* Modifier */ && tokenOrKeyword.value === tokenOrKeyword.parent.value && tokenOrKeyword.parent.openParenthesisToken === void 0 && NodeTypeUtils.isTypeMemberDeclaration(tokenOrKeyword.parent.parent.parent)) {
@@ -5894,6 +5835,8 @@ var NodeSemanticInfoService = class {
5894
5835
  return this.ofIndexedAccessExpressionOperator(analyzer, tokenOrKeyword.parent, options7);
5895
5836
  } else if (tokenOrKeyword.isKeyword(35 /* Creation */) && tokenOrKeyword.parent.kind === 125 /* ConstructorTranslation */) {
5896
5837
  return this.ofConstructorTranslationSourceConstructor(analyzer, tokenOrKeyword.parent, options7);
5838
+ } else if (tokenOrKeyword.isKeyword(7 /* Object */) && tokenOrKeyword.parent.kind === 147 /* ParameterDeclaration */) {
5839
+ return this.ofOjectParameterDeclaration(analyzer, tokenOrKeyword.parent, tokenOrKeyword.value);
5897
5840
  } else if ((tokenOrKeyword.isToken(47 /* OpenParenthesis */) || tokenOrKeyword.isToken(23 /* CloseParenthesis */)) && tokenOrKeyword.parent.kind === 124 /* TranslationParameterClause */ && tokenOrKeyword.parent.parent.kind === 125 /* ConstructorTranslation */ && tokenOrKeyword.parent.parent.translatedParameterClause === tokenOrKeyword.parent) {
5898
5841
  return this.ofConstructorTranslationTranslatedConstructor(analyzer, tokenOrKeyword.parent.parent, options7);
5899
5842
  } else if ((tokenOrKeyword.isToken(48 /* OpenSquareBracket */) || tokenOrKeyword.isToken(24 /* CloseSquareBracket */)) && tokenOrKeyword.parent.kind === 126 /* IndexParameterTranslationClause */ && tokenOrKeyword.parent.parent.kind === 127 /* IndexerTranslation */ && tokenOrKeyword.parent.parent.sourceParameterClause === tokenOrKeyword.parent) {
@@ -6033,9 +5976,6 @@ var NodeSemanticInfoService = class {
6033
5976
  case 47 /* MethodDeclaration */:
6034
5977
  result = new DefinitionNodeSemanticInfo(analyzer.entity.ofMethodDeclaration(parent));
6035
5978
  break;
6036
- case 48 /* OperatorDeclaration */:
6037
- result = new DefinitionNodeSemanticInfo(analyzer.entity.ofOperatorDeclaration(parent));
6038
- break;
6039
5979
  case 49 /* FieldDeclaration */:
6040
5980
  result = new DefinitionNodeSemanticInfo(analyzer.entity.ofFieldDeclaration(parent));
6041
5981
  break;
@@ -6123,14 +6063,6 @@ var NodeSemanticInfoService = class {
6123
6063
  }
6124
6064
  break;
6125
6065
  }
6126
- case "operator-access": {
6127
- if (isNonEmptyArray(meaning.suitableOperators)) {
6128
- result = createOperatorsReference(meaning.suitableOperators, meaning.suitableOperators.length > 1);
6129
- } else if (isNonEmptyArray(meaning.candidates)) {
6130
- result = createOperatorsReference(meaning.candidates, true);
6131
- }
6132
- break;
6133
- }
6134
6066
  case "package-function-access": {
6135
6067
  let functions;
6136
6068
  if (meaning.singleNotSuitableSubstitutedCandidate !== void 0) {
@@ -6193,10 +6125,6 @@ var NodeSemanticInfoService = class {
6193
6125
  result = this.getBetterReferenceTargetsOrPreserve(result);
6194
6126
  }
6195
6127
  return result;
6196
- function createOperatorsReference(operators, isAmbiguous) {
6197
- const targets = operators.map((o) => new OperatorReferenceTarget(o));
6198
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), isAmbiguous);
6199
- }
6200
6128
  }
6201
6129
  static ofQualifiedNameQualifier(analyzer, node, qualifier, options7) {
6202
6130
  switch (node.parent.kind) {
@@ -6393,14 +6321,6 @@ var NodeSemanticInfoService = class {
6393
6321
  }
6394
6322
  break;
6395
6323
  }
6396
- case "operator-access": {
6397
- if (isNonEmptyArray(meaning.suitableOperators)) {
6398
- result = createOperatorsReference(meaning.suitableOperators, meaning.suitableOperators.length > 1);
6399
- } else if (isNonEmptyArray(meaning.candidates)) {
6400
- result = createOperatorsReference(meaning.candidates, true);
6401
- }
6402
- break;
6403
- }
6404
6324
  case "variable-access": {
6405
6325
  let narrowedType;
6406
6326
  if (isNarrowableReferenceExpression(node)) {
@@ -6458,10 +6378,6 @@ var NodeSemanticInfoService = class {
6458
6378
  result = this.getBetterReferenceTargetsOrPreserve(result);
6459
6379
  }
6460
6380
  return result;
6461
- function createOperatorsReference(operators, isAmbiguous) {
6462
- const targets = operators.map((o) => new OperatorReferenceTarget(o));
6463
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), isAmbiguous);
6464
- }
6465
6381
  }
6466
6382
  static ofConstructorDeclaration(analyzer, node) {
6467
6383
  const entity = analyzer.entity.ofConstructorDeclaration(node);
@@ -6500,7 +6416,7 @@ var NodeSemanticInfoService = class {
6500
6416
  if (operatorKind !== void 0) {
6501
6417
  const operator = analyzer.resolveCompoundAssignmentStatementOperator(node, operatorKind);
6502
6418
  if (operator !== void 0) {
6503
- const target = new OperatorReferenceTarget(operator);
6419
+ const target = new AccessedFunctionReferenceTarget(new AccessedFunction_typeMember(operator));
6504
6420
  let result = new ReferenceNodeSemanticInfo([target], false);
6505
6421
  if (options7.includeBetterReferenceTargets) {
6506
6422
  result = this.getBetterReferenceTargetsOrPreserve(result);
@@ -6515,7 +6431,7 @@ var NodeSemanticInfoService = class {
6515
6431
  if (classificationResult.kind === "user-definable") {
6516
6432
  const operator = analyzer.resolveBinaryExpressionUserDefinableOperator(node, classificationResult.operatorKind);
6517
6433
  if (operator !== void 0) {
6518
- const target = new OperatorReferenceTarget(operator);
6434
+ const target = new AccessedFunctionReferenceTarget(new AccessedFunction_typeMember(operator));
6519
6435
  let result = new ReferenceNodeSemanticInfo([target], false);
6520
6436
  if (options7.includeBetterReferenceTargets) {
6521
6437
  result = this.getBetterReferenceTargetsOrPreserve(result);
@@ -6528,7 +6444,7 @@ var NodeSemanticInfoService = class {
6528
6444
  static ofPrefixUnaryExpressionOperator(analyzer, node, options7) {
6529
6445
  const operator = analyzer.resolvePrefixUnaryExpressionUserDefinableOperator(node);
6530
6446
  if (operator !== void 0) {
6531
- const target = new OperatorReferenceTarget(operator);
6447
+ const target = new AccessedFunctionReferenceTarget(new AccessedFunction_typeMember(operator));
6532
6448
  let result = new ReferenceNodeSemanticInfo([target], false);
6533
6449
  if (options7.includeBetterReferenceTargets) {
6534
6450
  result = this.getBetterReferenceTargetsOrPreserve(result);
@@ -6601,6 +6517,12 @@ var NodeSemanticInfoService = class {
6601
6517
  result = new ReferenceNodeSemanticInfo([target], false);
6602
6518
  break;
6603
6519
  }
6520
+ case "object-parameter-access": {
6521
+ const type = analyzer.type.ofExpression(node);
6522
+ const target = new EntityReferenceTarget(meaning.parameter, 0 /* Get */, type);
6523
+ result = new ReferenceNodeSemanticInfo([target], false);
6524
+ break;
6525
+ }
6604
6526
  case "unresolved":
6605
6527
  break;
6606
6528
  default:
@@ -6635,11 +6557,6 @@ var NodeSemanticInfoService = class {
6635
6557
  case "overridden-method-access": {
6636
6558
  return this.ofAccessedFunctions([meaning.method]);
6637
6559
  }
6638
- case "overridden-operator-access": {
6639
- const target = new OperatorReferenceTarget(meaning.operator);
6640
- result = new ReferenceNodeSemanticInfo([target], false);
6641
- break;
6642
- }
6643
6560
  case "unresolved":
6644
6561
  break;
6645
6562
  default:
@@ -6708,6 +6625,9 @@ var NodeSemanticInfoService = class {
6708
6625
  }
6709
6626
  return result;
6710
6627
  }
6628
+ static ofOjectParameterDeclaration(analyzer, node, _objectKeyword) {
6629
+ return new DefinitionNodeSemanticInfo(analyzer.entity.ofParameterDeclaration(node));
6630
+ }
6711
6631
  static ofPackageNameSegmentAccess(analyzer, packageTreeNode, node) {
6712
6632
  let parent = getParentSkippingParenthesizedExpressions(node);
6713
6633
  while (parent.kind === 73 /* MemberAccessExpression */) {
@@ -6816,16 +6736,30 @@ var NodeSemanticInfoService = class {
6816
6736
  if (translationTargets !== void 0) {
6817
6737
  let parameterArrays;
6818
6738
  if (parameterList === translationDeclaration.sourceParameterClause?.parameterList) {
6819
- parameterArrays = Query.from(translationTargets.values).mapAndFilter((e) => isEntityWithParameters(e) ? e.getParameters() : void 0).toArray();
6739
+ parameterArrays = Query.from(translationTargets.values).mapAndFilter((e) => {
6740
+ if (e.kind === 2 /* Type */) {
6741
+ const functionTypeEntity = ifTypeEntityIsFunctionTypeAliasThenFunctionType(e);
6742
+ if (functionTypeEntity !== void 0) {
6743
+ return functionTypeEntity.getParameters();
6744
+ }
6745
+ }
6746
+ return isEntityWithParameters(e) ? e.getParameters() : void 0;
6747
+ }).toArray();
6820
6748
  } else {
6821
6749
  parameterArrays = Query.from(translationTargets.values).mapAndFilter((e) => {
6822
6750
  const localizedEntity = isPackageMemberEntity(e) ? translationPackage.localizationContext.getLocalizedPackageMemberEntity(e) : translationPackage.localizationContext.getLocalizedTypeMemberEntity(e);
6751
+ if (localizedEntity.kind === 2 /* Type */) {
6752
+ const functionTypeEntity = ifTypeEntityIsFunctionTypeAliasThenFunctionType(localizedEntity);
6753
+ if (functionTypeEntity !== void 0) {
6754
+ return functionTypeEntity.getParameters();
6755
+ }
6756
+ }
6823
6757
  return isEntityWithParameters(localizedEntity) ? localizedEntity.getParameters() : void 0;
6824
6758
  }).toArray();
6825
6759
  }
6826
- const typeParameters = Query.from(parameterArrays).mapAndFilter((a) => a[parameterIndex]).toArray();
6827
- if (isNonEmptyArray(typeParameters)) {
6828
- const targets = typeParameters.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6760
+ const parameters = Query.from(parameterArrays).mapAndFilter((a) => a[parameterIndex]).toArray();
6761
+ if (isNonEmptyArray(parameters)) {
6762
+ const targets = parameters.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6829
6763
  result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), !translationTargets.areSuitable);
6830
6764
  if (options7.includeBetterReferenceTargets) {
6831
6765
  result = this.getBetterReferenceTargetsOrPreserve(result);
@@ -6979,12 +6913,6 @@ var AccessedFunctionReferenceTarget = class {
6979
6913
  this.kind = "accessed-function";
6980
6914
  }
6981
6915
  };
6982
- var OperatorReferenceTarget = class {
6983
- constructor(operator) {
6984
- this.operator = operator;
6985
- this.kind = "operator";
6986
- }
6987
- };
6988
6916
  var MatchResultParameterReferenceTarget = class {
6989
6917
  constructor(parameter, accessKind) {
6990
6918
  this.parameter = parameter;
@@ -7089,7 +7017,6 @@ function getEntitySourceLocations(analyzer, entity) {
7089
7017
  case 53 /* NestedFunctionDeclaration */:
7090
7018
  case 47 /* MethodDeclaration */:
7091
7019
  case 146 /* TypeParameterDeclaration */:
7092
- case 48 /* OperatorDeclaration */:
7093
7020
  case 27 /* PackageClassDeclaration */:
7094
7021
  case 28 /* PackageStructureDeclaration */:
7095
7022
  case 29 /* PackageAspectDeclaration */:
@@ -7316,8 +7243,6 @@ var DefinitionService = class {
7316
7243
  return getEntitySourceLocations(analyzer, target.constructor_.getEntity());
7317
7244
  case "accessed-function":
7318
7245
  return getEntitySourceLocations(analyzer, target.func.getEntity());
7319
- case "operator":
7320
- return getEntitySourceLocations(analyzer, target.operator.getEntity());
7321
7246
  case "type-dereference-operator":
7322
7247
  return getEntitySourceLocations(analyzer, target.operator.getEntity());
7323
7248
  case "match-result-value-parameter":
@@ -7354,8 +7279,6 @@ var DefinitionService = class {
7354
7279
  return target.parameter.getEntity();
7355
7280
  case "type-constructor":
7356
7281
  return target.constructor_.getEntity();
7357
- case "operator":
7358
- return target.operator.getEntity();
7359
7282
  case "type-dereference-operator":
7360
7283
  return target.operator.getEntity();
7361
7284
  case "accessed-function":
@@ -7430,9 +7353,6 @@ var DefinitionService = class {
7430
7353
  case 46 /* DereferencedVariableSetterDeclaration */:
7431
7354
  range = node.caretToken.rangeWithoutTrivia;
7432
7355
  break;
7433
- case 48 /* OperatorDeclaration */:
7434
- range = node.name.rangeWithoutTrivia;
7435
- break;
7436
7356
  case 63 /* FunctionBlockLiteral */:
7437
7357
  range = node.block.openBraceToken.rangeWithoutTrivia;
7438
7358
  break;
@@ -7474,7 +7394,6 @@ var DefinitionService = class {
7474
7394
  result.push(target.type);
7475
7395
  break;
7476
7396
  case "type-constructor":
7477
- case "operator":
7478
7397
  case "type-dereference-operator":
7479
7398
  case "accessed-function":
7480
7399
  case "type-indexer":
@@ -7575,6 +7494,30 @@ var ReferencesService = class {
7575
7494
  result.push(new Reference(sourceFile2, node.rangeWithoutTrivia, referenceKind));
7576
7495
  }
7577
7496
  }
7497
+ if (isKeyword(node, 7 /* Object */) && node.parent.kind === 147 /* ParameterDeclaration */ && restrictions.canBeObjectParameter) {
7498
+ const semanticInfo = NodeSemanticInfoService.ofOjectParameterDeclaration(analyzer, node.parent, node);
7499
+ const referenceKind = this.ifReferenceToSomeOfDefinitionsThenKind(
7500
+ definitions,
7501
+ semanticInfo,
7502
+ allowAmbiguous,
7503
+ isForRename
7504
+ );
7505
+ if (referenceKind !== void 0) {
7506
+ result.push(new Reference(sourceFile2, node.rangeWithoutTrivia, referenceKind));
7507
+ }
7508
+ }
7509
+ if (node.kind === 84 /* ObjectExpression */ && (restrictions.canBeOwnOrBaseConstructorCall && !options7.onlyNamed || restrictions.canBeObjectParameter)) {
7510
+ const semanticInfo = NodeSemanticInfoService.ofObjectExpression(analyzer, node, semanticInfoOptions);
7511
+ const referenceKind = this.ifReferenceToSomeOfDefinitionsThenKind(
7512
+ definitions,
7513
+ semanticInfo,
7514
+ allowAmbiguous,
7515
+ isForRename
7516
+ );
7517
+ if (referenceKind !== void 0) {
7518
+ result.push(new Reference(sourceFile2, node.keyword.rangeWithoutTrivia, referenceKind));
7519
+ }
7520
+ }
7578
7521
  if (!options7.onlyNamed) {
7579
7522
  if (node.kind === 66 /* AutotypeCallExpression */ && restrictions.canBeAutotypeCall) {
7580
7523
  const semanticInfo = NodeSemanticInfoService.ofAutotypeCallExpression(analyzer, node, semanticInfoOptions);
@@ -7692,18 +7635,6 @@ var ReferencesService = class {
7692
7635
  result.push(new Reference(sourceFile2, node.creationKeyword.rangeWithoutTrivia, referenceKind));
7693
7636
  }
7694
7637
  }
7695
- if (node.kind === 84 /* ObjectExpression */ && restrictions.canBeOwnOrBaseConstructorCall) {
7696
- const semanticInfo = NodeSemanticInfoService.ofObjectExpression(analyzer, node, semanticInfoOptions);
7697
- const referenceKind = this.ifReferenceToSomeOfDefinitionsThenKind(
7698
- definitions,
7699
- semanticInfo,
7700
- allowAmbiguous,
7701
- isForRename
7702
- );
7703
- if (referenceKind !== void 0) {
7704
- result.push(new Reference(sourceFile2, node.keyword.rangeWithoutTrivia, referenceKind));
7705
- }
7706
- }
7707
7638
  if (node.kind === 85 /* BaseExpression */ && restrictions.canBeOwnOrBaseConstructorCall) {
7708
7639
  const semanticInfo = NodeSemanticInfoService.ofBaseExpression(analyzer, node, semanticInfoOptions);
7709
7640
  const referenceKind = this.ifReferenceToSomeOfDefinitionsThenKind(
@@ -7898,8 +7829,6 @@ var ReferencesService = class {
7898
7829
  return new DefinitionInfo(t.parameter.getEntity(), accessKindToReferenceKind(t.accessKind));
7899
7830
  case "type-constructor":
7900
7831
  return new DefinitionInfo(t.constructor_.getEntity(), 0 /* Read */);
7901
- case "operator":
7902
- return new DefinitionInfo(t.operator.getEntity(), 0 /* Read */);
7903
7832
  case "type-dereference-operator":
7904
7833
  return new DefinitionInfo(t.operator.getEntity(), accessKindToReferenceKind(t.accessKind));
7905
7834
  case "accessed-function":
@@ -7946,15 +7875,6 @@ var ReferencesService = class {
7946
7875
  result.canBeAutotypeCall = true;
7947
7876
  result.canBeConstructorDeclaration = true;
7948
7877
  }
7949
- if (definition.value.kind === 9 /* Operator */) {
7950
- const operatorKind = definition.value.getOperatorKind();
7951
- if (isUnaryOperator(operatorKind)) {
7952
- result.canBePrefixUnaryOperator = true;
7953
- } else {
7954
- result.canBeBinaryExpressionOperator = true;
7955
- result.canBeAssignmentStatementOperator = true;
7956
- }
7957
- }
7958
7878
  if (definition.value.kind === 6 /* DereferenceOperator */) {
7959
7879
  result.canBeDereferenceOperator = true;
7960
7880
  }
@@ -7967,6 +7887,20 @@ var ReferencesService = class {
7967
7887
  if (definition.value.kind === 5 /* Indexer */) {
7968
7888
  result.canBeIndexer = true;
7969
7889
  }
7890
+ if (definition.value.kind === 0 /* Variable */ && definition.value.subkind === "parameter" && definition.value.isObjectParameter()) {
7891
+ result.canBeObjectParameter = true;
7892
+ }
7893
+ if (definition.value.kind === 1 /* Function */ && definition.value.subkind === "method") {
7894
+ const operatorKind = definition.value.getOperatorKind();
7895
+ if (operatorKind !== void 0) {
7896
+ if (isUnaryOperator(operatorKind)) {
7897
+ result.canBePrefixUnaryOperator = true;
7898
+ } else {
7899
+ result.canBeBinaryExpressionOperator = true;
7900
+ result.canBeAssignmentStatementOperator = true;
7901
+ }
7902
+ }
7903
+ }
7970
7904
  return result;
7971
7905
  }
7972
7906
  ifReferenceToSomeOfDefinitionsThenKind(definitions, potentialReferenceSemanticInfo, allowAmbiguous, isForRename) {
@@ -8080,7 +8014,6 @@ var ReferencesService = class {
8080
8014
  case 6 /* DereferenceOperator */:
8081
8015
  case 12 /* Package */:
8082
8016
  case 11 /* TypeExtension */:
8083
- case 9 /* Operator */:
8084
8017
  case 13 /* TextTranslation */:
8085
8018
  return void 0;
8086
8019
  default:
@@ -8109,6 +8042,7 @@ var ReferenceRestrictions = class {
8109
8042
  this.canBeBinaryExpressionOperator = false;
8110
8043
  this.canBeDereferenceOperator = false;
8111
8044
  this.canBeAssignmentStatementOperator = false;
8045
+ this.canBeObjectParameter = false;
8112
8046
  this.canBeConstructorDeclaration = false;
8113
8047
  this.canBeOwnOrBaseConstructorCall = false;
8114
8048
  this.canBeBaseExpression = false;
@@ -8263,7 +8197,6 @@ var EvaluatableExpressionService = class {
8263
8197
  case 32 /* PackageVariableDeclaration */:
8264
8198
  case 53 /* NestedFunctionDeclaration */:
8265
8199
  case 54 /* LocalVariableDeclaration */:
8266
- case 147 /* ParameterDeclaration */:
8267
8200
  case 47 /* MethodDeclaration */:
8268
8201
  case 49 /* FieldDeclaration */:
8269
8202
  case 146 /* TypeParameterDeclaration */:
@@ -8273,13 +8206,13 @@ var EvaluatableExpressionService = class {
8273
8206
  case 34 /* PackageVariableSetterDeclaration */:
8274
8207
  case 50 /* FieldGetterDeclaration */:
8275
8208
  case 51 /* FieldSetterDeclaration */:
8276
- case 48 /* OperatorDeclaration */:
8277
8209
  case 144 /* TranslationTextTemplateParameter */:
8278
8210
  case 27 /* PackageClassDeclaration */:
8279
8211
  case 28 /* PackageStructureDeclaration */:
8280
8212
  case 29 /* PackageAspectDeclaration */:
8281
8213
  case 30 /* PackageReducedTypeDeclaration */:
8282
8214
  case 31 /* PackageVariantDeclaration */:
8215
+ case 147 /* ParameterDeclaration */:
8283
8216
  return node.name;
8284
8217
  case 86 /* IdentifierExpression */:
8285
8218
  case 73 /* MemberAccessExpression */:
@@ -8410,10 +8343,6 @@ var HoverService = class {
8410
8343
  const declaration = new ConstructorDeclaration_typeMember(firstTarget.constructor_);
8411
8344
  return new Hover(this.displayService.displayConstructorDeclaration(declaration), range);
8412
8345
  }
8413
- case "operator": {
8414
- const operator = new OperatorDeclaration_typeMember(firstTarget.operator);
8415
- return new Hover(this.displayService.displayOperatorDeclaration(operator), range);
8416
- }
8417
8346
  case "type-dereference-operator": {
8418
8347
  const operator = new DereferenceOperatorDeclaration_typeMember(firstTarget.operator);
8419
8348
  return new Hover(this.displayService.displayDereferenceOperatorDeclaration(operator), range);
@@ -8522,18 +8451,41 @@ var RenameService = class {
8522
8451
  }
8523
8452
  canRename(analyzer, sourceFile, offset) {
8524
8453
  const tokenOrKeyword = getTokenOrKeywordsTouchingOffset(sourceFile.getSyntaxNode(), offset).getSinglePrioritizingNamed();
8525
- if (!(tokenOrKeyword !== void 0 && isIdentifier(tokenOrKeyword.value))) {
8454
+ if (tokenOrKeyword === void 0) {
8526
8455
  return void 0;
8527
8456
  }
8528
- const options7 = {
8529
- includeBetterReferenceTargets: false,
8530
- preferredTargetOfExplicitConstructorCall: "type-declaration"
8531
- };
8532
- const semanticInfo = NodeSemanticInfoService.ofNonKeywordIdentifier(analyzer, tokenOrKeyword.value, options7);
8533
- if (semanticInfo !== void 0) {
8534
- if (semanticInfo.kind === "reference") {
8457
+ let canBeRenamed;
8458
+ if (isIdentifier(tokenOrKeyword.value)) {
8459
+ const options7 = {
8460
+ includeBetterReferenceTargets: false,
8461
+ preferredTargetOfExplicitConstructorCall: "type-declaration"
8462
+ };
8463
+ const semanticInfo = NodeSemanticInfoService.ofNonKeywordIdentifier(analyzer, tokenOrKeyword.value, options7);
8464
+ canBeRenamed = semanticInfo !== void 0 && this.declarationWithSemanticInfoCanBeRenamed(analyzer, semanticInfo);
8465
+ } else if (tokenOrKeyword.isKeyword(7 /* Object */) && tokenOrKeyword.parent.kind === 147 /* ParameterDeclaration */) {
8466
+ canBeRenamed = true;
8467
+ } else if (tokenOrKeyword.isKeyword(7 /* Object */) && tokenOrKeyword.parent.kind === 84 /* ObjectExpression */) {
8468
+ const options7 = {
8469
+ includeBetterReferenceTargets: false,
8470
+ preferredTargetOfExplicitConstructorCall: "type-declaration"
8471
+ };
8472
+ const semanticInfo = NodeSemanticInfoService.ofObjectExpression(analyzer, tokenOrKeyword.parent, options7);
8473
+ canBeRenamed = semanticInfo !== void 0 && this.declarationWithSemanticInfoCanBeRenamed(analyzer, semanticInfo);
8474
+ } else {
8475
+ canBeRenamed = false;
8476
+ }
8477
+ if (!canBeRenamed) {
8478
+ return void 0;
8479
+ }
8480
+ return { renameRange: tokenOrKeyword.value.rangeWithoutTrivia };
8481
+ }
8482
+ declarationWithSemanticInfoCanBeRenamed(analyzer, semanticInfo) {
8483
+ switch (semanticInfo.kind) {
8484
+ case "definition":
8485
+ return true;
8486
+ case "reference": {
8535
8487
  if (semanticInfo.isAmbiguous) {
8536
- return void 0;
8488
+ return false;
8537
8489
  }
8538
8490
  const target = semanticInfo.firstBetterTargetWithFallback;
8539
8491
  let canBeRenamed;
@@ -8553,9 +8505,6 @@ var RenameService = class {
8553
8505
  case "match-result-value-parameter":
8554
8506
  canBeRenamed = this.entityCanBeRenamed(analyzer, target.parameter.entity);
8555
8507
  break;
8556
- case "operator":
8557
- canBeRenamed = this.entityCanBeRenamed(analyzer, target.operator.getEntity());
8558
- break;
8559
8508
  case "type-constructor":
8560
8509
  case "type-dereference-operator":
8561
8510
  case "package":
@@ -8567,13 +8516,13 @@ var RenameService = class {
8567
8516
  default:
8568
8517
  Debug.never(target);
8569
8518
  }
8570
- if (!canBeRenamed) {
8571
- return void 0;
8572
- }
8519
+ return canBeRenamed;
8573
8520
  }
8574
- return { renameRange: tokenOrKeyword.value.rangeWithoutTrivia };
8521
+ case "default-switch-match":
8522
+ return false;
8523
+ default:
8524
+ Debug.never(semanticInfo);
8575
8525
  }
8576
- return void 0;
8577
8526
  }
8578
8527
  entityCanBeRenamed(analyzer, entity) {
8579
8528
  const sourceLocations = getEntitySourceLocations(analyzer, entity);
@@ -8881,13 +8830,6 @@ var SemanticTokensService = class {
8881
8830
  )
8882
8831
  );
8883
8832
  }
8884
- if (meaning.kind === "operator-access") {
8885
- result.push(new SemanticToken(
8886
- node.rangeWithoutTrivia,
8887
- 7 /* Operator */,
8888
- new SemanticTokenModifiers()
8889
- ));
8890
- }
8891
8833
  }
8892
8834
  if (node.kind === 73 /* MemberAccessExpression */) {
8893
8835
  const meaning = analyzer.resolveMemberAccessExpression(node);
@@ -8925,13 +8867,6 @@ var SemanticTokensService = class {
8925
8867
  )
8926
8868
  );
8927
8869
  }
8928
- if (meaning.kind === "operator-access") {
8929
- result.push(new SemanticToken(
8930
- node.memberName.rangeWithoutTrivia,
8931
- 7 /* Operator */,
8932
- new SemanticTokenModifiers()
8933
- ));
8934
- }
8935
8870
  }
8936
8871
  if (node.kind === 145 /* VariantValueDeclaration */) {
8937
8872
  result.push(
@@ -8961,13 +8896,10 @@ var SemanticTokensService = class {
8961
8896
  );
8962
8897
  }
8963
8898
  if (node.kind === 47 /* MethodDeclaration */) {
8899
+ const entity = analyzer.entity.ofMethodDeclaration(node);
8900
+ const kind = this.getSemanticTokenKindForNamedFunctionEntity(entity);
8964
8901
  result.push(
8965
- new SemanticToken(node.name.rangeWithoutTrivia, 6 /* Method */, new SemanticTokenModifiers().makeDeclaration().setCapitalized(this.isCapitalizedName(node.name.value)))
8966
- );
8967
- }
8968
- if (node.kind === 48 /* OperatorDeclaration */) {
8969
- result.push(
8970
- new SemanticToken(node.name.rangeWithoutTrivia, 7 /* Operator */, new SemanticTokenModifiers().makeDeclaration())
8902
+ new SemanticToken(node.name.rangeWithoutTrivia, kind, new SemanticTokenModifiers().makeDeclaration().setCapitalized(this.isCapitalizedName(node.name.value)))
8971
8903
  );
8972
8904
  }
8973
8905
  return void 0;
@@ -8984,7 +8916,7 @@ var SemanticTokensService = class {
8984
8916
  case "package":
8985
8917
  return 4 /* PackageFunction */;
8986
8918
  case "method":
8987
- return 6 /* Method */;
8919
+ return entity.getOperatorKind() === void 0 ? 6 /* Method */ : 7 /* Operator */;
8988
8920
  case "nested":
8989
8921
  return 5 /* NestedFunction */;
8990
8922
  default:
@@ -9537,11 +9469,6 @@ var ParametersSignatureHelpProvider = class {
9537
9469
  const displayParts = this.signatureContext.displayService.getFunctionDeclarationDisplayParts(func);
9538
9470
  return this.signatureContext.convertFunctionDisplayParts(displayParts);
9539
9471
  }
9540
- case "operator": {
9541
- const operator = new OperatorDeclaration_typeMember(signature.operator);
9542
- const displayParts = this.signatureContext.displayService.getOperatorDeclarationDisplayParts(operator);
9543
- return this.signatureContext.convertOperatorDisplayParts(displayParts);
9544
- }
9545
9472
  case "function-type": {
9546
9473
  const displayParts = this.signatureContext.displayService.getFunctionTypeBodyDisplayParts(signature.functionType);
9547
9474
  return this.signatureContext.convertFunctionTypeBodyDisplayParts(displayParts);
@@ -9632,16 +9559,7 @@ var SignatureInfo = class {
9632
9559
  };
9633
9560
 
9634
9561
  // source/services/source-generation/SourceGenerationService.ts
9635
- import {
9636
- transaction as transaction6,
9637
- signal as signal7,
9638
- RxMap as RxMap6,
9639
- RxObject as RxObject7,
9640
- options as options6,
9641
- reaction as reaction6,
9642
- Reentrance as Reentrance3,
9643
- Transaction as Transaction4
9644
- } from "reactronic";
9562
+ import { options as options6, reaction as reaction6, Reentrance as Reentrance3, RxMap as RxMap6, RxObject as RxObject7, signal as signal7, transaction as transaction6, Transaction as Transaction4 } from "reactronic";
9645
9563
 
9646
9564
  // source/services/workspace/ClientTrackedSourceFiles.ts
9647
9565
  import { RxMap, RxObject, signal, transaction, disposeRxObject } from "reactronic";
@@ -12425,12 +12343,17 @@ var EntityToSyntax = class {
12425
12343
  convertParameter(entity) {
12426
12344
  const tags = this.convertTags(entity.getTags());
12427
12345
  const name = this.getEntityName(entity);
12346
+ let nameTokenFlags = 0 /* None */;
12347
+ if (entity.isObjectParameter()) {
12348
+ nameTokenFlags |= 2048 /* ObjectParameterName */;
12349
+ }
12350
+ const nameIdentifier = SyntaxFactory.identifier(name, nameTokenFlags);
12428
12351
  const type = this.convertType(entity.getType());
12429
12352
  let defaultValue;
12430
12353
  if (entity.isOptional()) {
12431
12354
  defaultValue = SyntaxFactory.nullLiteral();
12432
12355
  }
12433
- return SyntaxFactory.parameterDeclaration(tags, name, type, defaultValue);
12356
+ return SyntaxFactory.parameterDeclaration(tags, nameIdentifier, type, defaultValue);
12434
12357
  }
12435
12358
  createHidingModifier(hiding) {
12436
12359
  let levelKeyword;
@@ -12873,7 +12796,6 @@ var SourceGenerationService = class extends RxObject7 {
12873
12796
  case 6 /* DereferenceOperator */:
12874
12797
  case 7 /* Constructor */:
12875
12798
  case 8 /* Destructor */:
12876
- case 9 /* Operator */:
12877
12799
  return this.checkIfEntityOfKindIsPresentInGeneratedCode(entity.getContainingEntity());
12878
12800
  case 10 /* PackageAlias */:
12879
12801
  return false;
@@ -12976,8 +12898,6 @@ var EntityFinder = class {
12976
12898
  return this.findConstructorEntity(entity);
12977
12899
  case 8 /* Destructor */:
12978
12900
  return this.findDestructorEntity(entity);
12979
- case 9 /* Operator */:
12980
- return this.findOperatorEntity(entity);
12981
12901
  case 5 /* Indexer */:
12982
12902
  return this.findIndexerEntity(entity);
12983
12903
  case 6 /* DereferenceOperator */:
@@ -13093,23 +13013,6 @@ var EntityFinder = class {
13093
13013
  return index >= 0 ? members[index] : void 0;
13094
13014
  }
13095
13015
  }
13096
- findOperatorEntity(entity) {
13097
- const containingType = this.findEntity(entity.getContainingEntity());
13098
- if (!(containingType !== void 0 && isTypeEntity(containingType) && isTypeEntityWithMembers(containingType))) {
13099
- return void 0;
13100
- }
13101
- const members = containingType.getMembers().getOperators();
13102
- if (members.length === 0) {
13103
- return void 0;
13104
- } else if (members.length === 1) {
13105
- return members[0];
13106
- } else {
13107
- const referenceData = new DataForFindingOverloadedMember([], entity.getParameters());
13108
- const membersData = members.map((m) => new DataForFindingOverloadedMember([], m.getParameters()));
13109
- const index = this.findOverloadedMemberIndex(referenceData, membersData);
13110
- return index >= 0 ? members[index] : void 0;
13111
- }
13112
- }
13113
13016
  findIndexerEntity(entity) {
13114
13017
  const containingType = this.findEntity(entity.getContainingEntity());
13115
13018
  if (!(containingType !== void 0 && isTypeEntity(containingType) && isTypeEntityWithMembers(containingType))) {
@@ -13169,8 +13072,6 @@ var EntityFinder = class {
13169
13072
  }
13170
13073
  return void 0;
13171
13074
  }
13172
- case 9 /* Operator */:
13173
- return entity.getParameters();
13174
13075
  case 0 /* Variable */:
13175
13076
  case 3 /* Getter */:
13176
13077
  case 4 /* Setter */:
@@ -13205,7 +13106,6 @@ var EntityFinder = class {
13205
13106
  case 10 /* PackageAlias */:
13206
13107
  case 12 /* Package */:
13207
13108
  case 11 /* TypeExtension */:
13208
- case 9 /* Operator */:
13209
13109
  case 13 /* TextTranslation */:
13210
13110
  return void 0;
13211
13111
  default: