@artel/artc 0.6.25254 → 0.6.25256

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 (108) hide show
  1. package/build/Cli.js +3 -3
  2. package/build/api/Api.js +18 -8
  3. package/build/api/ApiNodeJS.js +3 -3
  4. package/build/api/ApiServices.js +607 -389
  5. package/build/{chunk-JTDPRR7O.js → chunk-CTEZ5IHI.js} +2 -2
  6. package/build/{chunk-3JS4YG6N.js → chunk-ER3TEZSN.js} +14316 -16033
  7. package/build/{chunk-JV2EK6MS.js → chunk-IHZZGWNS.js} +1 -1
  8. package/build/types/analysis/AccessedFunction.d.ts +19 -6
  9. package/build/types/analysis/AnalyzedTranslationPackage.d.ts +2 -1
  10. package/build/types/analysis/Analyzer.d.ts +119 -47
  11. package/build/types/analysis/ArgumentToParameterMatchResult.d.ts +1 -4
  12. package/build/types/analysis/ArgumentsToParametersMatcher.d.ts +9 -15
  13. package/build/types/analysis/AutotypeCallExpressionMeaning.d.ts +13 -7
  14. package/build/types/analysis/BaseExpressionMeaning.d.ts +43 -15
  15. package/build/types/analysis/CallExpressionMeaning.d.ts +41 -22
  16. package/build/types/analysis/ConstructorCallResolver.d.ts +22 -0
  17. package/build/types/analysis/DiagnosticArgumentFactory.d.ts +3 -1
  18. package/build/types/analysis/DiagnosticCollector.d.ts +5 -9
  19. package/build/types/analysis/DisplayableEntity.d.ts +12 -6
  20. package/build/types/analysis/FunctionAccessResolver.d.ts +15 -0
  21. package/build/types/analysis/IdentifierExpressionMeaning.d.ts +56 -22
  22. package/build/types/analysis/IndexedAccessExpressionMeaning.d.ts +3 -2
  23. package/build/types/analysis/MemberAccessExpressionMeaning.d.ts +76 -27
  24. package/build/types/analysis/NamedTypeSpecifierResolver.d.ts +0 -1
  25. package/build/types/analysis/NodeTypeUtils.d.ts +1 -0
  26. package/build/types/analysis/ObjectExpressionMeaning.d.ts +1 -0
  27. package/build/types/analysis/OperatorAccessResolver.d.ts +9 -0
  28. package/build/types/analysis/OverloadResolver.d.ts +91 -5
  29. package/build/types/analysis/ReturnTypeInferrer.d.ts +13 -0
  30. package/build/types/analysis/SourceFileMembers.d.ts +2 -0
  31. package/build/types/analysis/SubstitutedFunction.d.ts +22 -20
  32. package/build/types/analysis/TagMeaning.d.ts +16 -15
  33. package/build/types/analysis/TypeArgumentInferrer.d.ts +49 -0
  34. package/build/types/analysis/TypeNarrower.d.ts +6 -4
  35. package/build/types/analysis/TypeOverloadResolver.d.ts +4 -2
  36. package/build/types/analysis/UserDefinableBinaryOperatorResolver.d.ts +2 -6
  37. package/build/types/analysis/UserDefinableUnaryOperatorResolver.d.ts +2 -2
  38. package/build/types/analysis/Utils.d.ts +2 -0
  39. package/build/types/analysis/Visitor.d.ts +2 -2
  40. package/build/types/analysis/index.d.ts +0 -2
  41. package/build/types/analysis/semantic-context/Declarations.d.ts +4 -4
  42. package/build/types/analysis/semantic-context/SemanticContextBase.d.ts +4 -0
  43. package/build/types/analysis/semantic-context/SemanticContextBuilder.d.ts +1 -0
  44. package/build/types/api/Api.d.ts +0 -2
  45. package/build/types/common/ArrayUtils.d.ts +5 -2
  46. package/build/types/common/Cached.d.ts +4 -0
  47. package/build/types/common/Lazy.d.ts +2 -0
  48. package/build/types/common/Query.d.ts +1 -1
  49. package/build/types/common/TreeQuery.d.ts +14 -48
  50. package/build/types/common/TreeTraversal.d.ts +1 -1
  51. package/build/types/common/index.d.ts +0 -1
  52. package/build/types/diagnostic/Diagnostic.d.ts +7 -0
  53. package/build/types/diagnostic/DiagnosticCode.d.ts +180 -173
  54. package/build/types/entities/AliasTypeEntity.d.ts +1 -0
  55. package/build/types/entities/AliasedType.d.ts +2 -2
  56. package/build/types/entities/FunctionEntity.d.ts +6 -3
  57. package/build/types/entities/FunctionTypeEntity.d.ts +2 -1
  58. package/build/types/entities/PackageAliasEntity.d.ts +2 -2
  59. package/build/types/entities/PackageMembers.d.ts +1 -0
  60. package/build/types/entities/StructuredTypeEntity.d.ts +1 -0
  61. package/build/types/entities/TypeEntityMembers.d.ts +2 -0
  62. package/build/types/entities/TypeParameterEntity.d.ts +1 -0
  63. package/build/types/entities/VariableEntity.d.ts +23 -11
  64. package/build/types/entities/VariantTypeEntity.d.ts +1 -0
  65. package/build/types/entities/index.d.ts +3 -2
  66. package/build/types/parser/CharacterCodes.d.ts +0 -8
  67. package/build/types/parser/Parser.d.ts +2 -2
  68. package/build/types/parser/TriviaInterner.d.ts +8 -0
  69. package/build/types/services/AddPropertyAssignmentService.d.ts +0 -7
  70. package/build/types/services/DisplayService.d.ts +16 -10
  71. package/build/types/services/NodeSemanticInfo.d.ts +3 -1
  72. package/build/types/services/TreeUtils.d.ts +1 -1
  73. package/build/types/services/signature-help/SignatureWithValueParameters.d.ts +9 -1
  74. package/build/types/services/signature-help/TypeParameterSignatureHelpProvider.d.ts +1 -1
  75. package/build/types/services/source-generation/EntityToSyntax.d.ts +1 -1
  76. package/build/types/tree/BaseNode.d.ts +32 -0
  77. package/build/types/tree/{green/Nodes.d.ts → Nodes.d.ts} +411 -359
  78. package/build/types/tree/{green/SyntaxToCode.d.ts → SyntaxToCode.d.ts} +1 -1
  79. package/build/types/tree/{green/Token.d.ts → Token.d.ts} +26 -10
  80. package/build/types/tree/{red/Utils.d.ts → Utils.d.ts} +4 -3
  81. package/build/types/tree/index.d.ts +10 -1
  82. package/build/types/ts-interop/Entities.d.ts +14 -0
  83. package/build/types/types/AliasType.d.ts +2 -2
  84. package/build/types/types/FunctionType.d.ts +2 -2
  85. package/build/types/types/IntersectionType.d.ts +3 -3
  86. package/build/types/types/ParameterType.d.ts +2 -2
  87. package/build/types/types/StructuredType.d.ts +2 -2
  88. package/build/types/types/Substitutions.d.ts +18 -6
  89. package/build/types/types/Type.d.ts +3 -3
  90. package/build/types/types/TypeMembers.d.ts +2 -1
  91. package/build/types/types/UnionType.d.ts +3 -3
  92. package/build/types/types/UnresolvedType.d.ts +2 -2
  93. package/build/types/types/VariantType.d.ts +2 -2
  94. package/package.json +7 -1
  95. package/build/types/analysis/ConstructorOverloadResolver.d.ts +0 -31
  96. package/build/types/analysis/FunctionOverloadResolver.d.ts +0 -21
  97. package/build/types/analysis/TargetTypeHint.d.ts +0 -5
  98. package/build/types/common/Errors.d.ts +0 -2
  99. package/build/types/tree/green/BaseNode.d.ts +0 -14
  100. package/build/types/tree/green/Utils.d.ts +0 -2
  101. package/build/types/tree/green/index.d.ts +0 -8
  102. package/build/types/tree/red/BaseNode.d.ts +0 -16
  103. package/build/types/tree/red/Internal.d.ts +0 -2
  104. package/build/types/tree/red/Nodes.d.ts +0 -2271
  105. package/build/types/tree/red/Token.d.ts +0 -30
  106. package/build/types/tree/red/index.d.ts +0 -10
  107. /package/build/types/tree/{red/NodePath.d.ts → NodePath.d.ts} +0 -0
  108. /package/build/types/tree/{green/SyntaxFactory.d.ts → SyntaxFactory.d.ts} +0 -0
@@ -1,4 +1,5 @@
1
1
  import {
2
+ AccessedFunction_entity,
2
3
  AccessedFunction_typeMember,
3
4
  AliasTypeDeclarationBody,
4
5
  Analyzer,
@@ -14,6 +15,7 @@ import {
14
15
  ConfigurationConverter,
15
16
  ConfigurationDirectoryNameSet,
16
17
  ConfigurationFileParser,
18
+ Constructor,
17
19
  ConstructorDeclaration,
18
20
  ConstructorDeclaration_entity,
19
21
  ConstructorDeclaration_typeMember,
@@ -27,6 +29,7 @@ import {
27
29
  DiagnosticCollector,
28
30
  DisplayService,
29
31
  Emitter,
32
+ ExpressionAnalysisOptions,
30
33
  FieldDeclaration,
31
34
  FieldGetterDeclaration,
32
35
  FieldOrVariantTranslation,
@@ -105,10 +108,10 @@ import {
105
108
  StatementBlock,
106
109
  StatementList,
107
110
  StructuredTypeDeclarationBody,
111
+ Substitutions,
108
112
  Tag,
109
113
  TagList,
110
114
  TargetPlatformConfig,
111
- TargetTypeHint,
112
115
  Token,
113
116
  TokenExpression,
114
117
  TopLevelTranslationList,
@@ -178,7 +181,7 @@ import {
178
181
  unwrapParenthesizedExpressions,
179
182
  visitChildren,
180
183
  yieldExecution
181
- } from "../chunk-3JS4YG6N.js";
184
+ } from "../chunk-ER3TEZSN.js";
182
185
 
183
186
  // source/services/CustomCommand.ts
184
187
  import * as ls from "vscode-languageserver";
@@ -295,7 +298,6 @@ var SourceFileEdit = class {
295
298
  // source/services/AddPropertyAssignmentService.ts
296
299
  var AddPropertyAssignmentService = class {
297
300
  createEditWithAssignment(sourceFile, assignmentNode, value, propertyName) {
298
- let result;
299
301
  let leftValueText;
300
302
  if (propertyName !== void 0) {
301
303
  if (assignmentNode.left.kind !== 76 /* MemberAccessExpression */) {
@@ -313,51 +315,28 @@ var AddPropertyAssignmentService = class {
313
315
  );
314
316
  }
315
317
  const reassignmentText = `${leftValueText} = ${value}`;
316
- const subprogramBody = this.ifShouldBeAssignedAtTheEndOfSubprogramThenBody(assignmentNode);
317
- if (subprogramBody !== void 0) {
318
- const lastStatement = subprogramBody.expressionOrStatementList.kind === 93 /* StatementList */ ? subprogramBody.expressionOrStatementList?.statements.last() : subprogramBody.expressionOrStatementList;
319
- let editRangeStart;
320
- let indentationText;
321
- if (lastStatement !== void 0) {
322
- editRangeStart = lastStatement.rangeWithoutTrivia.end;
323
- const statementStartCharacter = sourceFile.getPositionAt(lastStatement.rangeWithoutTrivia.start).character;
324
- const newLine = this.detectNewLine(sourceFile.getSourceText());
325
- indentationText = `${newLine}${" ".repeat(statementStartCharacter)}`;
326
- } else {
327
- editRangeStart = subprogramBody.openBraceToken.rangeWithoutTrivia.end;
328
- indentationText = "";
329
- }
330
- const editText = `${indentationText}${reassignmentText}`;
331
- result = new SourceFileEdit(sourceFile, Range.empty(editRangeStart), editText);
332
- } else {
333
- const assignmentStartPosition = sourceFile.getPositionAt(assignmentNode.rangeWithoutTrivia.start);
334
- const newLine = this.detectNewLine(sourceFile.getSourceText());
335
- const indentationText = `${newLine}${" ".repeat(assignmentStartPosition.character)}`;
336
- const editText = `${indentationText}${reassignmentText}`;
337
- result = new SourceFileEdit(sourceFile, Range.empty(assignmentNode.rangeWithoutTrivia.end), editText);
318
+ const subprogramBody = this.getContainingSubprogram(assignmentNode)?.block;
319
+ if (subprogramBody === void 0) {
320
+ return void 0;
338
321
  }
339
- return result;
340
- }
341
- /**
342
- * Метод определяет, где нужно расположить присваивание нового значение: сразу после присваивания предыдущего
343
- * значения, или в конце подпрограммы.
344
- * Если предыдущее присваивание не вложено ни в какие конструкции ветвления, присваивание нового значение можно
345
- * расположить сразу после. Иначе присваивание необходимо расположить в конце подпрограммы (после всех ветвлений).
346
- */
347
- ifShouldBeAssignedAtTheEndOfSubprogramThenBody(node) {
348
- const parent = node.parent.parent;
349
- switch (parent.kind) {
350
- case 94 /* StatementBlock */:
351
- return this.getContainingSubprogram(parent)?.block;
352
- case 95 /* FunctionBlock */:
353
- return void 0;
354
- default:
355
- Debug.never(parent);
322
+ const lastStatement = subprogramBody.expressionOrStatementList.kind === 93 /* StatementList */ ? subprogramBody.expressionOrStatementList?.statements.last() : subprogramBody.expressionOrStatementList;
323
+ let editRangeStart;
324
+ let indentationText;
325
+ if (lastStatement !== void 0) {
326
+ editRangeStart = lastStatement.rangeWithoutTrivia.end;
327
+ const statementStartCharacter = sourceFile.getPositionAt(lastStatement.rangeWithoutTrivia.start).character;
328
+ const newLine = this.detectNewLine(sourceFile.getSourceText());
329
+ indentationText = `${newLine}${" ".repeat(statementStartCharacter)}`;
330
+ } else {
331
+ editRangeStart = subprogramBody.openBraceToken.rangeWithoutTrivia.end;
332
+ indentationText = "";
356
333
  }
334
+ const editText = `${indentationText}${reassignmentText}`;
335
+ return new SourceFileEdit(sourceFile, Range.empty(editRangeStart), editText);
357
336
  }
358
337
  getContainingSubprogram(node) {
359
338
  let parent = node.parent;
360
- while (parent !== void 0 && !isSubprogramDeclaration(parent)) {
339
+ while (parent !== void 0 && !NodeTypeUtils.isSubprogramDeclarationOrLiteral(parent)) {
361
340
  parent = parent.parent;
362
341
  }
363
342
  return parent;
@@ -366,40 +345,14 @@ var AddPropertyAssignmentService = class {
366
345
  return text.includes("\r\n") ? "\r\n" : "\n";
367
346
  }
368
347
  };
369
- function isSubprogramDeclaration(node) {
370
- switch (node.kind) {
371
- case 23 /* PackageConstructorDeclaration */:
372
- case 24 /* PackageEntryPointDeclaration */:
373
- case 25 /* PackageFunctionDeclaration */:
374
- case 34 /* PackageVariableGetterDeclaration */:
375
- case 35 /* PackageVariableSetterDeclaration */:
376
- case 43 /* ConstructorDeclaration */:
377
- case 44 /* DestructorDeclaration */:
378
- case 45 /* IndexedElementGetterDeclaration */:
379
- case 46 /* IndexedElementSetterDeclaration */:
380
- case 48 /* DereferencedVariableGetterDeclaration */:
381
- case 49 /* DereferencedVariableSetterDeclaration */:
382
- case 50 /* MethodDeclaration */:
383
- case 53 /* FieldGetterDeclaration */:
384
- case 54 /* FieldSetterDeclaration */:
385
- case 56 /* NestedFunctionDeclaration */:
386
- case 66 /* FunctionBlockLiteral */:
387
- case 65 /* FunctionLiteral */:
388
- return true;
389
- default:
390
- Debug.typeIsAssignableTo();
391
- Debug.typeIsAssignableTo();
392
- return false;
393
- }
394
- }
395
348
 
396
- // source/tree/green/SyntaxFactory.ts
349
+ // source/tree/SyntaxFactory.ts
397
350
  var SyntaxFactory = class {
398
351
  static sourceFile(packageImportDirectives, declarations) {
399
- const packageImportDirectiveList = new PackageImportDirectiveList(packageImportDirectives);
400
- const declarationList = new PackageMemberDeclarationList(declarations);
352
+ const packageImportDirectiveList = new PackageImportDirectiveList(packageImportDirectives, void 0);
353
+ const declarationList = new PackageMemberDeclarationList(declarations, void 0);
401
354
  const endOfFileToken = this.token(1 /* EndOfFile */);
402
- return new SourceFile(packageImportDirectiveList, declarationList, endOfFileToken, []);
355
+ return new SourceFile(packageImportDirectiveList, declarationList, endOfFileToken, [], void 0);
403
356
  }
404
357
  static singlePackageImportDirective(alias, pathSegments) {
405
358
  let aliasIdentifier;
@@ -409,18 +362,18 @@ var SyntaxFactory = class {
409
362
  equalsToken = this.token(58 /* Equals */);
410
363
  }
411
364
  const packageName = this.packageName(pathSegments);
412
- const packageImport = new PackageImport(aliasIdentifier, equalsToken, packageName);
365
+ const packageImport = new PackageImport(aliasIdentifier, equalsToken, packageName, void 0);
413
366
  const importKeyword = this.keyword(18 /* Import */);
414
- return new SinglePackageImportDirective(importKeyword, packageImport);
367
+ return new SinglePackageImportDirective(importKeyword, packageImport, void 0);
415
368
  }
416
369
  static packageName(segments) {
417
370
  const segmentIdentifiers = segments.map((s) => this.createIdentifier(s));
418
371
  const packageNameParts = this.createTokenSeparatedElements(segmentIdentifiers, 27 /* Dot */);
419
- return new PackageName(packageNameParts);
372
+ return new PackageName(packageNameParts, void 0);
420
373
  }
421
374
  static packageAliasTypeDeclaration(tags, modifiers, name, typeParameters, body) {
422
- const tagList = new TagList(tags);
423
- const modifierList = new ModifierList(modifiers);
375
+ const tagList = new TagList(tags, void 0);
376
+ const modifierList = new ModifierList(modifiers, void 0);
424
377
  const typeKeyword = this.keyword(16 /* Type */);
425
378
  const nameIdentifier = this.createIdentifier(name);
426
379
  const typeParameterClause = this.createTypeParameterClause(typeParameters);
@@ -432,28 +385,30 @@ var SyntaxFactory = class {
432
385
  nameIdentifier,
433
386
  typeParameterClause,
434
387
  equalsToken,
435
- body
388
+ body,
389
+ void 0
436
390
  );
437
391
  }
438
392
  static aliasTypeDeclarationBody(aliasedTypeSpecifier, members) {
439
393
  const memberBlock = members !== void 0 ? this.typeMemberDeclarationBlock(members) : void 0;
440
- return new AliasTypeDeclarationBody(aliasedTypeSpecifier, memberBlock);
394
+ return new AliasTypeDeclarationBody(aliasedTypeSpecifier, memberBlock, void 0);
441
395
  }
442
396
  static packageMemberGroupDeclaration(tags, modifiers, declarations) {
443
- const tagList = new TagList(tags);
444
- const modifierList = new ModifierList(modifiers);
445
- const declarationList = new PackageMemberDeclarationList(declarations);
397
+ const tagList = new TagList(tags, void 0);
398
+ const modifierList = new ModifierList(modifiers, void 0);
399
+ const declarationList = new PackageMemberDeclarationList(declarations, void 0);
446
400
  return new PackageMemberGroupDeclaration(
447
401
  tagList,
448
402
  modifierList,
449
403
  this.token(44 /* OpenBrace */),
450
404
  declarationList,
451
- this.token(21 /* CloseBrace */)
405
+ this.token(21 /* CloseBrace */),
406
+ void 0
452
407
  );
453
408
  }
454
409
  static packageFunctionDeclaration(tags, modifiers, name, typeParameters, parameters, returnTypeSpecifier, body) {
455
- const tagList = new TagList(tags);
456
- const modifierList = new ModifierList(modifiers);
410
+ const tagList = new TagList(tags, void 0);
411
+ const modifierList = new ModifierList(modifiers, void 0);
457
412
  const functionKeyword = this.keyword(12 /* Function */);
458
413
  const nameIdentifier = this.createIdentifier(name);
459
414
  const typeParameterClause = this.createTypeParameterClause(typeParameters);
@@ -467,12 +422,13 @@ var SyntaxFactory = class {
467
422
  typeParameterClause,
468
423
  parameterClause,
469
424
  returnTypeAnnotation,
470
- body
425
+ body,
426
+ void 0
471
427
  );
472
428
  }
473
429
  static packageFunctionTypeDeclaration(tags, modifiers, name, typeParameters, body) {
474
- const tagList = new TagList(tags);
475
- const modifierList = new ModifierList(modifiers);
430
+ const tagList = new TagList(tags, void 0);
431
+ const modifierList = new ModifierList(modifiers, void 0);
476
432
  const typeKeyword = this.keyword(16 /* Type */);
477
433
  const nameIdentifier = this.createIdentifier(name);
478
434
  const typeParameterClause = this.createTypeParameterClause(typeParameters);
@@ -484,18 +440,25 @@ var SyntaxFactory = class {
484
440
  nameIdentifier,
485
441
  typeParameterClause,
486
442
  equalsToken,
487
- body
443
+ body,
444
+ void 0
488
445
  );
489
446
  }
490
447
  static functionTypeDeclarationBody(parameters, returnTypeSpecifier) {
491
448
  const functionKeyword = this.keyword(12 /* Function */);
492
449
  const parameterClause = this.parameterClause(parameters);
493
450
  const returnTypeAnnotation = this.createTypeAnnotation(returnTypeSpecifier);
494
- return new FunctionTypeDeclarationBody(void 0, functionKeyword, parameterClause, returnTypeAnnotation);
451
+ return new FunctionTypeDeclarationBody(
452
+ void 0,
453
+ functionKeyword,
454
+ parameterClause,
455
+ returnTypeAnnotation,
456
+ void 0
457
+ );
495
458
  }
496
459
  static packageStructuredTypeDeclaration(tags, modifiers, name, typeParameters, body) {
497
- const tagList = new TagList(tags);
498
- const modifierList = new ModifierList(modifiers);
460
+ const tagList = new TagList(tags, void 0);
461
+ const modifierList = new ModifierList(modifiers, void 0);
499
462
  const typeKeyword = this.keyword(16 /* Type */);
500
463
  const nameIdentifier = this.createIdentifier(name);
501
464
  const typeParameterClause = this.createTypeParameterClause(typeParameters);
@@ -507,22 +470,24 @@ var SyntaxFactory = class {
507
470
  nameIdentifier,
508
471
  typeParameterClause,
509
472
  equalsToken,
510
- body
473
+ body,
474
+ void 0
511
475
  );
512
476
  }
513
477
  static structuredTypeDeclarationBody(structuredTypeKind, baseTypes, members) {
514
478
  const structuredTypeKindKeyword = this.keyword(structuredTypeKind);
515
- const baseTypeList = baseTypes !== void 0 ? new BaseTypeList(this.createTokenSeparatedElements(baseTypes, 25 /* Comma */)) : void 0;
479
+ const baseTypeList = baseTypes !== void 0 ? new BaseTypeList(this.createTokenSeparatedElements(baseTypes, 25 /* Comma */), void 0) : void 0;
516
480
  const memberBlock = this.typeMemberDeclarationBlock(members);
517
481
  return new StructuredTypeDeclarationBody(
518
482
  structuredTypeKindKeyword,
519
483
  baseTypeList,
520
- memberBlock
484
+ memberBlock,
485
+ void 0
521
486
  );
522
487
  }
523
488
  static packageVariableDeclaration(tags, modifiers, name, typeSpecifier, initializer) {
524
- const tagList = new TagList(tags);
525
- const modifierList = new ModifierList(modifiers);
489
+ const tagList = new TagList(tags, void 0);
490
+ const modifierList = new ModifierList(modifiers, void 0);
526
491
  const nameIdentifier = this.createIdentifier(name);
527
492
  const typeAnnotation = this.createTypeAnnotation(typeSpecifier);
528
493
  let equalsToken;
@@ -535,12 +500,13 @@ var SyntaxFactory = class {
535
500
  nameIdentifier,
536
501
  typeAnnotation,
537
502
  equalsToken,
538
- initializer
503
+ initializer,
504
+ void 0
539
505
  );
540
506
  }
541
507
  static packageVariableGetterDeclaration(tags, modifiers, name, typeSpecifier, body) {
542
- const tagList = new TagList(tags);
543
- const modifierList = new ModifierList(modifiers);
508
+ const tagList = new TagList(tags, void 0);
509
+ const modifierList = new ModifierList(modifiers, void 0);
544
510
  const getKeyword = this.keyword(58 /* Get */);
545
511
  const nameIdentifier = this.createIdentifier(name);
546
512
  const typeAnnotation = this.typeAnnotation(typeSpecifier);
@@ -550,19 +516,20 @@ var SyntaxFactory = class {
550
516
  getKeyword,
551
517
  nameIdentifier,
552
518
  typeAnnotation,
553
- body
519
+ body,
520
+ void 0
554
521
  );
555
522
  }
556
523
  static packageVariableSetterDeclaration(tags, modifiers, name, body) {
557
- const tagList = new TagList(tags);
558
- const modifierList = new ModifierList(modifiers);
524
+ const tagList = new TagList(tags, void 0);
525
+ const modifierList = new ModifierList(modifiers, void 0);
559
526
  const setKeyword = this.keyword(59 /* Set */);
560
527
  const nameIdentifier = this.createIdentifier(name);
561
- return new PackageVariableSetterDeclaration(tagList, modifierList, setKeyword, nameIdentifier, body);
528
+ return new PackageVariableSetterDeclaration(tagList, modifierList, setKeyword, nameIdentifier, body, void 0);
562
529
  }
563
530
  static packageVariantTypeDeclaration(tags, modifiers, name, typeParameters, body) {
564
- const tagList = new TagList(tags);
565
- const modifierList = new ModifierList(modifiers);
531
+ const tagList = new TagList(tags, void 0);
532
+ const modifierList = new ModifierList(modifiers, void 0);
566
533
  const typeKeyword = this.keyword(16 /* Type */);
567
534
  const nameIdentifier = this.createIdentifier(name);
568
535
  const typeParameterClause = this.createTypeParameterClause(typeParameters);
@@ -574,17 +541,18 @@ var SyntaxFactory = class {
574
541
  nameIdentifier,
575
542
  typeParameterClause,
576
543
  equalsToken,
577
- body
544
+ body,
545
+ void 0
578
546
  );
579
547
  }
580
548
  static variantTypeDeclarationBody(members) {
581
549
  const variantKeyword = this.keyword(6 /* Variant */);
582
550
  const memberBlock = this.typeMemberDeclarationBlock(members);
583
- return new VariantTypeDeclarationBody(variantKeyword, void 0, memberBlock);
551
+ return new VariantTypeDeclarationBody(variantKeyword, void 0, memberBlock, void 0);
584
552
  }
585
553
  static fieldDeclaration(tags, modifiers, name, typeSpecifier, initializer) {
586
- const tagList = new TagList(tags);
587
- const modifierList = new ModifierList(modifiers);
554
+ const tagList = new TagList(tags, void 0);
555
+ const modifierList = new ModifierList(modifiers, void 0);
588
556
  const nameIdentifier = this.createIdentifier(name);
589
557
  const typeAnnotation = this.createTypeAnnotation(typeSpecifier);
590
558
  let equalsToken;
@@ -597,12 +565,13 @@ var SyntaxFactory = class {
597
565
  nameIdentifier,
598
566
  typeAnnotation,
599
567
  equalsToken,
600
- initializer
568
+ initializer,
569
+ void 0
601
570
  );
602
571
  }
603
572
  static fieldGetterDeclaration(tags, modifiers, name, typeSpecifier, body) {
604
- const tagList = new TagList(tags);
605
- const modifierList = new ModifierList(modifiers);
573
+ const tagList = new TagList(tags, void 0);
574
+ const modifierList = new ModifierList(modifiers, void 0);
606
575
  const getKeyword = this.keyword(58 /* Get */);
607
576
  const nameIdentifier = this.createIdentifier(name);
608
577
  const typeAnnotation = this.typeAnnotation(typeSpecifier);
@@ -612,19 +581,20 @@ var SyntaxFactory = class {
612
581
  getKeyword,
613
582
  nameIdentifier,
614
583
  typeAnnotation,
615
- body
584
+ body,
585
+ void 0
616
586
  );
617
587
  }
618
588
  static fieldSetterDeclaration(tags, modifiers, name, body) {
619
- const tagList = new TagList(tags);
620
- const modifierList = new ModifierList(modifiers);
589
+ const tagList = new TagList(tags, void 0);
590
+ const modifierList = new ModifierList(modifiers, void 0);
621
591
  const setKeyword = this.keyword(59 /* Set */);
622
592
  const nameIdentifier = this.createIdentifier(name);
623
- return new FieldSetterDeclaration(tagList, modifierList, setKeyword, nameIdentifier, body);
593
+ return new FieldSetterDeclaration(tagList, modifierList, setKeyword, nameIdentifier, body, void 0);
624
594
  }
625
595
  static methodDeclaration(tags, modifiers, name, typeParameters, parameters, returnTypeSpecifier, body) {
626
- const tagList = new TagList(tags);
627
- const modifierList = new ModifierList(modifiers);
596
+ const tagList = new TagList(tags, void 0);
597
+ const modifierList = new ModifierList(modifiers, void 0);
628
598
  const functionKeyword = this.keyword(12 /* Function */);
629
599
  const nameIdentifier = this.createIdentifier(name);
630
600
  const typeParameterClause = this.createTypeParameterClause(typeParameters);
@@ -638,26 +608,27 @@ var SyntaxFactory = class {
638
608
  typeParameterClause,
639
609
  parameterClause,
640
610
  returnTypeAnnotation,
641
- body
611
+ body,
612
+ void 0
642
613
  );
643
614
  }
644
615
  static constructorDeclaration(tags, modifiers, parameters, body) {
645
- const tagList = new TagList(tags);
646
- const modifierList = new ModifierList(modifiers);
616
+ const tagList = new TagList(tags, void 0);
617
+ const modifierList = new ModifierList(modifiers, void 0);
647
618
  const creationKeyword = this.keyword(31 /* Creation */);
648
619
  const parameterClause = this.parameterClause(parameters);
649
- return new ConstructorDeclaration(tagList, modifierList, creationKeyword, parameterClause, body);
620
+ return new ConstructorDeclaration(tagList, modifierList, creationKeyword, parameterClause, body, void 0);
650
621
  }
651
622
  static destructorDeclaration(tags, modifiers, parameters, body) {
652
- const tagList = new TagList(tags);
653
- const modifierList = new ModifierList(modifiers);
623
+ const tagList = new TagList(tags, void 0);
624
+ const modifierList = new ModifierList(modifiers, void 0);
654
625
  const destructionKeyword = this.keyword(47 /* Destruction */);
655
626
  const parameterClause = this.parameterClause(parameters);
656
- return new DestructorDeclaration(tagList, modifierList, destructionKeyword, parameterClause, body);
627
+ return new DestructorDeclaration(tagList, modifierList, destructionKeyword, parameterClause, body, void 0);
657
628
  }
658
629
  static indexedElementGetterDeclaration(tags, modifiers, parameters, typeSpecifier, body) {
659
- const tagList = new TagList(tags);
660
- const modifierList = new ModifierList(modifiers);
630
+ const tagList = new TagList(tags, void 0);
631
+ const modifierList = new ModifierList(modifiers, void 0);
661
632
  const getKeyword = this.keyword(58 /* Get */);
662
633
  const parameterClause = this.indexParameterClause(parameters);
663
634
  const typeAnnotation = this.typeAnnotation(typeSpecifier);
@@ -667,90 +638,95 @@ var SyntaxFactory = class {
667
638
  getKeyword,
668
639
  parameterClause,
669
640
  typeAnnotation,
670
- body
641
+ body,
642
+ void 0
671
643
  );
672
644
  }
673
645
  static indexedElementSetterDeclaration(tags, modifiers, parameters, body) {
674
- const tagList = new TagList(tags);
675
- const modifierList = new ModifierList(modifiers);
646
+ const tagList = new TagList(tags, void 0);
647
+ const modifierList = new ModifierList(modifiers, void 0);
676
648
  const getKeyword = this.keyword(59 /* Set */);
677
649
  const parameterClause = this.indexParameterClause(parameters);
678
- return new IndexedElementSetterDeclaration(tagList, modifierList, getKeyword, parameterClause, body);
650
+ return new IndexedElementSetterDeclaration(tagList, modifierList, getKeyword, parameterClause, body, void 0);
679
651
  }
680
652
  static typeMemberGroupDeclaration(tags, modifiers, members) {
681
- const tagList = new TagList(tags);
682
- const modifierList = new ModifierList(modifiers);
653
+ const tagList = new TagList(tags, void 0);
654
+ const modifierList = new ModifierList(modifiers, void 0);
683
655
  const memberBlock = this.typeMemberDeclarationBlock(members);
684
- return new TypeMemberGroupDeclaration(tagList, modifierList, memberBlock);
656
+ return new TypeMemberGroupDeclaration(tagList, modifierList, memberBlock, void 0);
685
657
  }
686
658
  static typeMemberDeclarationBlock(members) {
687
659
  return new TypeMemberDeclarationBlock(
688
660
  this.token(44 /* OpenBrace */),
689
- new TypeMemberDeclarationList(members),
690
- this.token(21 /* CloseBrace */)
661
+ new TypeMemberDeclarationList(members, void 0),
662
+ this.token(21 /* CloseBrace */),
663
+ void 0
691
664
  );
692
665
  }
693
666
  static variantDeclaration(tags, modifiers, name, value) {
694
- const tagList = new TagList(tags);
695
- const modifierList = new ModifierList(modifiers);
667
+ const tagList = new TagList(tags, void 0);
668
+ const modifierList = new ModifierList(modifiers, void 0);
696
669
  const nameIdentifier = this.createIdentifier(name);
697
670
  let equalsToken;
698
671
  if (value !== void 0) {
699
672
  equalsToken = this.token(58 /* Equals */);
700
673
  }
701
- return new VariantDeclaration(tagList, modifierList, nameIdentifier, equalsToken, value);
674
+ return new VariantDeclaration(tagList, modifierList, nameIdentifier, equalsToken, value, void 0);
702
675
  }
703
676
  static parameterClause(parameters) {
704
677
  return new ParameterClause(
705
678
  this.token(45 /* OpenParenthesis */),
706
- new ParameterList(this.createTokenSeparatedElements(parameters, 25 /* Comma */)),
707
- this.token(22 /* CloseParenthesis */)
679
+ new ParameterList(this.createTokenSeparatedElements(parameters, 25 /* Comma */), void 0),
680
+ this.token(22 /* CloseParenthesis */),
681
+ void 0
708
682
  );
709
683
  }
710
684
  static indexParameterClause(indexParameters) {
711
685
  return new IndexParameterClause(
712
686
  this.token(46 /* OpenSquareBracket */),
713
- new ParameterList(this.createTokenSeparatedElements(indexParameters, 25 /* Comma */)),
714
- this.token(23 /* CloseSquareBracket */)
687
+ new ParameterList(this.createTokenSeparatedElements(indexParameters, 25 /* Comma */), void 0),
688
+ this.token(23 /* CloseSquareBracket */),
689
+ void 0
715
690
  );
716
691
  }
717
692
  static namedTypeSpecifier(name, typeArguments) {
718
693
  const qualifiedNameIdentifiers = typeof name === "string" ? [this.createIdentifier(name)] : name.map((s) => this.createIdentifier(s));
719
694
  const qualifiedName = new QualifiedName(
720
- this.createTokenSeparatedElements(qualifiedNameIdentifiers, 27 /* Dot */)
695
+ this.createTokenSeparatedElements(qualifiedNameIdentifiers, 27 /* Dot */),
696
+ void 0
721
697
  );
722
698
  let typeArgumentClause;
723
699
  if (typeArguments !== void 0) {
724
700
  typeArgumentClause = this.typeArgumentClause(typeArguments);
725
701
  }
726
- return new NamedTypeSpecifier(qualifiedName, typeArgumentClause);
702
+ return new NamedTypeSpecifier(qualifiedName, typeArgumentClause, void 0);
727
703
  }
728
704
  static unionTypeSpecifier(typeSpecifiers) {
729
- return new UnionTypeSpecifier(this.createTokenSeparatedElements(typeSpecifiers, 18 /* Bar */));
705
+ return new UnionTypeSpecifier(this.createTokenSeparatedElements(typeSpecifiers, 18 /* Bar */), void 0);
730
706
  }
731
707
  static intersectionTypeSpecifier(typeSpecifiers) {
732
708
  return new IntersectionTypeSpecifier(this.createTokenSeparatedElements(
733
709
  typeSpecifiers,
734
710
  11 /* Ampersand */
735
- ));
711
+ ), void 0);
736
712
  }
737
713
  static nullableTypeSpecifier(typeSpecifier) {
738
714
  const questionToken = this.token(50 /* Question */);
739
- return new NullableTypeSpecifier(typeSpecifier, questionToken);
715
+ return new NullableTypeSpecifier(typeSpecifier, questionToken, void 0);
740
716
  }
741
717
  static parenthesizedTypeSpecifier(typeSpecifier) {
742
718
  const openParenthesisToken = this.token(45 /* OpenParenthesis */);
743
719
  const closeParenthesisToken = this.token(22 /* CloseParenthesis */);
744
- return new ParenthesizedTypeSpecifier(openParenthesisToken, typeSpecifier, closeParenthesisToken);
720
+ return new ParenthesizedTypeSpecifier(openParenthesisToken, typeSpecifier, closeParenthesisToken, void 0);
745
721
  }
746
722
  static anonymousStructuredTypeSpecifier(body) {
747
- return new AnonymousTypeSpecifier(new AnonymousStructuredTypeDeclaration(body));
723
+ return new AnonymousTypeSpecifier(new AnonymousStructuredTypeDeclaration(body, void 0), void 0);
748
724
  }
749
725
  static anonymousFunctionTypeSpecifier(body) {
750
- return new AnonymousTypeSpecifier(new AnonymousFunctionTypeDeclaration(body));
726
+ return new AnonymousTypeSpecifier(new AnonymousFunctionTypeDeclaration(body, void 0), void 0);
751
727
  }
752
728
  static anonymousVariantTypeSpecifier(body) {
753
- return new AnonymousTypeSpecifier(new AnonymousVariantTypeDeclaration(body));
729
+ return new AnonymousTypeSpecifier(new AnonymousVariantTypeDeclaration(body, void 0), void 0);
754
730
  }
755
731
  static typeParameterDeclaration(name, constraint, defaultType) {
756
732
  const nameIdentifier = this.createIdentifier(name);
@@ -762,23 +738,31 @@ var SyntaxFactory = class {
762
738
  if (defaultType !== void 0) {
763
739
  equalsToken = this.token(58 /* Equals */);
764
740
  }
765
- return new TypeParameterDeclaration(nameIdentifier, colonToken, constraint, equalsToken, defaultType);
741
+ return new TypeParameterDeclaration(
742
+ nameIdentifier,
743
+ colonToken,
744
+ constraint,
745
+ equalsToken,
746
+ defaultType,
747
+ void 0
748
+ );
766
749
  }
767
750
  static parameterDeclaration(tags, name, typeSpecifier, defaultValue) {
768
- const tagList = new TagList(tags);
751
+ const tagList = new TagList(tags, void 0);
769
752
  const nameIdentifier = this.createIdentifier(name);
770
753
  const typeAnnotation = this.createTypeAnnotation(typeSpecifier);
771
754
  let equalsToken;
772
755
  if (defaultValue !== void 0) {
773
756
  equalsToken = this.token(58 /* Equals */);
774
757
  }
775
- return new ParameterDeclaration(tagList, nameIdentifier, typeAnnotation, equalsToken, defaultValue);
758
+ return new ParameterDeclaration(tagList, nameIdentifier, typeAnnotation, equalsToken, defaultValue, void 0);
776
759
  }
777
760
  static tag(name, typeArguments, args) {
778
761
  const hashSignToken = this.token(36 /* HashSign */);
779
762
  const qualifiedNameIdentifiers = typeof name === "string" ? [this.createIdentifier(name)] : name.map((s) => this.createIdentifier(s));
780
763
  const qualifiedName = new QualifiedName(
781
- this.createTokenSeparatedElements(qualifiedNameIdentifiers, 27 /* Dot */)
764
+ this.createTokenSeparatedElements(qualifiedNameIdentifiers, 27 /* Dot */),
765
+ void 0
782
766
  );
783
767
  const typeArgumentClause = typeArguments !== void 0 ? this.typeArgumentClause(typeArguments) : void 0;
784
768
  let openParenthesisToken;
@@ -787,7 +771,8 @@ var SyntaxFactory = class {
787
771
  if (args !== void 0) {
788
772
  openParenthesisToken = this.token(45 /* OpenParenthesis */);
789
773
  argumentList = new ArgumentList(
790
- this.createTokenSeparatedElements(args, 25 /* Comma */)
774
+ this.createTokenSeparatedElements(args, 25 /* Comma */),
775
+ void 0
791
776
  );
792
777
  closeParenthesisToken = this.token(22 /* CloseParenthesis */);
793
778
  }
@@ -797,7 +782,8 @@ var SyntaxFactory = class {
797
782
  typeArgumentClause,
798
783
  openParenthesisToken,
799
784
  argumentList,
800
- closeParenthesisToken
785
+ closeParenthesisToken,
786
+ void 0
801
787
  );
802
788
  }
803
789
  static modifier(value, level) {
@@ -810,48 +796,49 @@ var SyntaxFactory = class {
810
796
  levelKeyword = this.keyword(level);
811
797
  closeParenthesisToken = this.token(22 /* CloseParenthesis */);
812
798
  }
813
- return new Modifier(valueKeyword, openParenthesisToken, levelKeyword, closeParenthesisToken);
799
+ return new Modifier(valueKeyword, openParenthesisToken, levelKeyword, closeParenthesisToken, void 0);
814
800
  }
815
801
  static typeArgumentClause(typeArguments) {
816
802
  const lessThanToken = this.token(37 /* LessThan */);
817
803
  const typeArgumentList = new TypeArgumentList(
818
- this.createTokenSeparatedElements(typeArguments, 25 /* Comma */)
804
+ this.createTokenSeparatedElements(typeArguments, 25 /* Comma */),
805
+ void 0
819
806
  );
820
807
  const greaterThanToken = this.token(34 /* GreaterThan */);
821
- return new TypeArgumentClause(lessThanToken, typeArgumentList, greaterThanToken);
808
+ return new TypeArgumentClause(lessThanToken, typeArgumentList, greaterThanToken, void 0);
822
809
  }
823
810
  static typeAnnotation(typeSpecifier) {
824
- return new TypeAnnotation(this.token(24 /* Colon */), typeSpecifier);
811
+ return new TypeAnnotation(this.token(24 /* Colon */), typeSpecifier, void 0);
825
812
  }
826
813
  static statementBlock(statements) {
827
814
  const openBraceToken = this.token(44 /* OpenBrace */);
828
- const statementList = new StatementList(statements);
815
+ const statementList = new StatementList(statements, void 0);
829
816
  const closeBraceToken = this.token(21 /* CloseBrace */);
830
- return new StatementBlock(openBraceToken, statementList, closeBraceToken);
817
+ return new StatementBlock(openBraceToken, statementList, closeBraceToken, void 0);
831
818
  }
832
819
  static functionExpressionBlock(expression) {
833
820
  const openBraceToken = this.token(44 /* OpenBrace */);
834
821
  const closeBraceToken = this.token(21 /* CloseBrace */);
835
- return new FunctionBlock(openBraceToken, expression, closeBraceToken);
822
+ return new FunctionBlock(openBraceToken, expression, closeBraceToken, void 0);
836
823
  }
837
824
  static functionStatementBlock(statements) {
838
825
  const openBraceToken = this.token(44 /* OpenBrace */);
839
- const statementList = new StatementList(statements);
826
+ const statementList = new StatementList(statements, void 0);
840
827
  const closeBraceToken = this.token(21 /* CloseBrace */);
841
- return new FunctionBlock(openBraceToken, statementList, closeBraceToken);
828
+ return new FunctionBlock(openBraceToken, statementList, closeBraceToken, void 0);
842
829
  }
843
830
  static nullLiteral() {
844
- return new KeywordExpression(this.keyword(57 /* Null */));
831
+ return new KeywordExpression(this.keyword(57 /* Null */), void 0);
845
832
  }
846
833
  static integerLiteral(value) {
847
- return new TokenExpression(this.token(2 /* IntegerLiteral */, value.toString()));
834
+ return new TokenExpression(this.token(2 /* IntegerLiteral */, value.toString()), void 0);
848
835
  }
849
836
  static translationsDeclaration(translations) {
850
- const tagList = new TagList([]);
851
- const modifierList = new ModifierList([]);
837
+ const tagList = new TagList([], void 0);
838
+ const modifierList = new ModifierList([], void 0);
852
839
  const translationsKeyword = this.keyword(55 /* Translations */);
853
840
  const openBraceToken = this.token(44 /* OpenBrace */);
854
- const translationList = new TopLevelTranslationList(translations);
841
+ const translationList = new TopLevelTranslationList(translations, void 0);
855
842
  const closeBraceToken = this.token(21 /* CloseBrace */);
856
843
  return new TranslationsDeclaration(
857
844
  tagList,
@@ -859,14 +846,20 @@ var SyntaxFactory = class {
859
846
  translationsKeyword,
860
847
  openBraceToken,
861
848
  translationList,
862
- closeBraceToken
849
+ closeBraceToken,
850
+ void 0
863
851
  );
864
852
  }
865
853
  static packageVariableTranslation(sourceName, translatedName) {
866
854
  const sourceNameIdentifier = this.createIdentifier(sourceName);
867
855
  const minusGreaterThanToken = this.token(43 /* MinusGreaterThan */);
868
856
  const translatedNameIdentifier = this.createIdentifier(translatedName);
869
- return new PackageVariableTranslationDeclaration(sourceNameIdentifier, minusGreaterThanToken, translatedNameIdentifier);
857
+ return new PackageVariableTranslationDeclaration(
858
+ sourceNameIdentifier,
859
+ minusGreaterThanToken,
860
+ translatedNameIdentifier,
861
+ void 0
862
+ );
870
863
  }
871
864
  static packageFunctionTranslation(sourceName, sourceTypeParameters, sourceParameters, translatedName, translatedTypeParameters, translatedParameters) {
872
865
  const functionKeyword = this.keyword(12 /* Function */);
@@ -885,7 +878,8 @@ var SyntaxFactory = class {
885
878
  minusGreaterThanToken,
886
879
  translatedNameIdentifier,
887
880
  translatedTypeParameterClause,
888
- translatedParameterClause
881
+ translatedParameterClause,
882
+ void 0
889
883
  );
890
884
  }
891
885
  static typeTranslation(sourceName, sourceTypeParameters, translatedName, translatedTypeParameters, members) {
@@ -900,7 +894,7 @@ var SyntaxFactory = class {
900
894
  let closeBraceToken;
901
895
  if (members !== void 0) {
902
896
  openBraceToken = this.token(44 /* OpenBrace */);
903
- memberList = new TypeMemberTranslationList(members);
897
+ memberList = new TypeMemberTranslationList(members, void 0);
904
898
  closeBraceToken = this.token(21 /* CloseBrace */);
905
899
  }
906
900
  return new TypeTranslationDeclaration(
@@ -912,7 +906,8 @@ var SyntaxFactory = class {
912
906
  translatedTypeParameterClause,
913
907
  openBraceToken,
914
908
  memberList,
915
- closeBraceToken
909
+ closeBraceToken,
910
+ void 0
916
911
  );
917
912
  }
918
913
  static functionTypeTranslation(sourceName, sourceTypeParameters, sourceParameters, translatedName, translatedTypeParameters, translatedParameters) {
@@ -932,7 +927,8 @@ var SyntaxFactory = class {
932
927
  minusGreaterThanToken,
933
928
  translatedNameIdentifier,
934
929
  translatedTypeParameterClause,
935
- translatedParameterClause
930
+ translatedParameterClause,
931
+ void 0
936
932
  );
937
933
  }
938
934
  static fieldOrVariantTranslation(sourceName, translatedName) {
@@ -942,7 +938,8 @@ var SyntaxFactory = class {
942
938
  return new FieldOrVariantTranslation(
943
939
  sourceNameIdentifier,
944
940
  minusGreaterThanToken,
945
- translatedNameIdentifier
941
+ translatedNameIdentifier,
942
+ void 0
946
943
  );
947
944
  }
948
945
  static methodTranslation(sourceName, sourceTypeParameters, sourceParameters, translatedName, translatedTypeParameters, translatedParameters) {
@@ -962,7 +959,8 @@ var SyntaxFactory = class {
962
959
  minusGreaterThanToken,
963
960
  translatedNameIdentifier,
964
961
  translatedTypeParameterClause,
965
- translatedParameterClause
962
+ translatedParameterClause,
963
+ void 0
966
964
  );
967
965
  }
968
966
  static constructorTranslation(sourceParameters, translatedParameters) {
@@ -974,37 +972,50 @@ var SyntaxFactory = class {
974
972
  creationKeyword,
975
973
  sourceParameterClause,
976
974
  minusGreaterThanToken,
977
- translatedParameterClause
975
+ translatedParameterClause,
976
+ void 0
978
977
  );
979
978
  }
980
979
  static indexerTranslation(sourceParameters, translatedParameters) {
981
980
  const sourceParameterClause = this.indexParameterTranslationClause(sourceParameters);
982
981
  const minusGreaterThanToken = this.token(43 /* MinusGreaterThan */);
983
982
  const translatedParameterClause = this.indexParameterTranslationClause(translatedParameters);
984
- return new IndexerTranslation(sourceParameterClause, minusGreaterThanToken, translatedParameterClause);
983
+ return new IndexerTranslation(
984
+ sourceParameterClause,
985
+ minusGreaterThanToken,
986
+ translatedParameterClause,
987
+ void 0
988
+ );
985
989
  }
986
990
  static translationParameterClause(parameters) {
987
991
  const openParenthesisToken = this.token(45 /* OpenParenthesis */);
988
992
  const parameterList = new TranslationParameterList(
989
- this.createTokenSeparatedElements(parameters.map((p) => this.createIdentifier(p)), 25 /* Comma */)
993
+ this.createTokenSeparatedElements(parameters.map((p) => this.createIdentifier(p)), 25 /* Comma */),
994
+ void 0
990
995
  );
991
996
  const closeParenthesisToken = this.token(22 /* CloseParenthesis */);
992
- return new TranslationParameterClause(openParenthesisToken, parameterList, closeParenthesisToken);
997
+ return new TranslationParameterClause(openParenthesisToken, parameterList, closeParenthesisToken, void 0);
993
998
  }
994
999
  static indexParameterTranslationClause(parameters) {
995
1000
  const openSquareBracketToken = this.token(46 /* OpenSquareBracket */);
996
1001
  const parameterList = new TranslationParameterList(
997
- this.createTokenSeparatedElements(parameters.map((p) => this.createIdentifier(p)), 25 /* Comma */)
1002
+ this.createTokenSeparatedElements(parameters.map((p) => this.createIdentifier(p)), 25 /* Comma */),
1003
+ void 0
998
1004
  );
999
1005
  const closeSquareBracketToken = this.token(23 /* CloseSquareBracket */);
1000
- return new IndexParameterTranslationClause(openSquareBracketToken, parameterList, closeSquareBracketToken);
1006
+ return new IndexParameterTranslationClause(
1007
+ openSquareBracketToken,
1008
+ parameterList,
1009
+ closeSquareBracketToken,
1010
+ void 0
1011
+ );
1001
1012
  }
1002
1013
  static token(kind, value) {
1003
1014
  const flags = value === void 0 ? 1 /* Missing */ : 0 /* None */;
1004
- return new Token(kind, value ?? "", [], flags, void 0);
1015
+ return new Token(kind, value ?? "", [], [], flags, void 0, void 0);
1005
1016
  }
1006
1017
  static keyword(kind) {
1007
- return new Keyword([], kind, true);
1018
+ return new Keyword([], kind, true, void 0);
1008
1019
  }
1009
1020
  static createTypeParameterClause(typeParameters) {
1010
1021
  if (typeParameters === void 0) {
@@ -1012,8 +1023,9 @@ var SyntaxFactory = class {
1012
1023
  }
1013
1024
  return new TypeParameterClause(
1014
1025
  this.token(37 /* LessThan */),
1015
- new TypeParameterList(this.createTokenSeparatedElements(typeParameters, 25 /* Comma */)),
1016
- this.token(34 /* GreaterThan */)
1026
+ new TypeParameterList(this.createTokenSeparatedElements(typeParameters, 25 /* Comma */), void 0),
1027
+ this.token(34 /* GreaterThan */),
1028
+ void 0
1017
1029
  );
1018
1030
  }
1019
1031
  static createTranslationTypeParameterClause(typeParameters) {
@@ -1023,20 +1035,22 @@ var SyntaxFactory = class {
1023
1035
  return new TranslationTypeParameterClause(
1024
1036
  this.token(37 /* LessThan */),
1025
1037
  new TranslationTypeParameterList(
1026
- this.createTokenSeparatedElements(typeParameters.map((p) => this.createIdentifier(p)), 25 /* Comma */)
1038
+ this.createTokenSeparatedElements(typeParameters.map((p) => this.createIdentifier(p)), 25 /* Comma */),
1039
+ void 0
1027
1040
  ),
1028
- this.token(34 /* GreaterThan */)
1041
+ this.token(34 /* GreaterThan */),
1042
+ void 0
1029
1043
  );
1030
1044
  }
1031
1045
  static createTypeAnnotation(typeSpecifier) {
1032
1046
  if (typeSpecifier === void 0) {
1033
1047
  return void 0;
1034
1048
  }
1035
- return new TypeAnnotation(this.token(24 /* Colon */), typeSpecifier);
1049
+ return new TypeAnnotation(this.token(24 /* Colon */), typeSpecifier, void 0);
1036
1050
  }
1037
1051
  static createIdentifier(value) {
1038
1052
  if (typeof value === "string") {
1039
- return new Token(10 /* Identifier */, value, [], 0 /* None */, void 0);
1053
+ return new Token(10 /* Identifier */, value, [], [], 0 /* None */, void 0, void 0);
1040
1054
  }
1041
1055
  return value;
1042
1056
  }
@@ -1054,7 +1068,7 @@ var SyntaxFactory = class {
1054
1068
  }
1055
1069
  };
1056
1070
 
1057
- // source/tree/green/SyntaxToCode.ts
1071
+ // source/tree/SyntaxToCode.ts
1058
1072
  var SyntaxToCode = class _SyntaxToCode {
1059
1073
  constructor(node, options6) {
1060
1074
  this._code = "";
@@ -2194,14 +2208,14 @@ function getTokenAtOffset(sourceFile, offset, searchInTrivia) {
2194
2208
  if (node.kind === 0 /* Token */) {
2195
2209
  result = node;
2196
2210
  } else {
2197
- visitChildren(node, cb);
2211
+ visitChildren(node, true, cb);
2198
2212
  }
2199
2213
  } else if (node === sourceFile.endOfFileToken && offset === node.rangeWithTrivia.end) {
2200
2214
  result = node;
2201
2215
  }
2202
2216
  }
2203
2217
  }
2204
- visitChildren(sourceFile, cb);
2218
+ visitChildren(sourceFile, true, cb);
2205
2219
  return result;
2206
2220
  }
2207
2221
  function getTokenOrKeywordsTouchingOffset(sourceFile, offset) {
@@ -2241,12 +2255,12 @@ function getFirstTokenTouchingOffset(sourceFile, offset) {
2241
2255
  if (node.kind === 0 /* Token */) {
2242
2256
  result = node;
2243
2257
  } else {
2244
- visitChildren(node, cb);
2258
+ visitChildren(node, true, cb);
2245
2259
  }
2246
2260
  }
2247
2261
  }
2248
2262
  }
2249
- visitChildren(sourceFile, cb);
2263
+ visitChildren(sourceFile, true, cb);
2250
2264
  return result;
2251
2265
  }
2252
2266
  var TokenOrKeyword = class {
@@ -2318,14 +2332,7 @@ var TokenOrKeywordsTouchingOffset_two = class {
2318
2332
  };
2319
2333
  function getTriviaAtOffset(sourceFile, offset) {
2320
2334
  const token = getTokenAtOffset(sourceFile, offset, true);
2321
- if (token !== void 0) {
2322
- for (const trivia of token.getLeadingTrivia()) {
2323
- if (trivia.range.includes(offset)) {
2324
- return trivia;
2325
- }
2326
- }
2327
- }
2328
- return void 0;
2335
+ return token?.getTriviaAt(offset);
2329
2336
  }
2330
2337
 
2331
2338
  // source/services/TranslationsGenerationService.ts
@@ -2346,6 +2353,7 @@ var TranslationsGenerationService = class {
2346
2353
  analyzer,
2347
2354
  sourceFile,
2348
2355
  translationPackage,
2356
+ sourceFile.package.locale,
2349
2357
  sourceFile.package.dialect
2350
2358
  );
2351
2359
  result = generator.generateMissingTypeMemberTranslations(tokenOrKeyword.parent);
@@ -2358,6 +2366,7 @@ var TranslationsGenerationService = class {
2358
2366
  analyzer,
2359
2367
  sourceFile,
2360
2368
  translationPackage,
2369
+ sourceFile.package.locale,
2361
2370
  sourceFile.package.dialect
2362
2371
  );
2363
2372
  if (onlyTypeMembers) {
@@ -2384,15 +2393,22 @@ var TranslationsGenerationService = class {
2384
2393
  if (translationPackage === void 0) {
2385
2394
  return false;
2386
2395
  }
2387
- const generator = new TranslationsGenerator(analyzer, sourceFile, translationPackage, sourceFile.package.dialect);
2396
+ const generator = new TranslationsGenerator(
2397
+ analyzer,
2398
+ sourceFile,
2399
+ translationPackage,
2400
+ sourceFile.package.locale,
2401
+ sourceFile.package.dialect
2402
+ );
2388
2403
  return Query.from(tokenOrKeyword.parent.translationList.translationDeclarations).filter((t) => t.kind === 142 /* TypeTranslationDeclaration */).mapAndFilter((t) => translationPackage.getTypeTranslationTarget(t).target).any((t) => generator.collectNotTranslatedTypeMembers(t).length > 0);
2389
2404
  }
2390
2405
  };
2391
2406
  var TranslationsGenerator = class _TranslationsGenerator {
2392
- constructor(_analyzer, _sourceFile, _translationPackage, _dialect) {
2407
+ constructor(_analyzer, _sourceFile, _translationPackage, _locale, _dialect) {
2393
2408
  this._analyzer = _analyzer;
2394
2409
  this._sourceFile = _sourceFile;
2395
2410
  this._translationPackage = _translationPackage;
2411
+ this._locale = _locale;
2396
2412
  this._dialect = _dialect;
2397
2413
  }
2398
2414
  static {
@@ -2404,7 +2420,7 @@ var TranslationsGenerator = class _TranslationsGenerator {
2404
2420
  if (memberEntities.length > 0) {
2405
2421
  const newLine = this.detectNewLine();
2406
2422
  const syntaxToCodeOptions = {
2407
- keywordsLocale: this._translationPackage.getTargetPackage().getLocale(),
2423
+ keywordsLocale: this._locale,
2408
2424
  keywordsDialect: this._dialect,
2409
2425
  initialIndentation: this.detectIndentationForPackageMemberTranslations(translationsDeclaration),
2410
2426
  indentationStep: this.detectIndentationStepForTypeMemberTranslations(translationsDeclaration),
@@ -2464,7 +2480,7 @@ var TranslationsGenerator = class _TranslationsGenerator {
2464
2480
  }
2465
2481
  const newLine = this.detectNewLine();
2466
2482
  const syntaxToCodeOptions = {
2467
- keywordsLocale: this._translationPackage.getTargetPackage().getLocale(),
2483
+ keywordsLocale: this._locale,
2468
2484
  keywordsDialect: this._dialect,
2469
2485
  initialIndentation: this.detectIndentationForTypeMemberTranslations(typeTranslation),
2470
2486
  indentationStep: this.detectIndentationStepForTypeMemberTranslations(typeTranslation),
@@ -2721,7 +2737,7 @@ var CodeActionsService = class {
2721
2737
  }
2722
2738
  const result = new Array();
2723
2739
  const diagnosticCodeSet = new Set(diagnosticCodes);
2724
- if (diagnosticCodeSet.has(277 /* TheFollowingDeclarationsAreNotTranslated0 */) || diagnosticCodeSet.has(278 /* TheFollowingDeclarationAreNotTranslated0And1More */)) {
2740
+ if (diagnosticCodeSet.has(281 /* TheFollowingDeclarationsAreNotTranslated0 */) || diagnosticCodeSet.has(282 /* TheFollowingDeclarationAreNotTranslated0And1More */)) {
2725
2741
  const data = { onlyTypeMembers: false };
2726
2742
  result.push(CodeAction.unresolved(
2727
2743
  "\u0421\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043D\u0435\u0434\u043E\u0441\u0442\u0430\u044E\u0449\u0438\u0435 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u044B.",
@@ -2833,38 +2849,92 @@ var SignatureForNode = class _SignatureForNode {
2833
2849
  }
2834
2850
  }
2835
2851
  static getSignaturesForCallExpression(analyzer, node) {
2836
- const meaning = analyzer.getCallExpressionMeaning(node);
2837
- if (meaning.kind === "constructor-call") {
2838
- let suitableSignatureIndex;
2839
- if (meaning.suitableConstructors.length === 1) {
2840
- suitableSignatureIndex = meaning.candidates.indexOf(meaning.suitableConstructors[0]);
2852
+ const meaning = analyzer.resolveCallExpression(node).meaning;
2853
+ switch (meaning.kind) {
2854
+ case "function-call": {
2855
+ let suitableSignatureIndex;
2856
+ let functions;
2857
+ if (meaning.singleNotSuitableSubstitutedCandidate !== void 0) {
2858
+ functions = [meaning.singleNotSuitableSubstitutedCandidate];
2859
+ } else {
2860
+ const singleFunction = meaning.singleSuitableFunction;
2861
+ if (singleFunction !== void 0) {
2862
+ suitableSignatureIndex = meaning.candidates.findIndex((f) => f.getEntity().getOriginalEntity() === singleFunction.getEntity().getOriginalEntity());
2863
+ }
2864
+ functions = [];
2865
+ for (const candidate of meaning.candidates) {
2866
+ const suitableFunction = meaning.suitableFunctions.find((s) => s.getEntity().getOriginalEntity() === candidate.getEntity().getOriginalEntity());
2867
+ functions.push(suitableFunction ?? candidate);
2868
+ }
2869
+ }
2870
+ const signatures = functions.map((f) => {
2871
+ if (f.kind === "substituted-function") {
2872
+ const substitutions = f.value.getSubstitutions();
2873
+ if (substitutions.size > 0 && Query.from(substitutions.getTypes()).all((t) => t.kind === "unresolved")) {
2874
+ switch (f.value.kind) {
2875
+ case "entity":
2876
+ f = new AccessedFunction_entity(f.value.entity);
2877
+ break;
2878
+ case "type-member":
2879
+ f = new AccessedFunction_typeMember(f.value.method);
2880
+ break;
2881
+ default:
2882
+ Debug.never(f.value);
2883
+ }
2884
+ }
2885
+ }
2886
+ return new AccessedFunctionSignature(f);
2887
+ });
2888
+ return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
2841
2889
  }
2842
- const signatures = meaning.candidates.map((c) => new ConstructorSignature(c));
2843
- return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
2844
- }
2845
- const info = analyzer.checkExpressionDenotesFunction(node.expression);
2846
- if (info !== void 0) {
2847
- let suitableSignatureIndex;
2848
- if (info.suitableFunctions.length === 1) {
2849
- suitableSignatureIndex = info.candidates.indexOf(info.suitableFunctions[0]);
2890
+ case "operator-call": {
2891
+ let suitableSignatureIndex;
2892
+ const singleOperator = meaning.singleOperator;
2893
+ if (singleOperator !== void 0) {
2894
+ suitableSignatureIndex = meaning.candidates.findIndex((c) => c.equals(singleOperator));
2895
+ }
2896
+ const signatures = meaning.candidates.map((c) => new OperatorSignature(c));
2897
+ return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
2850
2898
  }
2851
- const signatures = info.candidates.map((c) => new AccessedFunctionSignature(c));
2852
- return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
2853
- }
2854
- if (meaning.kind === "object-function-call") {
2855
- const signature = new FunctionTypeSignature(meaning.type);
2856
- return new SignaturesWithSingleSuitable([signature], 0);
2899
+ case "object-function-call": {
2900
+ const signature = new FunctionTypeSignature(meaning.type);
2901
+ return new SignaturesWithSingleSuitable([signature], 0);
2902
+ }
2903
+ case "constructor-call": {
2904
+ let suitableSignatureIndex;
2905
+ let constructors;
2906
+ if (meaning.singleNotSuitableSubstitutedCandidate !== void 0) {
2907
+ constructors = [meaning.singleNotSuitableSubstitutedCandidate];
2908
+ } else {
2909
+ const singleConstructor = meaning.singleSuitableConstructor;
2910
+ if (singleConstructor !== void 0) {
2911
+ suitableSignatureIndex = meaning.candidates.findIndex((f) => f.getEntity().getOriginalEntity() === singleConstructor.getEntity().getOriginalEntity());
2912
+ }
2913
+ constructors = [];
2914
+ for (const candidate of meaning.candidates) {
2915
+ const suitableConstructor = meaning.suitableConstructors.find((s) => s.getEntity().getOriginalEntity() === candidate.getEntity().getOriginalEntity());
2916
+ constructors.push(suitableConstructor ?? candidate);
2917
+ }
2918
+ }
2919
+ const signatures = this.getSignaturesOfConstructors(analyzer, constructors);
2920
+ return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
2921
+ }
2922
+ case "unresolved": {
2923
+ return void 0;
2924
+ }
2925
+ default:
2926
+ Debug.never(meaning);
2857
2927
  }
2858
- return void 0;
2859
2928
  }
2860
2929
  static getSignaturesForAutotypeCallExpression(analyzer, node) {
2861
- const meaning = analyzer.getAutotypeCallExpressionMeaning(node);
2930
+ const meaning = analyzer.resolveAutotypeCallExpression(node).meaning;
2862
2931
  if (meaning.kind === "constructor-call") {
2863
2932
  let suitableSignatureIndex;
2864
- if (meaning.suitableConstructors.length === 1) {
2865
- suitableSignatureIndex = meaning.candidates.indexOf(meaning.suitableConstructors[0]);
2933
+ const singleConstructor = meaning.singleConstructor;
2934
+ if (singleConstructor !== void 0) {
2935
+ suitableSignatureIndex = meaning.candidates.findIndex((c) => c.equals(singleConstructor));
2866
2936
  }
2867
- const signatures = meaning.candidates.map((c) => new ConstructorSignature(c));
2937
+ const signatures = this.getSignaturesOfConstructors(analyzer, meaning.candidates);
2868
2938
  return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
2869
2939
  }
2870
2940
  return void 0;
@@ -2874,8 +2944,9 @@ var SignatureForNode = class _SignatureForNode {
2874
2944
  switch (meaning.kind) {
2875
2945
  case "resolved": {
2876
2946
  let suitableSignatureIndex;
2877
- if (meaning.singleSuitableIndexer !== void 0) {
2878
- suitableSignatureIndex = meaning.candidates.indexOf(meaning.singleSuitableIndexer);
2947
+ const singleIndexer = meaning.singleIndexer;
2948
+ if (singleIndexer !== void 0) {
2949
+ suitableSignatureIndex = meaning.candidates.findIndex((i) => i.equals(singleIndexer));
2879
2950
  }
2880
2951
  const signatures = meaning.candidates.map((i) => new IndexerSignature(i));
2881
2952
  return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
@@ -2890,16 +2961,18 @@ var SignatureForNode = class _SignatureForNode {
2890
2961
  const meaning = analyzer.resolveTag(node).meaning;
2891
2962
  if (meaning.kind === "tag-type") {
2892
2963
  let suitableSignatureIndex;
2893
- if (meaning.suitableConstructors.length === 1) {
2894
- suitableSignatureIndex = meaning.candidates.indexOf(meaning.suitableConstructors[0]);
2964
+ const singleConstructor = meaning.singleConstructor;
2965
+ if (singleConstructor !== void 0) {
2966
+ suitableSignatureIndex = meaning.candidates.findIndex((c) => c.equals(singleConstructor));
2895
2967
  }
2896
- const signatures = meaning.candidates.map((c) => new ConstructorSignature(c));
2968
+ const signatures = this.getSignaturesOfConstructors(analyzer, meaning.candidates);
2897
2969
  return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
2898
2970
  }
2899
2971
  if (meaning.kind === "tag-function") {
2900
2972
  let suitableSignatureIndex;
2901
- if (meaning.suitableFunctions.length === 1) {
2902
- suitableSignatureIndex = meaning.candidates.indexOf(meaning.suitableFunctions[0]);
2973
+ const singleFunction = meaning.singleFunction;
2974
+ if (singleFunction !== void 0) {
2975
+ suitableSignatureIndex = meaning.candidates.findIndex((f) => f.getEntity().getOriginalEntity() === singleFunction.getEntity().getOriginalEntity());
2903
2976
  }
2904
2977
  const signatures = meaning.candidates.map((c) => new AccessedFunctionSignature(c));
2905
2978
  return new SignaturesWithSingleSuitable(signatures, suitableSignatureIndex);
@@ -2909,6 +2982,16 @@ var SignatureForNode = class _SignatureForNode {
2909
2982
  }
2910
2983
  Debug.never(meaning);
2911
2984
  }
2985
+ static getSignaturesOfConstructors(analyzer, constructors) {
2986
+ return constructors.map((c) => {
2987
+ const substitutions = c.getSubstitutions();
2988
+ if (substitutions.size > 0 && Query.from(substitutions.getTypes()).all((t) => t.kind === "unresolved")) {
2989
+ const identitySubstitutions = Substitutions.identity(analyzer, Array.from(substitutions.getParameters()));
2990
+ c = new Constructor(analyzer, c.getEntity(), identitySubstitutions);
2991
+ }
2992
+ return new ConstructorSignature(c);
2993
+ });
2994
+ }
2912
2995
  };
2913
2996
  var SimplifiedArgumentToParameterMatcher = class {
2914
2997
  static match(analyzer, arguments_, signature) {
@@ -2968,7 +3051,10 @@ var SimplifiedOverloadResolver = class _SimplifiedOverloadResolver {
2968
3051
  continue;
2969
3052
  }
2970
3053
  const targetParameterType = targetParameter.getType();
2971
- const argumentType = analyzer.type.ofExpression(argument.expression, new TargetTypeHint(targetParameterType));
3054
+ const argumentType = analyzer.type.ofExpression(
3055
+ argument.expression,
3056
+ new ExpressionAnalysisOptions(targetParameterType, false, false)
3057
+ );
2972
3058
  if (analyzer.isTypeAssignableTo(argumentType, targetParameterType)) {
2973
3059
  continue;
2974
3060
  }
@@ -3022,6 +3108,16 @@ var AccessedFunctionSignature = class {
3022
3108
  return this._valueParameters.getOrInsertWith(() => this.func.getValueParameters().map((p) => new UniversalValueParameter(p.type, p.entity)));
3023
3109
  }
3024
3110
  };
3111
+ var OperatorSignature = class {
3112
+ constructor(operator) {
3113
+ this.kind = "operator";
3114
+ this._valueParameters = new Cached();
3115
+ this.operator = operator;
3116
+ }
3117
+ getValueParameters() {
3118
+ return this._valueParameters.getOrInsertWith(() => this.operator.getValueParameters().map((p) => new UniversalValueParameter(p.getType(), p.getEntity())));
3119
+ }
3120
+ };
3025
3121
  var FunctionTypeSignature = class {
3026
3122
  constructor(functionType) {
3027
3123
  this.kind = "function-type";
@@ -3074,7 +3170,7 @@ var CompletionService = class {
3074
3170
  get completionItemInfoContext() {
3075
3171
  return this._completionItemInfoContext.getOrInsertWith(
3076
3172
  () => new CompletionItemInfoContext(
3077
- new DisplayService(this._analyzer, this._locale, this._dialect),
3173
+ new DisplayService(this._analyzer, this._locale, this._dialect, this._sourceFile),
3078
3174
  this._locale,
3079
3175
  Query.from(getOrCreateKeywordDictionary(this._locale, this._dialect).values()).mapAndFilter((k) => k.keywordKind !== 0 /* Unknown */ ? k.value : void 0).uniqueToSet()
3080
3176
  )
@@ -3172,7 +3268,7 @@ var CompletionService = class {
3172
3268
  }
3173
3269
  if (tokenOrKeyword.isToken(27 /* Dot */) && tokenOrKeyword.parent.kind === 9 /* PackageName */) {
3174
3270
  const packageImport = tokenOrKeyword.parent.parent;
3175
- const precedingSegmentNames = packageImport.packageName.segments.takeWhile((s) => s.rangeStart < tokenOrKeyword.value.rangeStart).map((p) => this._analyzer.createNameFromIdentifier(p)).toArray();
3271
+ const precedingSegmentNames = packageImport.packageName.segments.takeWhile((s) => s.rangeWithTrivia.start < tokenOrKeyword.value.rangeWithTrivia.start).map((p) => this._analyzer.createNameFromIdentifier(p)).toArray();
3176
3272
  return new PackageImportCompletionContext(precedingSegmentNames, void 0);
3177
3273
  }
3178
3274
  if (tokenOrKeyword.isToken(44 /* OpenBrace */) && tokenOrKeyword.parent.kind === 6 /* PackageGroupImportDirective */ || this.tokenOrKeywordIsPackageImportListChild(tokenOrKeyword)) {
@@ -3317,7 +3413,7 @@ var CompletionService = class {
3317
3413
  return { kind: "none" };
3318
3414
  }
3319
3415
  tryGetTopLevelTranslationCompletionContext(syntaxContext, tokenOrKeyword, semanticContext) {
3320
- const package_ = TreeQuery.fromNode(this._sourceFile.getSyntaxNode()).projectSourceFile(this._analyzer).package;
3416
+ const package_ = TreeQuery.getSourcePackage(this._sourceFile.getSyntaxNode(), this._analyzer);
3321
3417
  let translationPackage;
3322
3418
  if (package_.kind === "translation") {
3323
3419
  translationPackage = this._analyzer.getAnalyzedTranslationPackageIfTargetResolved(package_);
@@ -3363,7 +3459,7 @@ var CompletionService = class {
3363
3459
  if (tokenOrKeyword.isToken(27 /* Dot */) && tokenOrKeyword.parent.kind === 138 /* QualifiedName */) {
3364
3460
  const qualifiedName = tokenOrKeyword.parent;
3365
3461
  if (qualifiedName.parent.kind === 137 /* PackageImportTranslationDeclaration */ && qualifiedName === qualifiedName.parent.sourceName) {
3366
- const precedingSegmentNames = qualifiedName.qualifiers.takeWhile((s) => s.rangeStart < tokenOrKeyword.value.rangeStart).map((p) => this._analyzer.createNameFromIdentifier(p)).toArray();
3462
+ const precedingSegmentNames = qualifiedName.qualifiers.takeWhile((s) => s.rangeWithTrivia.start < tokenOrKeyword.value.rangeWithTrivia.start).map((p) => this._analyzer.createNameFromIdentifier(p)).toArray();
3367
3463
  const sourceLocale = translationPackage.getTargetPackage().getLocale();
3368
3464
  return new PackageImportCompletionContext(precedingSegmentNames, { sourceLocale });
3369
3465
  }
@@ -3371,7 +3467,7 @@ var CompletionService = class {
3371
3467
  return void 0;
3372
3468
  }
3373
3469
  tryGetTypeMemberTranslationCompletionContext(syntaxContext, tokenOrKeyword, semanticContext) {
3374
- const package_ = TreeQuery.fromNode(this._sourceFile.getSyntaxNode()).projectSourceFile(this._analyzer).package;
3470
+ const package_ = TreeQuery.getSourcePackage(this._sourceFile.getSyntaxNode(), this._analyzer);
3375
3471
  let translationPackage;
3376
3472
  if (package_.kind === "translation") {
3377
3473
  translationPackage = this._analyzer.getAnalyzedTranslationPackageIfTargetResolved(package_);
@@ -3478,7 +3574,7 @@ var CompletionService = class {
3478
3574
  }
3479
3575
  if (role.kind === "error-value") {
3480
3576
  const standardTypes = this._analyzer.getLocalizedStandardTypes(
3481
- TreeQuery.fromNode(role.errorStatement).locale(this._analyzer)
3577
+ TreeQuery.getLocale(role.errorStatement, this._analyzer)
3482
3578
  );
3483
3579
  return { targetTypes: [standardTypes.error, standardTypes.text], targetSignaturesParameters: void 0 };
3484
3580
  }
@@ -3935,7 +4031,12 @@ var CompletionService = class {
3935
4031
  }
3936
4032
  getTopLevelAliasListCompletionItemInfos(ctx) {
3937
4033
  let result;
3938
- const displayService_ = new DisplayService(this._analyzer, ctx.sourceLocale, this._dialect);
4034
+ const displayService_ = new DisplayService(
4035
+ this._analyzer,
4036
+ ctx.sourceLocale,
4037
+ this._dialect,
4038
+ this._sourceFile
4039
+ );
3939
4040
  if (ctx.translationKind === 1 /* PackageImport */) {
3940
4041
  let items;
3941
4042
  if (this._sourceFile.package.kind === "translation") {
@@ -4027,7 +4128,12 @@ var CompletionService = class {
4027
4128
  getTypeAliasMemberListItemInfos(ctx) {
4028
4129
  let result = Query.empty();
4029
4130
  if (ctx.typeEntity !== void 0) {
4030
- const displayService_ = new DisplayService(this._analyzer, ctx.sourceLocale, this._dialect);
4131
+ const displayService_ = new DisplayService(
4132
+ this._analyzer,
4133
+ ctx.sourceLocale,
4134
+ this._dialect,
4135
+ this._sourceFile
4136
+ );
4031
4137
  if (ctx.translationKind === 1 /* Method */) {
4032
4138
  result = Query.from(ctx.typeEntity.getMembers().getNamedMembers()).mapAndFilter((m) => {
4033
4139
  if (m.kind === 1 /* Function */) {
@@ -4255,7 +4361,7 @@ function isInvalidNode(node) {
4255
4361
  case 0 /* Token */:
4256
4362
  return node.isMissing;
4257
4363
  case 3 /* Keyword */:
4258
- return node.green.isMissing;
4364
+ return node.isMissing;
4259
4365
  default:
4260
4366
  return false;
4261
4367
  }
@@ -5351,12 +5457,12 @@ var SyntaxContextFactory = class {
5351
5457
  trivia = getTriviaAtOffset(sourceFile.getSyntaxNode(), offset - 1);
5352
5458
  }
5353
5459
  if (trivia?.kind === 1 /* NewLine */) {
5354
- const previousTrivia = getTriviaAtOffset(sourceFile.getSyntaxNode(), trivia.range.start - 1);
5355
- if (previousTrivia?.kind === 2 /* SingleLineComment */) {
5460
+ const previousTrivia = getTriviaAtOffset(sourceFile.getSyntaxNode(), offset - trivia.range.length);
5461
+ if (previousTrivia?.trivia.kind === 2 /* SingleLineComment */) {
5356
5462
  trivia = previousTrivia;
5357
5463
  }
5358
5464
  }
5359
- return trivia !== void 0 && offset > trivia.rangeStart && (trivia.kind === 2 /* SingleLineComment */ || trivia.kind === 3 /* MultiLineComment */);
5465
+ return trivia !== void 0 && offset > trivia.range.start && (trivia.kind === 2 /* SingleLineComment */ || trivia.kind === 3 /* MultiLineComment */);
5360
5466
  }
5361
5467
  static isInStringOrChar(sourceFile, offset) {
5362
5468
  let token = getTokenAtOffset(sourceFile.getSyntaxNode(), offset, false);
@@ -5891,20 +5997,34 @@ var NodeSemanticInfoService = class {
5891
5997
  result = new ReferenceNodeSemanticInfo([target], false);
5892
5998
  break;
5893
5999
  }
5894
- case "instance-method-access":
5895
- if (isNonEmptyArray(meaning.suitableFunctions)) {
5896
- result = createAccessedFunctionsReference(meaning.suitableFunctions, meaning.suitableFunctions.length > 1);
6000
+ case "instance-method-access": {
6001
+ let functions;
6002
+ if (meaning.singleNotSuitableSubstitutedCandidate !== void 0) {
6003
+ functions = [meaning.singleNotSuitableSubstitutedCandidate];
6004
+ } else if (isNonEmptyArray(meaning.suitableFunctions)) {
6005
+ functions = meaning.suitableFunctions;
5897
6006
  } else if (isNonEmptyArray(meaning.candidates)) {
5898
- result = createAccessedFunctionsReference(meaning.candidates, true);
6007
+ functions = meaning.candidates;
6008
+ }
6009
+ if (functions !== void 0) {
6010
+ result = this.ofAccessedFunctions(functions);
5899
6011
  }
5900
6012
  break;
5901
- case "static-method-access":
5902
- if (isNonEmptyArray(meaning.suitableFunctions)) {
5903
- result = createAccessedFunctionsReference(meaning.suitableFunctions, meaning.suitableFunctions.length > 1);
6013
+ }
6014
+ case "static-method-access": {
6015
+ let functions;
6016
+ if (meaning.singleNotSuitableSubstitutedCandidate !== void 0) {
6017
+ functions = [meaning.singleNotSuitableSubstitutedCandidate];
6018
+ } else if (isNonEmptyArray(meaning.suitableFunctions)) {
6019
+ functions = meaning.suitableFunctions;
5904
6020
  } else if (isNonEmptyArray(meaning.candidates)) {
5905
- result = createAccessedFunctionsReference(meaning.candidates, true);
6021
+ functions = meaning.candidates;
6022
+ }
6023
+ if (functions !== void 0) {
6024
+ result = this.ofAccessedFunctions(functions);
5906
6025
  }
5907
6026
  break;
6027
+ }
5908
6028
  case "operator-access": {
5909
6029
  if (isNonEmptyArray(meaning.suitableOperators)) {
5910
6030
  result = createOperatorsReference(meaning.suitableOperators, meaning.suitableOperators.length > 1);
@@ -5913,21 +6033,49 @@ var NodeSemanticInfoService = class {
5913
6033
  }
5914
6034
  break;
5915
6035
  }
5916
- case "package-function-access":
5917
- if (isNonEmptyArray(meaning.suitableFunctions)) {
5918
- result = createAccessedFunctionsReference(meaning.suitableFunctions, meaning.suitableFunctions.length > 1);
6036
+ case "package-function-access": {
6037
+ let functions;
6038
+ if (meaning.singleNotSuitableSubstitutedCandidate !== void 0) {
6039
+ functions = [meaning.singleNotSuitableSubstitutedCandidate];
6040
+ } else if (isNonEmptyArray(meaning.suitableFunctions)) {
6041
+ functions = meaning.suitableFunctions;
5919
6042
  } else if (isNonEmptyArray(meaning.candidates)) {
5920
- result = createAccessedFunctionsReference(meaning.candidates, true);
6043
+ functions = meaning.candidates;
6044
+ }
6045
+ if (functions !== void 0) {
6046
+ result = this.ofAccessedFunctions(functions);
5921
6047
  }
5922
6048
  break;
6049
+ }
5923
6050
  case "package-type-access":
5924
- if (meaning.suitableTypes.length === 0 && meaning.candidates.length > 0) {
6051
+ if (meaning.suitableTypes.length > 0) {
6052
+ const targets = meaning.suitableTypes.map((c) => {
6053
+ const entity = c.getEntity();
6054
+ if (entity !== void 0) {
6055
+ return new EntityReferenceTarget(entity, 0 /* Get */);
6056
+ } else {
6057
+ return void 0;
6058
+ }
6059
+ }).filter((t) => t !== void 0);
6060
+ result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), meaning.suitableTypes.length > 1);
6061
+ } else if (meaning.candidates.length > 0) {
5925
6062
  const targets = meaning.candidates.map((c) => new EntityReferenceTarget(c, 0 /* Get */));
5926
6063
  result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
5927
- } else {
5928
- result = this.ofMaybeConstructorCallExpression(analyzer, meaning.suitableTypes, node, options6);
5929
6064
  }
5930
6065
  break;
6066
+ case "constructor-access": {
6067
+ const callExpressionMeaning = meaning.callExpressionMeaning;
6068
+ result = this.ofConstructorCallWithTypeAccess(
6069
+ analyzer,
6070
+ callExpressionMeaning.typeEntity,
6071
+ meaning.typeCandidates,
6072
+ callExpressionMeaning.singleNotSuitableSubstitutedCandidate,
6073
+ callExpressionMeaning.suitableConstructors,
6074
+ callExpressionMeaning.candidates,
6075
+ options6
6076
+ );
6077
+ break;
6078
+ }
5931
6079
  case "package-name-segment-access":
5932
6080
  result = this.ofPackageNameSegmentAccess(analyzer, meaning.packageTreeNode, node);
5933
6081
  break;
@@ -5947,10 +6095,6 @@ var NodeSemanticInfoService = class {
5947
6095
  result = this.getBetterReferenceTargetsOrPreserve(result);
5948
6096
  }
5949
6097
  return result;
5950
- function createAccessedFunctionsReference(functions, isAmbiguous) {
5951
- const targets = functions.map((o) => new AccessedFunctionReferenceTarget(o));
5952
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), isAmbiguous);
5953
- }
5954
6098
  function createOperatorsReference(operators, isAmbiguous) {
5955
6099
  const targets = operators.map((o) => new OperatorReferenceTarget(o));
5956
6100
  return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), isAmbiguous);
@@ -6029,7 +6173,7 @@ var NodeSemanticInfoService = class {
6029
6173
  const resolvedQualifier = resolutionResult.resolvedQualifiers[qualifierIndex];
6030
6174
  switch (resolvedQualifier.kind) {
6031
6175
  case "type": {
6032
- if (options6.preferredTargetOfExplicitConstructorCall === "type-declaration" || resolutionResult.meaning.kind !== "tag-type") {
6176
+ if (resolutionResult.meaning.kind !== "tag-type") {
6033
6177
  if (resolvedQualifier.suitableTypes.length > 0) {
6034
6178
  const targets = resolvedQualifier.suitableTypes.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6035
6179
  result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
@@ -6038,25 +6182,31 @@ var NodeSemanticInfoService = class {
6038
6182
  result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6039
6183
  }
6040
6184
  } else {
6041
- if (resolutionResult.meaning.suitableConstructors.length > 0) {
6042
- const targets = resolutionResult.meaning.suitableConstructors.map((t) => new ConstructorReferenceTarget(t));
6043
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
6044
- } else if (resolutionResult.meaning.candidates.length > 0) {
6045
- const targets = resolutionResult.meaning.candidates.map((t) => new ConstructorReferenceTarget(t));
6046
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6047
- }
6185
+ const typeEntity = resolvedQualifier.suitableTypes.length === 1 ? resolvedQualifier.suitableTypes[0] : void 0;
6186
+ result = this.ofConstructorCallWithTypeAccess(
6187
+ analyzer,
6188
+ typeEntity,
6189
+ resolvedQualifier.candidates,
6190
+ resolutionResult.meaning.singleNotSuitableSubstitutedCandidate,
6191
+ resolutionResult.meaning.suitableConstructors,
6192
+ resolutionResult.meaning.candidates,
6193
+ options6
6194
+ );
6048
6195
  }
6049
6196
  break;
6050
6197
  }
6051
- case "function":
6198
+ case "function": {
6199
+ let functions;
6052
6200
  if (resolvedQualifier.suitableFunctions.length > 0) {
6053
- const targets = resolvedQualifier.suitableFunctions.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6054
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
6201
+ functions = resolvedQualifier.suitableFunctions;
6055
6202
  } else if (resolvedQualifier.candidates.length > 0) {
6056
- const targets = resolvedQualifier.candidates.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6057
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6203
+ functions = resolvedQualifier.candidates;
6204
+ }
6205
+ if (functions !== void 0) {
6206
+ result = this.ofAccessedFunctions(functions);
6058
6207
  }
6059
6208
  break;
6209
+ }
6060
6210
  case "package-name-segment": {
6061
6211
  let currentIndex = qualifierIndex;
6062
6212
  while (currentIndex + 1 < resolutionResult.resolvedQualifiers.length && resolutionResult.resolvedQualifiers[currentIndex + 1].kind === "package-name-segment") {
@@ -6104,20 +6254,48 @@ var NodeSemanticInfoService = class {
6104
6254
  const meaning = analyzer.resolveIdentifierExpression(node).meaning;
6105
6255
  switch (meaning.kind) {
6106
6256
  case "type-access":
6107
- if (meaning.suitableTypes.length === 0 && meaning.candidates.length > 0) {
6257
+ if (meaning.suitableTypes.length > 0) {
6258
+ const targets = meaning.suitableTypes.map((c) => {
6259
+ const entity = c.getEntity();
6260
+ if (entity !== void 0) {
6261
+ return new EntityReferenceTarget(entity, 0 /* Get */);
6262
+ } else {
6263
+ return void 0;
6264
+ }
6265
+ }).filter((t) => t !== void 0);
6266
+ result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), meaning.suitableTypes.length > 1);
6267
+ } else if (meaning.candidates.length > 0) {
6108
6268
  const targets = meaning.candidates.map((c) => new EntityReferenceTarget(c, 0 /* Get */));
6109
6269
  result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6110
- } else {
6111
- result = this.ofMaybeConstructorCallExpression(analyzer, meaning.suitableTypes, node, options6);
6112
6270
  }
6113
6271
  break;
6114
- case "function-access":
6115
- if (isNonEmptyArray(meaning.suitableFunctions)) {
6116
- result = createAccessedFunctionsReference(meaning.suitableFunctions, meaning.suitableFunctions.length > 1);
6272
+ case "constructor-access": {
6273
+ const callExpressionMeaning = meaning.callExpressionMeaning;
6274
+ result = this.ofConstructorCallWithTypeAccess(
6275
+ analyzer,
6276
+ callExpressionMeaning.typeEntity,
6277
+ meaning.typeCandidates,
6278
+ callExpressionMeaning.singleNotSuitableSubstitutedCandidate,
6279
+ callExpressionMeaning.suitableConstructors,
6280
+ callExpressionMeaning.candidates,
6281
+ options6
6282
+ );
6283
+ break;
6284
+ }
6285
+ case "function-access": {
6286
+ let functions;
6287
+ if (meaning.singleNotSuitableSubstitutedCandidate !== void 0) {
6288
+ functions = [meaning.singleNotSuitableSubstitutedCandidate];
6289
+ } else if (isNonEmptyArray(meaning.suitableFunctions)) {
6290
+ functions = meaning.suitableFunctions;
6117
6291
  } else if (isNonEmptyArray(meaning.candidates)) {
6118
- result = createAccessedFunctionsReference(meaning.candidates, true);
6292
+ functions = meaning.candidates;
6293
+ }
6294
+ if (functions !== void 0) {
6295
+ result = this.ofAccessedFunctions(functions);
6119
6296
  }
6120
6297
  break;
6298
+ }
6121
6299
  case "operator-access": {
6122
6300
  if (isNonEmptyArray(meaning.suitableOperators)) {
6123
6301
  result = createOperatorsReference(meaning.suitableOperators, meaning.suitableOperators.length > 1);
@@ -6183,10 +6361,6 @@ var NodeSemanticInfoService = class {
6183
6361
  result = this.getBetterReferenceTargetsOrPreserve(result);
6184
6362
  }
6185
6363
  return result;
6186
- function createAccessedFunctionsReference(functions, isAmbiguous) {
6187
- const targets = functions.map((o) => new AccessedFunctionReferenceTarget(o));
6188
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), isAmbiguous);
6189
- }
6190
6364
  function createOperatorsReference(operators, isAmbiguous) {
6191
6365
  const targets = operators.map((o) => new OperatorReferenceTarget(o));
6192
6366
  return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), isAmbiguous);
@@ -6283,15 +6457,17 @@ var NodeSemanticInfoService = class {
6283
6457
  return void 0;
6284
6458
  }
6285
6459
  static ofAutotypeCallExpression(analyzer, node, options6) {
6286
- const meaning = analyzer.getAutotypeCallExpressionMeaning(node);
6460
+ const meaning = analyzer.resolveAutotypeCallExpression(node).meaning;
6287
6461
  let result;
6288
6462
  if (meaning.kind === "constructor-call") {
6463
+ let constructors;
6289
6464
  if (meaning.suitableConstructors.length > 0) {
6290
- const targets = meaning.suitableConstructors.map((c) => new ConstructorReferenceTarget(c));
6291
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), meaning.suitableConstructors.length > 1);
6465
+ constructors = meaning.suitableConstructors;
6292
6466
  } else if (meaning.candidates.length > 0) {
6293
- const targets = meaning.candidates.map((c) => new ConstructorReferenceTarget(c));
6294
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6467
+ constructors = meaning.candidates;
6468
+ }
6469
+ if (constructors !== void 0) {
6470
+ result = this.ofConstructors(analyzer, constructors);
6295
6471
  }
6296
6472
  }
6297
6473
  if (result !== void 0 && options6.includeBetterReferenceTargets) {
@@ -6304,12 +6480,14 @@ var NodeSemanticInfoService = class {
6304
6480
  let result;
6305
6481
  switch (meaning.kind) {
6306
6482
  case "own-constructor-access": {
6483
+ let constructors;
6307
6484
  if (meaning.suitableConstructors.length > 0) {
6308
- const targets = meaning.suitableConstructors.map((c) => new ConstructorReferenceTarget(c));
6309
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), meaning.suitableConstructors.length > 1);
6485
+ constructors = meaning.suitableConstructors;
6310
6486
  } else if (meaning.candidates.length > 0) {
6311
- const targets = meaning.candidates.map((c) => new ConstructorReferenceTarget(c));
6312
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6487
+ constructors = meaning.candidates;
6488
+ }
6489
+ if (constructors !== void 0) {
6490
+ result = this.ofConstructors(analyzer, constructors);
6313
6491
  }
6314
6492
  break;
6315
6493
  }
@@ -6334,12 +6512,14 @@ var NodeSemanticInfoService = class {
6334
6512
  let result;
6335
6513
  switch (meaning.kind) {
6336
6514
  case "base-constructor-access": {
6515
+ let constructors;
6337
6516
  if (meaning.suitableConstructors.length > 0) {
6338
- const targets = meaning.suitableConstructors.map((c) => new ConstructorReferenceTarget(c));
6339
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), meaning.suitableConstructors.length > 1);
6517
+ constructors = meaning.suitableConstructors;
6340
6518
  } else if (meaning.candidates.length > 0) {
6341
- const targets = meaning.candidates.map((c) => new ConstructorReferenceTarget(c));
6342
- result = new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6519
+ constructors = meaning.candidates;
6520
+ }
6521
+ if (constructors !== void 0) {
6522
+ result = this.ofConstructors(analyzer, constructors);
6343
6523
  }
6344
6524
  break;
6345
6525
  }
@@ -6349,9 +6529,7 @@ var NodeSemanticInfoService = class {
6349
6529
  break;
6350
6530
  }
6351
6531
  case "overridden-method-access": {
6352
- const target = new AccessedFunctionReferenceTarget(new AccessedFunction_typeMember(meaning.method));
6353
- result = new ReferenceNodeSemanticInfo([target], false);
6354
- break;
6532
+ return this.ofAccessedFunctions([meaning.method]);
6355
6533
  }
6356
6534
  case "overridden-operator-access": {
6357
6535
  const target = new OperatorReferenceTarget(meaning.operator);
@@ -6384,42 +6562,24 @@ var NodeSemanticInfoService = class {
6384
6562
  }
6385
6563
  return new ReferenceNodeSemanticInfo([new PackageReferenceTarget(packageTreeNode.package)], false);
6386
6564
  }
6387
- static ofMaybeConstructorCallExpression(analyzer, types, typeAccessExpression, options6) {
6388
- if (types.length === 0) {
6389
- return void 0;
6390
- }
6391
- const typeEntities = Query.from(types).mapAndFilter((t) => t.getEntity()).toArray();
6392
- if (options6.preferredTargetOfExplicitConstructorCall === "type-declaration" && typeEntities.length > 0) {
6393
- const targets = typeEntities.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6394
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
6565
+ static ofConstructorCallWithTypeAccess(analyzer, suitableType, typeCandidates, singleNotSuitableSubstitutedCandidate, suitableConstructors, candidates, options6) {
6566
+ if (options6.preferredTargetOfExplicitConstructorCall === "type-declaration") {
6567
+ const targets2 = suitableType !== void 0 ? [new EntityReferenceTarget(suitableType, 0 /* Get */)] : typeCandidates.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6568
+ return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets2), targets2.length > 1);
6395
6569
  }
6396
- const parent = getParentSkippingParenthesizedExpressions(typeAccessExpression);
6397
- let parentCallExpression;
6398
- if (parent.kind === 68 /* CallExpression */) {
6399
- parentCallExpression = parent;
6400
- } else if (parent.kind === 90 /* GenericSpecializationExpression */) {
6401
- const grandParent = getParentSkippingParenthesizedExpressions(parent);
6402
- if (grandParent.kind === 68 /* CallExpression */) {
6403
- parentCallExpression = grandParent;
6404
- }
6405
- }
6406
- if (parentCallExpression !== void 0) {
6407
- const meaning = analyzer.getCallExpressionMeaning(parentCallExpression);
6408
- if (meaning.kind === "constructor-call") {
6409
- if (meaning.suitableConstructors.length > 0) {
6410
- const targets = meaning.suitableConstructors.map((c) => new ConstructorReferenceTarget(c));
6411
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), meaning.suitableConstructors.length > 1);
6412
- } else if (meaning.candidates.length > 0) {
6413
- const targets = meaning.candidates.map((c) => new ConstructorReferenceTarget(c));
6414
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), true);
6415
- }
6416
- }
6570
+ let constructors;
6571
+ if (singleNotSuitableSubstitutedCandidate !== void 0) {
6572
+ constructors = [singleNotSuitableSubstitutedCandidate];
6573
+ } else if (suitableConstructors.length > 0) {
6574
+ constructors = suitableConstructors;
6575
+ } else if (candidates.length > 0) {
6576
+ constructors = candidates;
6417
6577
  }
6418
- if (typeEntities.length > 0) {
6419
- const targets = typeEntities.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6420
- return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
6578
+ if (constructors !== void 0) {
6579
+ return this.ofConstructors(analyzer, constructors);
6421
6580
  }
6422
- return void 0;
6581
+ const targets = suitableType !== void 0 ? [new EntityReferenceTarget(suitableType, 0 /* Get */)] : typeCandidates.map((t) => new EntityReferenceTarget(t, 0 /* Get */));
6582
+ return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
6423
6583
  }
6424
6584
  static getBetterReferenceTargetsOrPreserve(info) {
6425
6585
  const currentTargets = info.betterTargets ?? info.targets;
@@ -6470,12 +6630,44 @@ var NodeSemanticInfoService = class {
6470
6630
  return result;
6471
6631
  }
6472
6632
  static getContainingTranslationPackage(analyzer, node) {
6473
- const package_ = TreeQuery.fromNode(node).projectSourceFile(analyzer).package;
6633
+ const package_ = TreeQuery.getSourcePackage(node, analyzer);
6474
6634
  if (package_.kind === "translation") {
6475
6635
  return analyzer.getAnalyzedTranslationPackageIfTargetResolved(package_);
6476
6636
  }
6477
6637
  return void 0;
6478
6638
  }
6639
+ static ofAccessedFunctions(functions) {
6640
+ functions = functions.map((f) => {
6641
+ if (f.kind === "substituted-function") {
6642
+ const substitutions = f.value.getSubstitutions();
6643
+ if (substitutions.size > 0 && Query.from(substitutions.getTypes()).all((t) => t.kind === "unresolved")) {
6644
+ switch (f.value.kind) {
6645
+ case "entity":
6646
+ return new AccessedFunction_entity(f.value.entity);
6647
+ case "type-member":
6648
+ return new AccessedFunction_typeMember(f.value.method);
6649
+ default:
6650
+ Debug.never(f.value);
6651
+ }
6652
+ }
6653
+ }
6654
+ return f;
6655
+ });
6656
+ const targets = functions.map((f) => new AccessedFunctionReferenceTarget(f));
6657
+ return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
6658
+ }
6659
+ static ofConstructors(analyzer, constructors) {
6660
+ constructors = constructors.map((c) => {
6661
+ const substitutions = c.getSubstitutions();
6662
+ if (substitutions.size > 0 && Query.from(substitutions.getTypes()).all((t) => t.kind === "unresolved")) {
6663
+ const identitySubstitutions = Substitutions.identity(analyzer, Array.from(substitutions.getParameters()));
6664
+ return new Constructor(analyzer, c.getEntity(), identitySubstitutions);
6665
+ }
6666
+ return c;
6667
+ });
6668
+ const targets = constructors.map((c) => new ConstructorReferenceTarget(c));
6669
+ return new ReferenceNodeSemanticInfo(createNonEmptyArray(targets), targets.length > 1);
6670
+ }
6479
6671
  };
6480
6672
  var DefinitionNodeSemanticInfo = class {
6481
6673
  constructor(entity) {
@@ -6596,12 +6788,12 @@ function getEntitySourceLocations(analyzer, entity) {
6596
6788
  if (definition.kind === 0 /* Source */) {
6597
6789
  if (definition.value.kind === "single") {
6598
6790
  const range = definition.value.node.name.rangeWithoutTrivia;
6599
- const sourceFile = TreeQuery.fromNode(definition.value.node).projectSourceFile(analyzer);
6791
+ const sourceFile = TreeQuery.getSourceFile(definition.value.node, analyzer);
6600
6792
  result = [new SourceLocation(sourceFile, range)];
6601
6793
  } else if (definition.value.kind === "multi") {
6602
6794
  result = definition.value.nodes.map((d) => {
6603
6795
  const range = d.name.rangeWithoutTrivia;
6604
- const sourceFile = TreeQuery.fromNode(d).projectSourceFile(analyzer);
6796
+ const sourceFile = TreeQuery.getSourceFile(d, analyzer);
6605
6797
  return new SourceLocation(sourceFile, range);
6606
6798
  });
6607
6799
  } else {
@@ -6613,7 +6805,7 @@ function getEntitySourceLocations(analyzer, entity) {
6613
6805
  if (definition.kind === 0 /* Source */) {
6614
6806
  result = definition.nodes.map((d) => {
6615
6807
  const range = d.parameterClause.rangeWithoutTrivia;
6616
- const sourceFile = TreeQuery.fromNode(d).projectSourceFile(analyzer);
6808
+ const sourceFile = TreeQuery.getSourceFile(d, analyzer);
6617
6809
  return new SourceLocation(sourceFile, range);
6618
6810
  });
6619
6811
  }
@@ -6622,7 +6814,7 @@ function getEntitySourceLocations(analyzer, entity) {
6622
6814
  if (definition.kind === 0 /* Source */) {
6623
6815
  result = definition.nodes.map((d) => {
6624
6816
  const range = d.caretToken.rangeWithoutTrivia;
6625
- const sourceFile = TreeQuery.fromNode(d).projectSourceFile(analyzer);
6817
+ const sourceFile = TreeQuery.getSourceFile(d, analyzer);
6626
6818
  return new SourceLocation(sourceFile, range);
6627
6819
  });
6628
6820
  }
@@ -6631,7 +6823,7 @@ function getEntitySourceLocations(analyzer, entity) {
6631
6823
  if (definition.kind === 0 /* Source */) {
6632
6824
  result = definition.nodes.map((d) => {
6633
6825
  const range = d.rangeWithoutTrivia;
6634
- const sourceFile = TreeQuery.fromNode(d).projectSourceFile(analyzer);
6826
+ const sourceFile = TreeQuery.getSourceFile(d, analyzer);
6635
6827
  return new SourceLocation(sourceFile, range);
6636
6828
  });
6637
6829
  }
@@ -6697,7 +6889,7 @@ function getEntitySourceLocations(analyzer, entity) {
6697
6889
  default:
6698
6890
  Debug.never(node);
6699
6891
  }
6700
- const sourceFile = TreeQuery.fromNode(node).projectSourceFile(analyzer);
6892
+ const sourceFile = TreeQuery.getSourceFile(node, analyzer);
6701
6893
  result = [new SourceLocation(sourceFile, range)];
6702
6894
  }
6703
6895
  }
@@ -6936,7 +7128,7 @@ var DefinitionService = class {
6936
7128
  default:
6937
7129
  Debug.never(node);
6938
7130
  }
6939
- const sourceFile = TreeQuery.fromNode(node).projectSourceFile(analyzer);
7131
+ const sourceFile = TreeQuery.getSourceFile(node, analyzer);
6940
7132
  return new SourceLocation(sourceFile, range);
6941
7133
  }
6942
7134
  };
@@ -6989,6 +7181,7 @@ var ReferencesService = class {
6989
7181
  sourceFile2.getSyntaxNode(),
6990
7182
  cancellationToken,
6991
7183
  LanguageServer.DefaultCancellationTokenThrottleTime,
7184
+ true,
6992
7185
  (node) => {
6993
7186
  if (isIdentifier(node) && restrictions.canBeIdentifier && node.parent.kind !== 3 /* Keyword */) {
6994
7187
  const semanticInfo = NodeSemanticInfoService.ofNonKeywordIdentifier(analyzer, node, semanticInfoOptions);
@@ -7658,7 +7851,8 @@ var HoverService = class {
7658
7851
  this._displayService = new DisplayService(
7659
7852
  analyzer,
7660
7853
  sourceFile.package.locale,
7661
- sourceFile.package.dialect
7854
+ sourceFile.package.dialect,
7855
+ sourceFile
7662
7856
  );
7663
7857
  switch (semanticInfo.kind) {
7664
7858
  case "definition":
@@ -7712,11 +7906,11 @@ var HoverService = class {
7712
7906
  const declaration = new ValueParameterDeclaration_matchResultValueParameter(
7713
7907
  firstTarget.parameter
7714
7908
  );
7715
- return new Hover(this._displayService.displayValueParameterDeclaration(declaration), range);
7909
+ return new Hover(this._displayService.displayValueParameterDeclaration(declaration, void 0), range);
7716
7910
  }
7717
7911
  case "type-value-parameter": {
7718
7912
  const declaration = new ValueParameterDeclaration_typeMember(firstTarget.parameter);
7719
- return new Hover(this._displayService.displayValueParameterDeclaration(declaration), range);
7913
+ return new Hover(this._displayService.displayValueParameterDeclaration(declaration, void 0), range);
7720
7914
  }
7721
7915
  case "package":
7722
7916
  return new Hover(this._displayService.displayPackage(firstTarget.package_), range);
@@ -7787,7 +7981,7 @@ var SourceFileItemsService = class {
7787
7981
  }
7788
7982
  getChildItems(node) {
7789
7983
  const result = new Array();
7790
- visitChildren(node, (node2) => {
7984
+ visitChildren(node, false, (node2) => {
7791
7985
  const items = this.getChildItems(node2);
7792
7986
  switch (node2.kind) {
7793
7987
  case 8 /* PackageImport */: {
@@ -8224,8 +8418,10 @@ var SelectionRangeService = class {
8224
8418
  const child = nodeWithChildren.children.find((c) => c !== void 0 && this.nodeContainsOffset(c, offset, false));
8225
8419
  if (child === void 0) {
8226
8420
  const trivia = getTriviaAtOffset(sourceFile.getSyntaxNode(), offset);
8227
- if (trivia?.kind === 3 /* MultiLineComment */ || trivia?.kind === 2 /* SingleLineComment */) {
8228
- result = new SelectionRange(trivia.range, result);
8421
+ if (trivia !== void 0) {
8422
+ if (trivia.kind === 3 /* MultiLineComment */ || trivia.kind === 2 /* SingleLineComment */) {
8423
+ result = new SelectionRange(trivia.range, result);
8424
+ }
8229
8425
  }
8230
8426
  break;
8231
8427
  }
@@ -8302,6 +8498,7 @@ var SemanticTokensService = class {
8302
8498
  sourceFile.getSyntaxNode(),
8303
8499
  cancellationToken,
8304
8500
  LanguageServer.DefaultCancellationTokenThrottleTime,
8501
+ false,
8305
8502
  (node, controller) => {
8306
8503
  if (!this.rangesOverlap(range, node.rangeWithoutTrivia)) {
8307
8504
  controller.stopChildrenTraverse();
@@ -8559,7 +8756,8 @@ var TypeParameterSignatureHelpProvider = class {
8559
8756
  return this._signatureContext.getOrInsertWith(() => new SignatureContext(new DisplayService(
8560
8757
  this._analyzer,
8561
8758
  this._sourceFile.package.locale,
8562
- this._sourceFile.package.dialect
8759
+ this._sourceFile.package.dialect,
8760
+ this._sourceFile
8563
8761
  )));
8564
8762
  }
8565
8763
  provideSignatureHelp() {
@@ -8659,12 +8857,7 @@ var TypeParameterSignatureHelpProvider = class {
8659
8857
  return Query.from(lastQualifier.candidates).mapAndFilter((t) => this.getSignatureForNamedType(t)).toArray();
8660
8858
  } else if (lastQualifier.kind === "function") {
8661
8859
  if (resolutionResult.meaning.kind === "tag-function") {
8662
- return Query.from(resolutionResult.meaning.candidates).mapAndFilter((d) => {
8663
- if (d.kind === "substituted-function") {
8664
- return this.getSignatureForSubstitutedFunction(d.value);
8665
- }
8666
- return void 0;
8667
- }).toArray();
8860
+ return Query.from(resolutionResult.meaning.candidates).mapAndFilter((f) => this.getSignatureForAccessedFunction(f)).toArray();
8668
8861
  } else {
8669
8862
  return void 0;
8670
8863
  }
@@ -8677,16 +8870,14 @@ var TypeParameterSignatureHelpProvider = class {
8677
8870
  if (expression.kind === 89 /* IdentifierExpression */) {
8678
8871
  const meaning = this._analyzer.resolveIdentifierExpression(expression).meaning;
8679
8872
  if (meaning.kind === "function-access") {
8680
- return Query.from(meaning.candidates).mapAndFilter((o) => {
8681
- if (o.kind === "substituted-function") {
8682
- return this.getSignatureForSubstitutedFunction(o.value);
8683
- }
8684
- return void 0;
8685
- }).toArray();
8873
+ return Query.from(meaning.candidates).mapAndFilter((f) => this.getSignatureForAccessedFunction(f)).toArray();
8686
8874
  }
8687
8875
  if (meaning.kind === "type-access") {
8688
8876
  return Query.from(meaning.candidates).mapAndFilter((t) => this.getSignatureForNamedType(t)).toArray();
8689
8877
  }
8878
+ if (meaning.kind === "constructor-access") {
8879
+ return Query.from(meaning.typeCandidates).mapAndFilter((t) => this.getSignatureForNamedType(t)).toArray();
8880
+ }
8690
8881
  return void 0;
8691
8882
  }
8692
8883
  if (expression.kind === 76 /* MemberAccessExpression */) {
@@ -8700,33 +8891,48 @@ var TypeParameterSignatureHelpProvider = class {
8700
8891
  accessedFunctions = meaning.candidates;
8701
8892
  }
8702
8893
  if (accessedFunctions !== void 0) {
8703
- return Query.from(accessedFunctions).mapAndFilter((o) => {
8704
- if (o.kind === "substituted-function") {
8705
- return this.getSignatureForSubstitutedFunction(o.value);
8706
- }
8707
- return void 0;
8708
- }).toArray();
8894
+ return Query.from(accessedFunctions).mapAndFilter((f) => this.getSignatureForAccessedFunction(f)).toArray();
8709
8895
  }
8710
8896
  if (meaning.kind === "package-type-access") {
8711
8897
  return Query.from(meaning.candidates).mapAndFilter((t) => this.getSignatureForNamedType(t)).toArray();
8712
8898
  }
8899
+ if (meaning.kind === "constructor-access") {
8900
+ return Query.from(meaning.typeCandidates).mapAndFilter((t) => this.getSignatureForNamedType(t)).toArray();
8901
+ }
8713
8902
  return void 0;
8714
8903
  }
8715
8904
  return void 0;
8716
8905
  }
8717
- getSignatureForSubstitutedFunction(func) {
8906
+ getSignatureForAccessedFunction(func) {
8718
8907
  let result = void 0;
8719
8908
  switch (func.kind) {
8720
8909
  case "entity":
8721
- if (func.entity.getTypeParametersArity() > 0) {
8722
- result = new FunctionEntitySignature(this.signatureContext, func.entity);
8910
+ if (func.getTypeParameters().length > 0) {
8911
+ result = new FunctionEntitySignature(this.signatureContext, func.value);
8723
8912
  }
8724
8913
  break;
8725
8914
  case "type-member":
8726
- if (func.method.getTypeParametersArity() > 0) {
8727
- result = new MethodSignature(this.signatureContext, func.method);
8915
+ if (func.getTypeParameters().length > 0) {
8916
+ result = new MethodSignature(this.signatureContext, func.value);
8728
8917
  }
8729
8918
  break;
8919
+ case "substituted-function": {
8920
+ switch (func.value.kind) {
8921
+ case "entity":
8922
+ if (func.getTypeParameters().length > 0) {
8923
+ result = new FunctionEntitySignature(this.signatureContext, func.value.entity);
8924
+ }
8925
+ break;
8926
+ case "type-member":
8927
+ if (func.getTypeParameters().length > 0) {
8928
+ result = new MethodSignature(this.signatureContext, func.value.method);
8929
+ }
8930
+ break;
8931
+ default:
8932
+ Debug.never(func.value);
8933
+ }
8934
+ break;
8935
+ }
8730
8936
  default:
8731
8937
  Debug.never(func);
8732
8938
  }
@@ -8886,7 +9092,8 @@ var ValueParametersSignatureHelpProvider = class {
8886
9092
  return this._signatureContext.getOrInsertWith(() => new SignatureContext2(new DisplayService(
8887
9093
  this._analyzer,
8888
9094
  this._sourceFile.package.locale,
8889
- this._sourceFile.package.dialect
9095
+ this._sourceFile.package.dialect,
9096
+ this._sourceFile
8890
9097
  )));
8891
9098
  }
8892
9099
  provideSignatureHelp() {
@@ -8993,6 +9200,11 @@ var ValueParametersSignatureHelpProvider = class {
8993
9200
  const displayParts = this.signatureContext.displayService.getFunctionDeclarationDisplayParts(func);
8994
9201
  return this.signatureContext.convertFunctionDisplayParts(displayParts);
8995
9202
  }
9203
+ case "operator": {
9204
+ const operator = new OperatorDeclaration_typeMember(signature.operator);
9205
+ const displayParts = this.signatureContext.displayService.getOperatorDeclarationDisplayParts(operator);
9206
+ return this.signatureContext.convertOperatorDisplayParts(displayParts);
9207
+ }
8996
9208
  case "function-type": {
8997
9209
  const displayParts = this.signatureContext.displayService.getFunctionTypeBodyDisplayParts(signature.functionType);
8998
9210
  return this.signatureContext.convertFunctionTypeBodyDisplayParts(displayParts);
@@ -9027,6 +9239,12 @@ var SignatureContext2 = class {
9027
9239
  const postfix = parts.valueParametersEnd + parts.returnTypeAnnotationColon + parts.returnType;
9028
9240
  return new SignatureDisplayParts(prefix, valueParameters, parts.valueParameterSeparator, postfix);
9029
9241
  }
9242
+ convertOperatorDisplayParts(parts) {
9243
+ const prefix = parts.functionKeyword + parts.whitespaceAfterFunctionKeyword + parts.container + parts.name + parts.valueParametersStart;
9244
+ const valueParameters = parts.valueParameters.map((p) => p.toString());
9245
+ const postfix = parts.valueParametersEnd + parts.returnTypeAnnotationColon + parts.returnType;
9246
+ return new SignatureDisplayParts(prefix, valueParameters, parts.valueParameterSeparator, postfix);
9247
+ }
9030
9248
  convertFunctionTypeBodyDisplayParts(parts) {
9031
9249
  const prefix = parts.asyncKeywordWithWhitespace + parts.functionKeyword + parts.valueParametersStart;
9032
9250
  const valueParameters = parts.valueParameters.map((p) => p.toString());