@artel/artc 0.6.25229 → 0.6.25231

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 (52) hide show
  1. package/build/Cli.js +3 -3
  2. package/build/api/Api.js +6 -4
  3. package/build/api/ApiNodeJS.js +3 -3
  4. package/build/api/ApiServices.js +50 -50
  5. package/build/{chunk-4UBNOTKC.js → chunk-BG2YEIQO.js} +2 -2
  6. package/build/{chunk-6YPLDA76.js → chunk-S7CAJWX2.js} +2372 -943
  7. package/build/{chunk-2FHW6RUS.js → chunk-VQ5GGKF7.js} +1 -1
  8. package/build/types/analysis/Analyzer.d.ts +51 -11
  9. package/build/types/analysis/BaseExpressionMeaning.d.ts +1 -1
  10. package/build/types/analysis/DiagnosticCollector.d.ts +1 -1
  11. package/build/types/analysis/FindModifier.d.ts +1 -0
  12. package/build/types/analysis/{OperationOverloadResolver.d.ts → FunctionOverloadResolver.d.ts} +2 -0
  13. package/build/types/analysis/IdentifierExpressionMeaning.d.ts +2 -2
  14. package/build/types/analysis/MemberAccessExpressionMeaning.d.ts +5 -5
  15. package/build/types/analysis/ModifierFlags.d.ts +7 -2
  16. package/build/types/analysis/ModifierValidator.d.ts +83 -0
  17. package/build/types/analysis/PackageMemberNameConflictsValidator.d.ts +2 -3
  18. package/build/types/analysis/TypeMemberConflictsValidator.d.ts +22 -0
  19. package/build/types/analysis/control-flow/NarrowableReference.d.ts +4 -4
  20. package/build/types/analysis/control-flow/Nodes.d.ts +1 -1
  21. package/build/types/analysis/semantic-context/Declarations.d.ts +2 -2
  22. package/build/types/analysis/semantic-context/SemanticContextValidatingNameConflicts.d.ts +0 -1
  23. package/build/types/common/ArrayUtils.d.ts +8 -0
  24. package/build/types/common/index.d.ts +1 -0
  25. package/build/types/diagnostic/DiagnosticCode.d.ts +57 -29
  26. package/build/types/emitter/Entities.d.ts +3 -3
  27. package/build/types/entities/AliasTypeEntity.d.ts +1 -1
  28. package/build/types/entities/ConstructorEntity.d.ts +8 -8
  29. package/build/types/entities/DereferenceOperatorEntity.d.ts +10 -7
  30. package/build/types/entities/DestructorEntity.d.ts +3 -3
  31. package/build/types/entities/FunctionEntity.d.ts +14 -14
  32. package/build/types/entities/FunctionTypeEntity.d.ts +1 -1
  33. package/build/types/entities/GetterEntity.d.ts +4 -4
  34. package/build/types/entities/IndexerEntity.d.ts +11 -8
  35. package/build/types/entities/OperatorEntity.d.ts +7 -7
  36. package/build/types/entities/SetterEntity.d.ts +4 -4
  37. package/build/types/entities/StructuredTypeEntity.d.ts +14 -14
  38. package/build/types/entities/TypeExtensionEntity.d.ts +1 -1
  39. package/build/types/entities/VariableEntity.d.ts +32 -28
  40. package/build/types/entities/VariantTypeEntity.d.ts +1 -1
  41. package/build/types/entities/index.d.ts +29 -0
  42. package/build/types/project/SourcePackage.d.ts +7 -7
  43. package/build/types/services/DisplayService.d.ts +2 -2
  44. package/build/types/services/NodeSemanticInfo.d.ts +4 -4
  45. package/build/types/tree/KeywordKind.d.ts +1 -1
  46. package/build/types/tree/green/Nodes.d.ts +3 -3
  47. package/build/types/tree/red/Nodes.d.ts +2 -2
  48. package/build/types/ts-interop/Entities.d.ts +29 -29
  49. package/build/types/ts-interop/TsTypeMembersCreator.d.ts +1 -1
  50. package/build/types/types/StructuredType.d.ts +2 -0
  51. package/build/types/types/TypeMembers.d.ts +5 -5
  52. package/package.json +4 -4
@@ -10,7 +10,7 @@ import {
10
10
  WellKnownDeclarationsLoadError,
11
11
  __async,
12
12
  createTsInteropInputsForCompilation
13
- } from "./chunk-6YPLDA76.js";
13
+ } from "./chunk-S7CAJWX2.js";
14
14
 
15
15
  // source/executor/Compiler.ts
16
16
  var Compiler = class {
@@ -24,6 +24,7 @@ import * as constructorOverloadResolver from './ConstructorOverloadResolver.js';
24
24
  import { DeclarationsUsageCountResult } from './DeclarationsUsageCounter.js';
25
25
  import * as dereferenceExpressionMeaning from './DereferenceExpressionMeaning.js';
26
26
  import { FoundAnonymousDeclaration } from './FoundDeclaration.js';
27
+ import * as functionOverloadResolver from './FunctionOverloadResolver.js';
27
28
  import * as identifierExpressionResolution from './IdentifierExpressionMeaning.js';
28
29
  import { ImportedPackageNameTree, PackageNameTreeNode } from './ImportedPackageNameTree.js';
29
30
  import * as indexedAccessExpressionMeaning from './IndexedAccessExpressionMeaning.js';
@@ -34,7 +35,6 @@ import { ModifierFlags } from './ModifierFlags.js';
34
35
  import { NamedTypeSpecifierResolutionResult } from './NamedTypeSpecifierResolver.js';
35
36
  import { DereferencedVariableAccessorDeclaration, FieldAccessorDeclaration, FunctionTypeDeclaration, GetterDeclaration, IndexedElementAccessorDeclaration, PackageVariableAccessorDeclaration, SetterDeclaration, StructuredTypeDeclaration, VariantTypeDeclaration } from './NodeTypeUtils.js';
36
37
  import * as objectExpressionMeaning from './ObjectExpressionMeaning.js';
37
- import * as operationOverloadResolver from './OperationOverloadResolver.js';
38
38
  import { SourceFileMembers as ActualSourceFileMembers } from './SourceFileMembers.js';
39
39
  import * as tagMeaning from './TagMeaning.js';
40
40
  import * as tags from './Tags.js';
@@ -68,6 +68,7 @@ export declare class Analyzer {
68
68
  readonly owningPlainObjectModificationCheck: OwningPlainObjectModificationCheck;
69
69
  readonly packageImports: PackageImports;
70
70
  readonly typeUtils: TypeUtils;
71
+ readonly conflictsCheck: ConflictsCheck;
71
72
  private readonly _tsInteropInputs;
72
73
  private readonly _targetType;
73
74
  private readonly _typeAssignabilityCheck;
@@ -117,8 +118,8 @@ export declare class Analyzer {
117
118
  getUnambiguousTargetFunctionType(targetType: types.Type | undefined): types.FunctionType | undefined;
118
119
  getUnambiguousTargetArrayType(targetType: types.Type | undefined): types.Type | undefined;
119
120
  getEnumeratorElementType(node: tree.Node): types.Type | undefined;
120
- resolveFunctionOverloadByCallExpression<TCandidate extends operationOverloadResolver.ICandidate<TValueParameter>, TValueParameter extends operationOverloadResolver.IValueParameter>(candidates: readonly TCandidate[], node: tree.CallExpression): readonly TCandidate[];
121
- resolveFunctionOverloadByTargetType<TCandidate extends operationOverloadResolver.ICandidate<TValueParameter>, TValueParameter extends operationOverloadResolver.IValueParameter>(candidates: readonly TCandidate[], targetType: types.FunctionType): readonly TCandidate[];
121
+ resolveFunctionOverloadByCallExpression<TCandidate extends functionOverloadResolver.ICandidate<TValueParameter>, TValueParameter extends functionOverloadResolver.IValueParameter>(candidates: readonly TCandidate[], node: tree.CallExpression): readonly TCandidate[];
122
+ resolveFunctionOverloadByTargetType<TCandidate extends functionOverloadResolver.ICandidate<TValueParameter>, TValueParameter extends functionOverloadResolver.IValueParameter>(candidates: readonly TCandidate[], targetType: types.FunctionType): readonly TCandidate[];
122
123
  resolveConstructorOverload<TCandidate extends constructorOverloadResolver.ICandidate<TValueParameter>, TValueParameter extends constructorOverloadResolver.IValueParameter>(candidates: readonly TCandidate[], args: readonly tree.Argument[]): readonly TCandidate[];
123
124
  resolveTypeOverloadByArgumentCount<TCandidate extends typeOverloadResolver.ICandidate>(candidates: readonly TCandidate[], argumentCount: number): readonly TCandidate[];
124
125
  resolveMemberAccessExpression(node: tree.MemberAccessExpression, targetTypeHint?: TargetTypeHint): memberAccessExpressionResolution.ResolutionResult;
@@ -170,8 +171,6 @@ export declare class Analyzer {
170
171
  createNameFromIdentifier(node: tree.Identifier): Name;
171
172
  createSearchNameFromIdentifier(identifier: tree.Identifier): SearchName;
172
173
  createLocalizationContext(sourceFile: project.SourceFile): LocalizationContext;
173
- typeIsValidBaseObjectType(type: types.Type): boolean;
174
- typeIsValidBaseAspectType(type: types.Type): boolean;
175
174
  getImplicitBaseTypeForStructuredType(entity: e.StructuredTypeEntity): types.StructuredType | undefined;
176
175
  getImplicitBaseTypeForVariantType(): types.StructuredType;
177
176
  getImplicitBaseTypeForFunctionType(): types.StructuredType;
@@ -276,7 +275,8 @@ export declare class Analyzer {
276
275
  createAmbiguousNamedScopeDeclarationAccessLazyDiagnostic(declarations: readonly WithLocalization<semanticContext.NamedDeclaration>[], lctx: LocalizationContext, node: tree.Node): Lazy<Diagnostic>;
277
276
  addDiagnosticComputedLazily(diagnostic: Diagnostic): void;
278
277
  getAcceptorForDiagnosticsComputedLazily(): DiagnosticAcceptor;
279
- getDiagnosticsComputedLazily(sourceFile: project.SourceFile): readonly Diagnostic[];
278
+ getSourceFileDiagnosticsComputedLazily(sourceFile: project.SourceFile): readonly Diagnostic[];
279
+ getDiagnosticsWithoutLocationComputedLazily(): readonly Diagnostic[];
280
280
  validateSourcePackageMemberConflicts(pkg: project.ProgramPackage): readonly Diagnostic[];
281
281
  private createTsInterop;
282
282
  }
@@ -482,17 +482,17 @@ declare class DefaultConstructors {
482
482
  declare class OverriddenMember {
483
483
  private readonly _analyzer;
484
484
  constructor(_analyzer: Analyzer);
485
- getOverriddenVariables(node: tree.FieldDeclaration | FieldAccessorDeclaration): types.Variable[];
485
+ getOverriddenFields(node: tree.FieldDeclaration | FieldAccessorDeclaration): types.Field[];
486
486
  getOverriddenMethods(node: tree.MethodDeclaration): types.Method[];
487
487
  getOverriddenOperators(node: tree.OperatorDeclaration): types.Operator[];
488
488
  getOverriddenIndexers(node: IndexedElementAccessorDeclaration): types.Indexer[];
489
489
  getOverriddenDereferenceOperators(node: DereferencedVariableAccessorDeclaration): types.DereferenceOperator[];
490
- private findOverriddenVariableInType;
490
+ private findOverriddenFieldInType;
491
491
  private findOverriddenMethodInType;
492
492
  private findOverriddenOperatorInType;
493
493
  private findOverriddenIndexerInType;
494
494
  private findOverriddenDereferenceOperatorInType;
495
- private checkVariableOverridesVariable;
495
+ private checkFieldOverridesField;
496
496
  private checkMethodOverridesMethod;
497
497
  private checkOperatorOverridesOperator;
498
498
  private checkIndexerOverridesIndexer;
@@ -560,7 +560,7 @@ export declare class LinkedTypeWithMembers {
560
560
  private readonly _memberLookup;
561
561
  private get memberLookup();
562
562
  constructor(analyzer: Analyzer, externalType: e.TypeEntityWithMembers, targetType: e.TypeEntityWithMembers, linkedPackage: LinkedMultiPlatformPackage);
563
- getLinkedVariable(entity: e.FieldEntity): e.FieldEntity | undefined;
563
+ getLinkedField(entity: e.FieldEntity): e.FieldEntity | undefined;
564
564
  getLinkedMethod(entity: e.MethodEntity): e.MethodEntity | undefined;
565
565
  getLinkedOperator(entity: e.OperatorEntity): e.OperatorEntity | undefined;
566
566
  getLinkedConstructor(entity: e.ConstructorEntity): e.ConstructorEntity | undefined;
@@ -616,7 +616,7 @@ export declare class PackageImportInfo {
616
616
  readonly isAliasedImport: e.PackageAliasEntity | undefined;
617
617
  constructor(entity: e.PackageEntity, translationPackage: AnalyzedTranslationPackage | undefined, isAliasedImport: e.PackageAliasEntity | undefined);
618
618
  }
619
- export declare class TypeUtils {
619
+ declare class TypeUtils {
620
620
  private readonly _analyzer;
621
621
  constructor(_analyzer: Analyzer);
622
622
  getCommonObjectAndAspectTypesOfUnion(unionType: types.UnionType): readonly types.StructuredType[];
@@ -628,6 +628,46 @@ export declare class TypeUtils {
628
628
  private getFlattenedConstituentTypesForCommonTypesSearch;
629
629
  private flattenTypeParameterConstraint;
630
630
  }
631
+ declare class ConflictsCheck {
632
+ private readonly _analyzer;
633
+ private _stubParameterTypes;
634
+ constructor(_analyzer: Analyzer);
635
+ /**
636
+ * Проверяет, конфликтуют ли две функции, т.е. могут ли такие функции находиться в одной области видимости.
637
+ * Метод не сравнивает имена.
638
+ *
639
+ * Отношение "функции конфликтуют" не является транзитивным, т.е. из того, что функция 1 конфликтует с функцией 2 и
640
+ * функция 2 конфликтует с функцией 3 не следует, что функция 1 конфликтует с функцией 3.
641
+ *
642
+ * Пример:
643
+ * ```artel
644
+ * 1. функция ф<Т1>()
645
+ * 2. функция ф<Т1, Т2>()
646
+ * 3. функция ф<Т1, Т2 = Объект>()
647
+ * ```
648
+ *
649
+ * Функции 1 и 2 не конфликтуют между собой, поскольку имеют разное количество количество параметров типа, однако
650
+ * каждая из них конфликтует с функций 3, которая может принимать от 1 до 2 параметров типа.
651
+ */
652
+ doFunctionSignaturesConflict(function1: e.FunctionEntity, function2: e.FunctionEntity): boolean;
653
+ /**
654
+ * Проверяет, конфликтуют две сущности, имеющие параметры, но не имеющие параметры типа.
655
+ *
656
+ * Отношение "сущности, имеющие только параметры, конфликтуют" является транзитивным.
657
+ */
658
+ doSignaturesWithoutTypeParametersConflict(entity1: EntityWithoutTypeParametersInSignature, entity2: EntityWithoutTypeParametersInSignature): boolean;
659
+ /**
660
+ * Проверяет, конфликтуют ли два типа, т.е. могут ли такие типы находиться в одном пакете. Метод не сравнивает имена.
661
+ *
662
+ * Отношение "типы конфликтуют" не является транзитивным (см. комментарий у метода
663
+ * {@link doFunctionSignaturesConflict}).
664
+ */
665
+ doPackageTypesConflict(type1: e.PackageTypeEntity, type2: e.PackageTypeEntity): boolean;
666
+ doTypeArgumentCountsIntersect(typeParameters1: readonly e.TypeParameterEntity[], typeParameters2: readonly e.TypeParameterEntity[]): boolean;
667
+ private doParametersConflict;
668
+ private createSubstitutionMapWithStubTypes;
669
+ }
670
+ export type EntityWithoutTypeParametersInSignature = e.ConstructorEntity | e.DestructorEntity | e.OperatorEntity | e.IndexerEntity;
631
671
  export declare class ExpressionDenotesFunctionCheckResult {
632
672
  readonly candidates: readonly WithLocalization<AccessedFunction>[];
633
673
  readonly suitableFunctions: readonly WithLocalization<AccessedFunction>[];
@@ -5,7 +5,7 @@ import { Analyzer } from './Analyzer.js';
5
5
  import { FoundAnonymousDeclaration } from './FoundDeclaration.js';
6
6
  /**
7
7
  * "основа" не является самостоятельным выражением и может использоваться только в следующих конструкциях:
8
- * 1. основа() - в конструкторе для вызова базового конструктора или в методе для вызова заменённого метода.
8
+ * 1. основа() - в конструкторе для вызова базового конструктора или в методе для вызова базового метода.
9
9
  * 2. основа.поле (основа.метод) - в любом выражении в контексте типа, имеющего базовый тип.
10
10
  * 3. основа[] - аналогично п. 2.
11
11
  */
@@ -12,6 +12,7 @@ export declare class DiagnosticCollector {
12
12
  private readonly _diagnostics;
13
13
  private readonly _diagnosticAcceptor;
14
14
  private _namedDeclarationsCountResult;
15
+ private readonly _modifierValidator;
15
16
  private get node();
16
17
  private get translationPackage();
17
18
  private get isInterfacePackageFile();
@@ -50,7 +51,6 @@ export declare class DiagnosticCollector {
50
51
  private getPackageMemberBodyRequirementReason;
51
52
  private checkTypeMemberBodyPresence;
52
53
  private getTypeMemberBodyRequirementReason;
53
- private isBasicEntity;
54
54
  private checkIdentifierExpression;
55
55
  private checkLocalVariableUsedBeforeDeclaration;
56
56
  private checkLocalVariableIsUsedBeforeBeingAssigned;
@@ -3,4 +3,5 @@ import { ModifierFlags } from './ModifierFlags.js';
3
3
  type NodeWithModifiers = tree.PackageMemberDeclaration | tree.TypeMemberDeclaration;
4
4
  export declare function findModifier(node: NodeWithModifiers, modifierKeywordKind: tree.ModifierKeywordKind): tree.Modifier | undefined;
5
5
  export declare function createDeclaredModifierFlags(node: NodeWithModifiers): ModifierFlags;
6
+ export declare function modifierToModifierFlag(modifier: tree.Modifier): ModifierFlags;
6
7
  export {};
@@ -11,6 +11,8 @@ export declare class Resolver<TCandidate extends ICandidate<TValueParameter>, TV
11
11
  export interface ICandidate<TValueParameter extends IValueParameter> {
12
12
  getValueParameters(): readonly TValueParameter[];
13
13
  getSignatureType(): types.Type;
14
+ getTypeParameterCount(): number;
15
+ getRequiredTypeParameterCount(): number;
14
16
  }
15
17
  export interface IValueParameter {
16
18
  getName(): Name | undefined;
@@ -90,9 +90,9 @@ export declare class AccessedVariable_entity implements IAccessedVariable {
90
90
  getType(): types.Type;
91
91
  }
92
92
  export declare class AccessedVariable_typeMember implements IAccessedVariable {
93
- readonly value: types.Variable;
93
+ readonly value: types.Field;
94
94
  readonly kind = "type-member";
95
- constructor(value: types.Variable);
95
+ constructor(value: types.Field);
96
96
  getEntity(): VariableEntity;
97
97
  getName(): Name;
98
98
  getType(): types.Type;
@@ -13,7 +13,7 @@ export declare class Resolver {
13
13
  private readonly _analyzer;
14
14
  private readonly _node;
15
15
  private readonly _targetTypeHint;
16
- private get propertySearchName();
16
+ private get memberSearchName();
17
17
  private get semanticContext();
18
18
  private get receiver();
19
19
  constructor(analyzer: Analyzer, node: tree.MemberAccessExpression, targetTypeHint: TargetTypeHint | undefined);
@@ -70,10 +70,10 @@ declare class Meaning_packageNameSegmentAccess {
70
70
  }
71
71
  declare class Meaning_staticFieldAccess {
72
72
  readonly type: types.Type;
73
- readonly variable: FoundNamedDeclaration<types.Variable>;
73
+ readonly field: FoundNamedDeclaration<types.Field>;
74
74
  readonly accessKind: AccessKind;
75
75
  readonly kind = "static-field-access";
76
- constructor(type: types.Type, variable: FoundNamedDeclaration<types.Variable>, accessKind: AccessKind);
76
+ constructor(type: types.Type, field: FoundNamedDeclaration<types.Field>, accessKind: AccessKind);
77
77
  }
78
78
  declare class Meaning_staticMethodAccess {
79
79
  readonly type: types.Type;
@@ -84,10 +84,10 @@ declare class Meaning_staticMethodAccess {
84
84
  constructor(type: types.Type, candidates: readonly FoundNamedDeclaration<AccessedFunction>[], suitableFunctions: readonly FoundNamedDeclaration<AccessedFunction>[]);
85
85
  }
86
86
  declare class Meaning_instanceFieldAccess {
87
- readonly variable: FoundNamedDeclaration<types.Variable>;
87
+ readonly field: FoundNamedDeclaration<types.Field>;
88
88
  readonly accessKind: AccessKind;
89
89
  readonly kind = "instance-field-access";
90
- constructor(variable: FoundNamedDeclaration<types.Variable>, accessKind: AccessKind);
90
+ constructor(field: FoundNamedDeclaration<types.Field>, accessKind: AccessKind);
91
91
  }
92
92
  declare class Meaning_instanceMethodAccess {
93
93
  readonly candidates: readonly FoundNamedDeclaration<AccessedFunction>[];
@@ -8,8 +8,13 @@ export declare enum ModifierFlags {
8
8
  Basic = 32,
9
9
  Static = 64,
10
10
  Abstract = 128,
11
- Redefined = 256,
11
+ Override = 256,
12
12
  Async = 512,
13
13
  Const = 1024,
14
- NotComputed = 2048
14
+ First = 1,
15
+ Last = 1024,
16
+ NotComputed = 2048,
17
+ AnyHiddenModifier = 31,
18
+ HiddenInPackageOrWithoutLevel = 17,
19
+ HiddenInTypeOrWithoutLevel = 3
15
20
  }
@@ -0,0 +1,83 @@
1
+ import { PackageDialect, PackageLocale } from '../common/index.js';
2
+ import { DiagnosticAcceptor } from '../diagnostic/Diagnostic.js';
3
+ import * as tree from '../tree/index.js';
4
+ import { Analyzer } from './Analyzer.js';
5
+ import { ModifierFlags } from './ModifierFlags.js';
6
+ declare enum PackageMemberDeclarationKind {
7
+ TranslationsDeclaration = 0,
8
+ AliasTypeDeclaration = 1,
9
+ MemberGroupDeclaration = 2,
10
+ TypeExtensionDeclaration = 3,
11
+ ConstructorDeclaration = 4,
12
+ EntryPointDeclaration = 5,
13
+ FunctionDeclaration = 6,
14
+ FunctionTypeDeclaration = 7,
15
+ ObjectTypeDeclaration = 8,
16
+ PlainObjectTypeDeclaration = 9,
17
+ AspectTypeDeclaration = 10,
18
+ VariableDeclaration = 11,
19
+ VariableGetterDeclaration = 12,
20
+ VariableSetterDeclaration = 13,
21
+ VariantTypeDeclaration = 14,
22
+ InvalidDeclaration = 15
23
+ }
24
+ type TypeMemberDeclarationKind = tree.TypeMemberDeclaration['kind'];
25
+ export declare enum DeclarationWithTypeMembersKind {
26
+ ObjectType = 0,
27
+ PlainObjectType = 1,
28
+ AspectType = 2,
29
+ VariantType = 3,
30
+ AliasType = 4,
31
+ TypeExtension = 5
32
+ }
33
+ export declare class ModifierValidator {
34
+ private readonly _analyzer;
35
+ private readonly _diagnostics;
36
+ private readonly _locale;
37
+ private readonly _dialect;
38
+ static readonly allowedPackageMemberHidingModifiers: number;
39
+ static readonly allowedPackageMemberModifiers: number;
40
+ static readonly allowedModifiersByPackageMemberDeclarationKind: {
41
+ [T in PackageMemberDeclarationKind]: ModifierFlags;
42
+ };
43
+ static readonly allowedTypeMemberHidingModifiers: number;
44
+ static readonly allowedTypeMemberModifiers: number;
45
+ static readonly allowedModifiersByTypeMemberDeclarationKind: {
46
+ [T in TypeMemberDeclarationKind]: ModifierFlags;
47
+ };
48
+ constructor(_analyzer: Analyzer, _diagnostics: DiagnosticAcceptor, _locale: PackageLocale, _dialect: PackageDialect);
49
+ static validatePackageVariableAccessorsHaveConsistentModifiers(analyzer: Analyzer, getterModifiers: ModifierFlags, setterModifiers: ModifierFlags, nodeForDiagnostic: tree.Node, diagnostics: DiagnosticAcceptor): void;
50
+ static validateFieldAccessorsHaveConsistentModifiers(analyzer: Analyzer, getterModifiers: ModifierFlags, setterModifiers: ModifierFlags, nodeForDiagnostic: tree.Node, diagnostics: DiagnosticAcceptor): void;
51
+ static validateIndexedElementAccessorsHaveConsistentModifiers(analyzer: Analyzer, getterModifiers: ModifierFlags, setterModifiers: ModifierFlags, nodeForDiagnostic: tree.Node, diagnostics: DiagnosticAcceptor): void;
52
+ static validateDereferencedVariableAccessorsHaveConsistentModifiers(analyzer: Analyzer, getterModifiers: ModifierFlags, setterModifiers: ModifierFlags, nodeForDiagnostic: tree.Node, diagnostics: DiagnosticAcceptor): void;
53
+ validateTopLevelPackageMembers(list: tree.PackageMemberDeclarationList): void;
54
+ validateTopLevelTypeMembers(list: tree.TypeMemberDeclarationList, declarationWithMembersKind: DeclarationWithTypeMembersKind, isTypeMarkedAbstract: boolean, isTypeMarkedBasic: boolean): void;
55
+ private static validateTypeMemberAccessorsHaveConsistentModifiers;
56
+ private static validatePackageMemberSetterHasMoreRestrictiveHidingLevel;
57
+ private static validateTypeMemberSetterHasMoreRestrictiveHidingLevel;
58
+ private static reportMoreRestrictiveHidingLevelIsRequired;
59
+ private static reportSetterMustHaveSameModifiersAsGetter;
60
+ private validatePackageMembers;
61
+ private validatePackageMemberModifierList;
62
+ private validatePackageMemberCanBePlacedInGroupWithModifiers;
63
+ private validatePackageConstructorDeclaration;
64
+ private validatePackageEntryPointDeclaration;
65
+ private validateTranslationsDeclaration;
66
+ private validateTypeMembers;
67
+ private validateTypeMemberModifierList;
68
+ private validateTypeMemberCanBePlacedInGroupWithModifiers;
69
+ private typeMemberAllowsAbstractModifier;
70
+ private typeMemberAllowsBasicModifier;
71
+ private typeMemberAllowsOverrideModifier;
72
+ private typeMemberAllowsStaticModifier;
73
+ private reportDuplicateModifier;
74
+ private reportDuplicateHiddenModifier;
75
+ private reportDeclarationCanNotBePlacedInGroupWithModifier;
76
+ private reportModifierCanNotBeUsedWithAnotherModifier;
77
+ private reportModifierIsNotAllowedHere;
78
+ private displayModifierNode;
79
+ private displayModifierFlag;
80
+ private displayModifier;
81
+ private forEachModifierFlag;
82
+ }
83
+ export {};
@@ -9,11 +9,10 @@ export declare class PackageMemberNameConflictsValidator {
9
9
  constructor(_analyzer: Analyzer, _members: OriginalPackageMembers);
10
10
  validate(): readonly Diagnostic[];
11
11
  private validateFunctionNameConflicts;
12
- private areFunctionSignaturesEqual;
13
12
  private validateTypeNameConflicts;
14
- private typeParameterCountsIntersect;
15
13
  private createAndAddNameConflictDiagnosticsForAllEntities;
16
- private createAndAddNameConflictDiagnostic;
14
+ private shouldReportConflictWithMemberBasedOnHiding;
15
+ private reportNameConflictDiagnostic;
17
16
  private getDiagnosticLocation;
18
17
  }
19
18
  export declare class SourcePackageMemberConflictsValidator {
@@ -0,0 +1,22 @@
1
+ import { DiagnosticAcceptor } from '../diagnostic/Diagnostic.js';
2
+ import { OriginalTypeEntityMembers } from '../entities/TypeEntityMembers.js';
3
+ import { Analyzer } from './Analyzer.js';
4
+ export declare class TypeMemberConflictsValidator {
5
+ private readonly _analyzer;
6
+ private readonly _members;
7
+ private readonly _diagnostics;
8
+ constructor(_analyzer: Analyzer, _members: OriginalTypeEntityMembers, _diagnostics: DiagnosticAcceptor);
9
+ validate(): void;
10
+ private validateNamedMembers;
11
+ private validateNamedMembersWithoutIsStaticCheck;
12
+ private validateMethodsWithSameName;
13
+ private validateConstructors;
14
+ private validateDestructors;
15
+ private validateOperators;
16
+ private validateIndexers;
17
+ private validateDereferenceOperators;
18
+ private validateMembersWithoutTypeParametersInSignature;
19
+ private reportNameConflictDiagnosticsForAllEntities;
20
+ private reportNameConflictDiagnostic;
21
+ private getDiagnosticLocation;
22
+ }
@@ -27,10 +27,10 @@ export declare namespace NarrowableReference {
27
27
  }
28
28
  export class InstanceField implements INarrowableReference {
29
29
  private readonly _analyzer;
30
- readonly variable: types.Variable;
30
+ readonly field: types.Field;
31
31
  readonly receiver: NarrowableReference;
32
32
  readonly kind = "instance-field";
33
- constructor(_analyzer: Analyzer, variable: types.Variable, receiver: NarrowableReference);
33
+ constructor(_analyzer: Analyzer, field: types.Field, receiver: NarrowableReference);
34
34
  equals(other: NarrowableReference): boolean;
35
35
  contains(other: NarrowableReference): boolean;
36
36
  equalsExpression(expression: NarrowableReferenceExpression): boolean;
@@ -38,9 +38,9 @@ export declare namespace NarrowableReference {
38
38
  }
39
39
  export class StaticField implements INarrowableReference {
40
40
  private readonly _analyzer;
41
- readonly variable: types.Variable;
41
+ readonly field: types.Field;
42
42
  readonly kind = "static-field";
43
- constructor(_analyzer: Analyzer, variable: types.Variable);
43
+ constructor(_analyzer: Analyzer, field: types.Field);
44
44
  equals(other: NarrowableReference): boolean;
45
45
  contains(_other: NarrowableReference): boolean;
46
46
  equalsExpression(expression: NarrowableReferenceExpression): boolean;
@@ -45,7 +45,7 @@ export declare class AssignmentNode extends ControlFlowNodeBase {
45
45
  }
46
46
  /**
47
47
  * Создаётся в местах объявления локальных переменных. Если переменной присваивается начальное значение, её тип будет
48
- * заменён на тип присваиваемого выражения.
48
+ * взят как тип присваиваемого выражения.
49
49
  */
50
50
  export declare class LocalVariableDeclarationNode extends ControlFlowNodeBase {
51
51
  readonly predecessor: Node;
@@ -77,9 +77,9 @@ export declare class NamedDeclarationVariable_entity implements INamedDeclaratio
77
77
  isHidden(): EntityHidingLevel | undefined;
78
78
  }
79
79
  export declare class NamedDeclarationVariable_typeMember implements INamedDeclarationVariable {
80
- readonly value: types.Variable;
80
+ readonly value: types.Field;
81
81
  readonly kind = "type-member";
82
- constructor(value: types.Variable);
82
+ constructor(value: types.Field);
83
83
  getName(): Name;
84
84
  getEntity(): VariableEntity;
85
85
  isHidden(): EntityHidingLevel | undefined;
@@ -33,7 +33,6 @@ export declare abstract class SemanticContextValidatingNameConflictsBase extends
33
33
  validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
34
34
  private getMemberEntityDictionary;
35
35
  private validateNestedFunctionsConflicts;
36
- private areNestedFunctionSignaturesEqual;
37
36
  private createNamedDeclarations;
38
37
  private createTypesOrContainerWithTypes;
39
38
  }
@@ -0,0 +1,8 @@
1
+ export declare class ArrayUtils {
2
+ /**
3
+ * Удаляет элемент из массива по заданному индексу.
4
+ *
5
+ * Работает быстрее, чем `array.splice(index, 1)`, и не выделяет память для массива удалённых элементов.
6
+ */
7
+ static removeElement<T>(array: T[], index: number): void;
8
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './AccessKind.js';
2
+ export * from './ArrayUtils.js';
2
3
  export * from './ArtelFileCheck.js';
3
4
  export * from './Cached.js';
4
5
  export * from './CancellationToken.js';
@@ -114,35 +114,63 @@ export declare enum DiagnosticCode {
114
114
  IncorrectBodyOfBasicAliasTypeMethod = 276,
115
115
  TheFollowingDeclarationsAreNotTranslated0 = 277,
116
116
  TheFollowingDeclarationAreNotTranslated0And1More = 278,
117
- OperatorFunctionMustNotBeStatic = 279,
118
- OperatorFunction0MustNotHaveParameters = 280,
119
- OperatorFunction0MustHaveOneParameter = 281,
120
- OperatorFunction0MustHaveNoMoreThanOneParameter = 282,
121
- CorrespondingBasicTypeMemberNotFound = 283,
122
- ConstructorCannotBeDeclaredAsBasic = 284,
123
- ConstructorCannotBeDeclaredAsOverridden = 285,
124
- AsyncFunctionCanOnlyBeCalledFromFunctionMarkedWithAsyncModifier = 286,
125
- TagNotFound = 287,
126
- TypeOrFunctionNameExpected = 288,
127
- PackageNameOrAliasExpected = 289,
128
- ExpressionCanBeNone = 290,
129
- TargetVariableExpressionInTheAssignmentStatementCannotContainQuestionOperator = 291,
130
- UnreachableCode = 292,
131
- RecursionOccurredWhileCalculatingTheTypeOfTheExpression = 293,
132
- RecursionOccurredWhileInferringTheTypeOfTheVariable = 294,
133
- ScopeAlreadyContainsDeclarationWithTheSameName = 295,
134
- ScopeAlreadyContainsFunctionWithTheSameNameAndParameterTypes = 296,
135
- ParameterName0ConflictsWithAutomaticallyGeneratedVariableName = 297,
136
- PackageAlreadyContainsDeclarationWithTheSameName = 298,
137
- PackageAlreadyContainsFunctionWithTheSameNameAndParameterTypes = 299,
138
- PackageAlreadyContainsTypeWithTheSameNameAndSameOrIntersectingTypeParameterCount = 300,
139
- PackageAliasWithTheSameNameAlreadyExits = 301,
140
- PackageCanHaveOnlyEntryPoint = 302,
141
- PackageCanHaveOnlyOneConstructor = 303,
142
- VariableIsUsedBeforeItsDeclaration = 304,
143
- VariableMayNotHasBeenAssignedBeforeUsage = 305,
144
- NotAllCodePathsReturnAValueAndResultLocalVariableMayNotHasBeenAssigned = 306,
145
- WriteFunctionHasNoCorrespondingReadFunction = 307,
117
+ OperatorFunction0MustNotHaveParameters = 279,
118
+ OperatorFunction0MustHaveOneParameter = 280,
119
+ OperatorFunction0MustHaveNoMoreThanOneParameter = 281,
120
+ CorrespondingBasicTypeMemberNotFound = 282,
121
+ AsyncFunctionCanOnlyBeCalledFromFunctionMarkedWithAsyncModifier = 283,
122
+ TagNotFound = 284,
123
+ TypeOrFunctionNameExpected = 285,
124
+ PackageNameOrAliasExpected = 286,
125
+ ExpressionCanBeNone = 287,
126
+ TargetVariableExpressionInTheAssignmentStatementCannotContainQuestionOperator = 288,
127
+ UnreachableCode = 289,
128
+ RecursionOccurredWhileCalculatingTheTypeOfTheExpression = 290,
129
+ RecursionOccurredWhileInferringTheTypeOfTheVariable = 291,
130
+ ScopeAlreadyContainsDeclarationWithTheSameName = 292,
131
+ ScopeAlreadyContainsFunctionWithTheSameNameAndParameterTypes = 293,
132
+ ParameterName0ConflictsWithAutomaticallyGeneratedVariableName = 294,
133
+ PackageAlreadyContainsDeclarationWithTheSameName = 295,
134
+ PackageAlreadyContainsFunctionWithTheSameNameAndParameterTypes = 296,
135
+ PackageAlreadyContainsTypeWithTheSameNameAndSameOrIntersectingTypeParameterCount = 297,
136
+ PackageAliasWithTheSameNameAlreadyExits = 298,
137
+ PackageCanHaveOnlyEntryPoint = 299,
138
+ PackageCanHaveOnlyOneConstructor = 300,
139
+ TypeAlreadyContainsDeclarationWithTheSameName = 301,
140
+ TypeAlreadyContainsMethodWithTheSameNameAndParameterTypes = 302,
141
+ TypeAlreadyContainsConstructorWithTheSameParameterTypes = 303,
142
+ TypeAlreadyContainsOperatorFunctionWithTheSameParameterTypes = 304,
143
+ TypeAlreadyContainsIndexerWithTheSameParameterTypes = 305,
144
+ TypeCanHaveOnlyOneDestructor = 306,
145
+ TypeCanHaveOnlyOneDereferenceOperator = 307,
146
+ VariableIsUsedBeforeItsDeclaration = 308,
147
+ VariableMayNotHasBeenAssignedBeforeUsage = 309,
148
+ NotAllCodePathsReturnAValueAndResultLocalVariableMayNotHasBeenAssigned = 310,
149
+ WriteFunctionHasNoCorrespondingReadFunction = 311,
150
+ TypeCanNotHaveMultipleBaseObjectTypes = 312,
151
+ TypeThatIsNotMarkedAsBasicCanNotBeUsedAsBaseType = 313,
152
+ PlainObjectTypeCanNotBeUsedAsBaseType = 314,
153
+ ThisTypeIsAlreadyListedInBaseTypeList = 315,
154
+ OnlyObjectAndAspectTypesCanBeUsedAsBaseTypes = 316,
155
+ PlainObjectTypeCanHaveOnlyAspectsAsBaseTypes = 317,
156
+ AspectTypeCanHaveOnlyAspectsAsBaseTypes = 318,
157
+ ModifierListAlreadyContains0Modifier = 319,
158
+ ModifierListOfOuterDeclarationGroupAlreadyContains0Modifier = 320,
159
+ _0ModifierIsNotAllowedHere = 321,
160
+ DeclarationCanNotBePlacedInGroupHaving0Modifier = 322,
161
+ PackageConstructorDeclarationCanNotHaveModifiers = 323,
162
+ PackageEntryPointDeclarationCanNotHaveModifiers = 324,
163
+ TranslationsCanNotHaveModifiers = 325,
164
+ AbstractModifierCanOnlyBeUsedInAbstractObjectTypes = 326,
165
+ BasicModifierCanOnlyBeUsedInObjectTypesAspectTypesAndTypeAliases = 327,
166
+ OverrideModifierCanOnlyBeUsedInObjectAndAspectTypes = 328,
167
+ _0ModifierCanNotBeUsedWith1Modifier = 329,
168
+ VariantDeclarationCanNotHaveHiddenModifier = 330,
169
+ BasicModifierCanOnlyBeAppliedToObjectTypes = 331,
170
+ AbstractModifierCanOnlyBeAppliedToObjectTypes = 332,
171
+ NotBasicObjectTypesCanNotHaveBasicMembers = 333,
172
+ WriteFunctionMustHaveTheSameModifiersAsReadFunction = 334,
173
+ WriteFunctionMustHaveTheSameOrMoreRestrictiveHidingLevelThenReadFunction = 335,
146
174
  CannotFindTsLibDirectoryBaseSearchPaths0 = 401,
147
175
  SourceFile0IsNotPartOfThePackageAndWontBeLoaded = 402,
148
176
  ProgramWithoutMainPackageCannotBeCompiled = 403,
@@ -44,7 +44,7 @@ export interface ComputedNameInfo {
44
44
  */
45
45
  readonly affectsDeclaration: boolean;
46
46
  /**
47
- * Должны ли члены типы, заменяющие этот член, использовать указанный символ в качестве ключа?
47
+ * Должны ли расширенные (override-) члены производных типов использовать указанный символ в качестве ключа?
48
48
  */
49
49
  readonly affectsDerivedMembers: boolean;
50
50
  }
@@ -105,9 +105,9 @@ export declare class TypeOrExtensionEntityDetails {
105
105
  isDefaultExport: boolean;
106
106
  extendedType: TypeOrExtensionEntity | undefined;
107
107
  /**
108
- * Является ли имя члена типа вычисляемым (`details.hasComputedName`) может зависеть от заменённых членов типа.
108
+ * Является ли имя члена типа вычисляемым (`details.hasComputedName`) может зависеть от переопределённых членов типа.
109
109
  * Если `areOwnComputedNamesOfMembersResolved` === `true`, поля `details.hasComputedName` членов типа хранят
110
- * актуальную для них самих информацию, и анализ заменённых членов типа не требуется.
110
+ * актуальную для них самих информацию, и анализ переопределённых членов типа не требуется.
111
111
  */
112
112
  areOwnComputedNamesOfMembersResolved: boolean;
113
113
  }
@@ -72,7 +72,7 @@ export declare class PackageAliasTypeDeclarationEntity implements AliasTypeEntit
72
72
  private readonly _aliasedType;
73
73
  private readonly _typeParameters;
74
74
  private readonly _members;
75
- private readonly _modifierFlags;
75
+ private _modifierFlags;
76
76
  private get modifierFlags();
77
77
  constructor(_analyzer: Analyzer, _node: PackageAliasTypeDeclaration);
78
78
  getName(): Name;