@artel/artc 0.6.25227 → 0.6.25229

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 (46) hide show
  1. package/build/Cli.js +3 -3
  2. package/build/api/Api.js +4 -2
  3. package/build/api/ApiNodeJS.js +3 -3
  4. package/build/api/ApiServices.js +297 -284
  5. package/build/{chunk-74TFH7TE.js → chunk-2FHW6RUS.js} +3 -3
  6. package/build/{chunk-VD6OPILI.js → chunk-4UBNOTKC.js} +3 -3
  7. package/build/{chunk-NOECPQMV.js → chunk-6YPLDA76.js} +2612 -2072
  8. package/build/types/analysis/Analyzer.d.ts +12 -5
  9. package/build/types/analysis/DeclarationsUsageCounter.d.ts +8 -3
  10. package/build/types/analysis/DiagnosticCollector.d.ts +9 -2
  11. package/build/types/analysis/ModifierFlags.d.ts +5 -6
  12. package/build/types/analysis/NodeTypeUtils.d.ts +2 -2
  13. package/build/types/analysis/PackageMemberNameConflictsValidator.d.ts +24 -0
  14. package/build/types/analysis/SourceFileMembers.d.ts +6 -1
  15. package/build/types/analysis/SourcePackageMembersCreator.d.ts +2 -1
  16. package/build/types/analysis/TypeInferrer.d.ts +2 -0
  17. package/build/types/analysis/control-flow/GraphBuilder.d.ts +5 -2
  18. package/build/types/analysis/semantic-context/SemanticContext.d.ts +1 -1
  19. package/build/types/analysis/semantic-context/SemanticContextValidatingNameConflicts.d.ts +1 -80
  20. package/build/types/analysis/semantic-context/SourceFileSemanticContext.d.ts +1 -1
  21. package/build/types/analysis/semantic-context/SubprogramBodyAndParametersSemanticContext.d.ts +89 -0
  22. package/build/types/analysis/semantic-context/SubprogramSemanticContext.d.ts +0 -8
  23. package/build/types/analysis/semantic-context/TypeSemanticContext.d.ts +9 -24
  24. package/build/types/analysis/semantic-context/index.d.ts +1 -0
  25. package/build/types/common/Cached.d.ts +1 -0
  26. package/build/types/diagnostic/DiagnosticCode.d.ts +86 -72
  27. package/build/types/emitter/Entities.d.ts +4 -4
  28. package/build/types/emitter/IrBuilder.d.ts +0 -1
  29. package/build/types/entities/DereferenceOperatorEntity.d.ts +4 -4
  30. package/build/types/entities/FunctionEntity.d.ts +8 -8
  31. package/build/types/entities/IndexerEntity.d.ts +4 -4
  32. package/build/types/entities/OperatorEntity.d.ts +4 -4
  33. package/build/types/entities/VariableEntity.d.ts +25 -12
  34. package/build/types/entities/index.d.ts +4 -0
  35. package/build/types/project/SourcePackage.d.ts +3 -1
  36. package/build/types/project/configuration/ConfigurationConverter.d.ts +1 -1
  37. package/build/types/project/configuration/types/PackageConfigurationEn.d.ts +2 -0
  38. package/build/types/project/configuration/types/PackageConfigurationRu.d.ts +2 -0
  39. package/build/types/tree/KeywordKind.d.ts +21 -22
  40. package/build/types/tree/NodeKind.d.ts +81 -82
  41. package/build/types/tree/green/BaseNode.d.ts +3 -1
  42. package/build/types/tree/green/Nodes.d.ts +3 -21
  43. package/build/types/tree/red/BaseNode.d.ts +2 -1
  44. package/build/types/tree/red/Nodes.d.ts +4 -19
  45. package/build/types/ts-interop/Entities.d.ts +12 -12
  46. package/package.json +1 -1
@@ -95,6 +95,8 @@ export declare class Analyzer {
95
95
  private readonly _namedDeclarationsUsageCountResults;
96
96
  private readonly _controlFlowGraphs;
97
97
  private readonly _diagnosticsComputedLazily;
98
+ private readonly _diagnosticsComputedLazilyAcceptor;
99
+ private readonly _sourcePackageMemberConflictsDiagnostics;
98
100
  get tsInterop(): TsInteropContext;
99
101
  constructor(compilation: project.Compilation, tsInteropInputs: TsInteropInputs);
100
102
  getProjectSourceFile(node: tree.SourceFile): project.SourceFile;
@@ -259,9 +261,9 @@ export declare class Analyzer {
259
261
  createDiagnostic(code: DiagnosticCode, location: DiagnosticLocation | undefined, formatArguments?: readonly string[], kind?: DiagnosticKind, flags?: DiagnosticFlags): Diagnostic;
260
262
  createNodeDiagnosticLocation(node: tree.Node): DiagnosticLocation;
261
263
  getDeclaredTypeMemberEntities(node: tree.TypeMemberDeclarationBlock): DeclaredTypeMemberEntities;
262
- getRedefinableMethodOfOriginalTypeForRedefinableMethodOfAliasType(entity: e.MethodEntity): e.MethodEntity | undefined;
263
- checkBodyOfRedefinableAliasTypeMethod(node: tree.MethodDeclaration, diagnostics?: DiagnosticAcceptor): {
264
- redefinableMethodOfOriginalType: e.MethodEntity;
264
+ getBasicMethodOfOriginalTypeForBasicMethodOfAliasType(entity: e.MethodEntity): e.MethodEntity | undefined;
265
+ checkBodyOfBasicAliasTypeMethod(node: tree.MethodDeclaration, diagnostics?: DiagnosticAcceptor): {
266
+ basicMethodOfOriginalType: e.MethodEntity;
265
267
  } | undefined;
266
268
  getControlFlowGraph(sourceFile: project.SourceFile): controlFlow.GraphBuildResult;
267
269
  createAmbiguousEntityAccessDiagnostic(entities: readonly WithLocalization<e.Entity>[], lctx: LocalizationContext, node: tree.Node): Diagnostic;
@@ -272,8 +274,10 @@ export declare class Analyzer {
272
274
  createAmbiguousTypeMemberAccessLazyDiagnostic(members: readonly WithLocalization<types.TypeMember>[], lctx: LocalizationContext, node: tree.Node): Lazy<Diagnostic>;
273
275
  createAmbiguousNamedScopeDeclarationAccessDiagnostic(declarations: readonly WithLocalization<semanticContext.NamedDeclaration>[], lctx: LocalizationContext, node: tree.Node): Diagnostic;
274
276
  createAmbiguousNamedScopeDeclarationAccessLazyDiagnostic(declarations: readonly WithLocalization<semanticContext.NamedDeclaration>[], lctx: LocalizationContext, node: tree.Node): Lazy<Diagnostic>;
275
- addNodeDiagnosticComputedLazily(node: tree.Node, diagnostic: Diagnostic): void;
277
+ addDiagnosticComputedLazily(diagnostic: Diagnostic): void;
278
+ getAcceptorForDiagnosticsComputedLazily(): DiagnosticAcceptor;
276
279
  getDiagnosticsComputedLazily(sourceFile: project.SourceFile): readonly Diagnostic[];
280
+ validateSourcePackageMemberConflicts(pkg: project.ProgramPackage): readonly Diagnostic[];
277
281
  private createTsInterop;
278
282
  }
279
283
  export declare class TsInteropInputs {
@@ -327,7 +331,6 @@ declare class Type {
327
331
  private ofMemberAccessExpression;
328
332
  private ofReferenceExpression;
329
333
  private ofDereferenceExpression;
330
- private ofWhenTernaryExpression;
331
334
  private ofConditionalExpression;
332
335
  private ofTextTemplateLiteral;
333
336
  private ofIdentifierExpression;
@@ -360,6 +363,10 @@ declare class ReturnType {
360
363
  ofFunctionLiteral(node: tree.FunctionLiteral): types.Type;
361
364
  ofMethodDeclaration(node: tree.MethodDeclaration): types.Type;
362
365
  ofOperatorDeclaration(node: tree.OperatorDeclaration): types.Type;
366
+ ofPackageVariableGetterDeclaration(node: tree.PackageVariableGetterDeclaration): types.Type;
367
+ ofFieldGetterDeclaration(node: tree.FieldGetterDeclaration): types.Type;
368
+ ofDereferencedVariableGetterDeclaration(node: tree.DereferencedVariableGetterDeclaration): types.Type;
369
+ ofIndexedElementGetterDeclaration(node: tree.IndexedElementGetterDeclaration): types.Type;
363
370
  }
364
371
  declare class Entity {
365
372
  private readonly _analyzer;
@@ -7,12 +7,17 @@ export declare class DeclarationsUsageCounter {
7
7
  private readonly _analyzer;
8
8
  private readonly _sourceFile;
9
9
  private readonly _cancellationToken;
10
- private readonly _usageCountByEntity;
10
+ private readonly _usageInfoByEntity;
11
11
  constructor(analyzer: Analyzer, sourceFile: tree.SourceFile, cancellationToken: CancellationToken | undefined);
12
12
  count(): Promise<DeclarationsUsageCountResult>;
13
+ private recordUsage;
13
14
  }
14
15
  export declare class DeclarationsUsageCountResult {
15
16
  private readonly _usageCountByEntity;
16
- constructor(_usageCountByEntity: ReadonlyMap<Entity, number>);
17
- getUsageCount(entity: NamedEntity): number;
17
+ constructor(_usageCountByEntity: ReadonlyMap<Entity, DeclarationUsageInfo>);
18
+ getUsageInfo(entity: NamedEntity): DeclarationUsageInfo;
19
+ }
20
+ export interface DeclarationUsageInfo {
21
+ readonly usageCount: number;
22
+ readonly hasGetAccess: boolean;
18
23
  }
@@ -18,6 +18,8 @@ export declare class DiagnosticCollector {
18
18
  constructor(analyzer: Analyzer, sourceFile: project.SourceFile, cancellationToken: CancellationToken | undefined);
19
19
  collect(): Promise<Diagnostic[]>;
20
20
  private collectNodeDiagnostics;
21
+ private checkFunctionLiteral;
22
+ private checkFunctionBlockLiteral;
21
23
  private checkDereferenceExpression;
22
24
  private checkIndexedAccessExpression;
23
25
  private checkCallExpression;
@@ -44,9 +46,11 @@ export declare class DiagnosticCollector {
44
46
  private checkPossibleGeneratorFunctionReturnType;
45
47
  private checkReturnStatement;
46
48
  private checkYieldStatement;
49
+ private checkPackageMemberBodyPresence;
50
+ private getPackageMemberBodyRequirementReason;
47
51
  private checkTypeMemberBodyPresence;
48
- private tryGetTypeMemberDeclarationEntity;
49
- private isAspectTypeMemberDeclaration;
52
+ private getTypeMemberBodyRequirementReason;
53
+ private isBasicEntity;
50
54
  private checkIdentifierExpression;
51
55
  private checkLocalVariableUsedBeforeDeclaration;
52
56
  private checkLocalVariableIsUsedBeforeBeingAssigned;
@@ -74,6 +78,9 @@ export declare class DiagnosticCollector {
74
78
  private checkTypeArgumentCount;
75
79
  private checkParameterDeclaration;
76
80
  private checkIfVariableIsUnused;
81
+ private checkIfNestedFunctionIsUnused;
82
+ private checkIfTypeParameterIsUnused;
83
+ private checkAllCodePathsReturnOrResultVariableIsAssigned;
77
84
  private addDiagnostic;
78
85
  private addDiagnostics;
79
86
  private addMaybeLazyDiagnostic;
@@ -7,10 +7,9 @@ export declare enum ModifierFlags {
7
7
  HiddenInPackage = 16,
8
8
  Basic = 32,
9
9
  Static = 64,
10
- Redefinable = 128,
11
- Abstract = 256,
12
- Redefined = 512,
13
- Async = 1024,
14
- Const = 2048,
15
- NotComputed = 4096
10
+ Abstract = 128,
11
+ Redefined = 256,
12
+ Async = 512,
13
+ Const = 1024,
14
+ NotComputed = 2048
16
15
  }
@@ -13,6 +13,7 @@ export declare class NodeTypeUtils {
13
13
  static isVariableDeclaration(node: tree.Node): node is VariableDeclaration;
14
14
  static isVariantTypeDeclaration(node: tree.Node): node is VariantTypeDeclaration;
15
15
  static isNoneLiteral(node: tree.Node): boolean;
16
+ static isSubprogramDeclarationOrLiteral(node: tree.Node): node is SubprogramDeclarationOrLiteral;
16
17
  }
17
18
  export type PackageTypeDeclaration = tree.PackageAliasTypeDeclaration | tree.PackageFunctionTypeDeclaration | tree.PackageStructuredTypeDeclaration | tree.PackageVariantTypeDeclaration;
18
19
  export type StructuredTypeDeclaration = tree.PackageStructuredTypeDeclaration | tree.AnonymousStructuredTypeDeclaration;
@@ -28,6 +29,5 @@ export type PackageVariableAccessorDeclaration = tree.PackageVariableGetterDecla
28
29
  export type FieldAccessorDeclaration = tree.FieldGetterDeclaration | tree.FieldSetterDeclaration;
29
30
  export type IndexedElementAccessorDeclaration = tree.IndexedElementGetterDeclaration | tree.IndexedElementSetterDeclaration;
30
31
  export type DereferencedVariableAccessorDeclaration = tree.DereferencedVariableGetterDeclaration | tree.DereferencedVariableSetterDeclaration;
31
- export type SubprogramDeclaration = tree.FunctionBlockParent;
32
32
  export type RegularOrBlockFunctionLiteral = tree.FunctionLiteral | tree.FunctionBlockLiteral;
33
- export type SubprogramDeclarationOrLiteral = SubprogramDeclaration | RegularOrBlockFunctionLiteral;
33
+ export type SubprogramDeclarationOrLiteral = tree.FunctionBlockParent;
@@ -0,0 +1,24 @@
1
+ import { Diagnostic } from '../diagnostic/Diagnostic.js';
2
+ import { OriginalPackageMembers } from '../entities/PackageMembers.js';
3
+ import { ProgramPackage } from '../project/SourcePackage.js';
4
+ import { Analyzer } from './Analyzer.js';
5
+ export declare class PackageMemberNameConflictsValidator {
6
+ private readonly _analyzer;
7
+ private readonly _members;
8
+ private readonly _diagnostics;
9
+ constructor(_analyzer: Analyzer, _members: OriginalPackageMembers);
10
+ validate(): readonly Diagnostic[];
11
+ private validateFunctionNameConflicts;
12
+ private areFunctionSignaturesEqual;
13
+ private validateTypeNameConflicts;
14
+ private typeParameterCountsIntersect;
15
+ private createAndAddNameConflictDiagnosticsForAllEntities;
16
+ private createAndAddNameConflictDiagnostic;
17
+ private getDiagnosticLocation;
18
+ }
19
+ export declare class SourcePackageMemberConflictsValidator {
20
+ private readonly _analyzer;
21
+ private readonly _package;
22
+ constructor(_analyzer: Analyzer, _package: ProgramPackage);
23
+ validate(): readonly Diagnostic[];
24
+ }
@@ -1,15 +1,20 @@
1
1
  import { SearchName } from '../common/index.js';
2
+ import { DiagnosticAcceptor } from '../diagnostic/Diagnostic.js';
2
3
  import { PackageAliasEntity, PackageFunctionEntity, PackageTypeEntity, PackageVariableEntity, TypeExtensionEntity } from '../entities/index.js';
4
+ import { Analyzer } from './Analyzer.js';
3
5
  export declare class SourceFileMembers {
6
+ private readonly _analyzer;
4
7
  private readonly _namedMembers;
5
8
  private readonly _typeExtensions;
6
9
  private readonly _declarationsByName;
7
10
  get declarationsByName(): ReadonlyMap<string, readonly NamedSourceFileMemberEntity[]>;
8
- constructor(namedMembers: readonly NamedSourceFileMemberEntity[], typeExtensions: readonly TypeExtensionEntity[]);
11
+ constructor(analyzer: Analyzer, namedMembers: readonly NamedSourceFileMemberEntity[], typeExtensions: readonly TypeExtensionEntity[]);
9
12
  getNamedDeclarations(): readonly NamedSourceFileMemberEntity[];
10
13
  getNamedDeclarationsByName(name: SearchName): readonly NamedSourceFileMemberEntity[];
11
14
  getPackageAliases(): readonly PackageAliasEntity[];
12
15
  getPackageAliasesByName(name: SearchName): readonly PackageAliasEntity[];
13
16
  getTypeExtensions(): readonly TypeExtensionEntity[];
17
+ validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
18
+ private getDiagnosticLocation;
14
19
  }
15
20
  export type NamedSourceFileMemberEntity = PackageTypeEntity | PackageVariableEntity | PackageFunctionEntity | PackageAliasEntity;
@@ -1,6 +1,7 @@
1
+ import { DiagnosticAcceptor } from '../diagnostic/Diagnostic.js';
1
2
  import { PackageVariableEntity } from '../entities/VariableEntity.js';
2
3
  import * as tree from '../tree/index.js';
3
4
  import { Analyzer } from './Analyzer.js';
4
5
  export declare class SourcePackageMembersCreator {
5
- static createMembersWithCompoundDeclarations(analyzer: Analyzer, memberList: tree.PackageMemberDeclarationList, resultingComputedVariables: Map<tree.Node, PackageVariableEntity>): void;
6
+ static createMembersWithCompoundDeclarations(analyzer: Analyzer, memberList: tree.PackageMemberDeclarationList, resultingComputedVariables: Map<tree.Node, PackageVariableEntity>, diagnostics: DiagnosticAcceptor | undefined): void;
6
7
  }
@@ -4,6 +4,8 @@ export declare class TypeInferrer {
4
4
  private readonly _analyzer;
5
5
  private _getType;
6
6
  private _typeInferringState;
7
+ private _hasDetectedInferenceCycle;
8
+ get hasDetectedInferenceCycle(): boolean;
7
9
  constructor(analyzer: Analyzer, getType: () => types.Type);
8
10
  inferType(): types.Type;
9
11
  }
@@ -1,10 +1,12 @@
1
1
  import { Diagnostic } from '../../diagnostic/Diagnostic.js';
2
2
  import { SourceFile } from '../../project/SourceFile.js';
3
+ import { SubprogramDeclarationOrLiteral } from '../NodeTypeUtils.js';
3
4
  import { NarrowableReferenceExpression } from './NarrowableExpression.js';
4
5
  import { Node } from './Nodes.js';
5
6
  export declare class GraphBuilder {
6
7
  private readonly _sourceFile;
7
8
  private readonly _controlFlowNodeByReference;
9
+ private readonly _controlFlowNodesEndingSubprogram;
8
10
  private readonly _unreachableCodeDiagnostics;
9
11
  private _isInRebuildingFinallyClauseGraphMode;
10
12
  private _currentPredecessor;
@@ -12,6 +14,7 @@ export declare class GraphBuilder {
12
14
  private _currentBreakLoopTarget;
13
15
  private _currentErrorTarget;
14
16
  private _currentReturnTarget;
17
+ private _currentRangeWithReportedUnreachableCodeDiagnostic;
15
18
  constructor(sourceFile: SourceFile);
16
19
  build(): GraphBuildResult;
17
20
  private visitNode;
@@ -27,7 +30,6 @@ export declare class GraphBuilder {
27
30
  private visitReturnStatement;
28
31
  private visitErrorStatement;
29
32
  private visitLocalVariableDeclaration;
30
- private visitWhenTernaryExpression;
31
33
  private visitConditionalExpression;
32
34
  private visitCondition;
33
35
  private visitBinaryExpression;
@@ -39,6 +41,7 @@ export declare class GraphBuilder {
39
41
  }
40
42
  export declare class GraphBuildResult {
41
43
  readonly controlFlowNodeByReference: ReadonlyMap<NarrowableReferenceExpression, Node>;
44
+ readonly controlFlowNodesEndingSubprogram: ReadonlyMap<SubprogramDeclarationOrLiteral, Node>;
42
45
  readonly unreachableCodeDiagnostics: readonly Diagnostic[];
43
- constructor(controlFlowNodeByReference: ReadonlyMap<NarrowableReferenceExpression, Node>, unreachableCodeDiagnostics: readonly Diagnostic[]);
46
+ constructor(controlFlowNodeByReference: ReadonlyMap<NarrowableReferenceExpression, Node>, controlFlowNodesEndingSubprogram: ReadonlyMap<SubprogramDeclarationOrLiteral, Node>, unreachableCodeDiagnostics: readonly Diagnostic[]);
44
47
  }
@@ -1,6 +1,6 @@
1
1
  import { FieldWithInitializerSemanticContext } from './FieldWithInitializerSemanticContext.js';
2
- import { CatchClauseSemanticContext, ForStatementSemanticContext, FunctionBlockSemanticContext, SpecialLocalDeclarationSemanticContext, StatementBlockSemanticContext, SubprogramParameterSemanticContext, SubprogramTypeParameterSemanticContext } from './SemanticContextValidatingNameConflicts.js';
3
2
  import { SourceFileSemanticContext } from './SourceFileSemanticContext.js';
3
+ import { CatchClauseSemanticContext, ForStatementSemanticContext, FunctionBlockSemanticContext, SpecialLocalDeclarationSemanticContext, StatementBlockSemanticContext, SubprogramParameterSemanticContext, SubprogramTypeParameterSemanticContext } from './SubprogramBodyAndParametersSemanticContext.js';
4
4
  import { OutermostSemanticContextOfSubprogram } from './SubprogramSemanticContext.js';
5
5
  import { OutermostSemanticContextOfType, ParametersOfFunctionTypeSemanticContext, TypeBodySemanticContext, TypeExtensionBodySemanticContext, TypeParametersOfTypeSemanticContext } from './TypeSemanticContext.js';
6
6
  /**
@@ -7,9 +7,7 @@ import { Analyzer } from '../Analyzer.js';
7
7
  import { FoundNamedDeclaration } from '../FoundDeclaration.js';
8
8
  import { NamedDeclaration, TypeOrContainerWithTypes } from './Declarations.js';
9
9
  import { SemanticContext } from './SemanticContext.js';
10
- import { TryStatementContextKind } from './SemanticContextBase.js';
11
10
  import { SemanticContextWithParent } from './SemanticContextWithParent.js';
12
- import { OutermostSemanticContextOfSubprogram } from './SubprogramSemanticContext.js';
13
11
  export declare abstract class SemanticContextValidatingNameConflictsBase extends SemanticContextWithParent implements ISemanticContextValidatingNameConflicts {
14
12
  abstract readonly outer: SemanticContext;
15
13
  abstract readonly node: tree.Node;
@@ -33,91 +31,14 @@ export declare abstract class SemanticContextValidatingNameConflictsBase extends
33
31
  getOwnNamedDeclarations(_noInstanceMembers?: boolean, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<NamedDeclaration>[];
34
32
  getOwnNamedDeclarationsByName(name: SearchName, _noInstanceMembers?: boolean, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<NamedDeclaration>[];
35
33
  validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
36
- getMemberEntityDictionary(): ReadonlyMap<string, readonly MemberOfSemanticContextValidatingNameConflicts[]>;
34
+ private getMemberEntityDictionary;
37
35
  private validateNestedFunctionsConflicts;
38
36
  private areNestedFunctionSignaturesEqual;
39
37
  private createNamedDeclarations;
40
38
  private createTypesOrContainerWithTypes;
41
39
  }
42
- export type SubprogramTypeParameterSemanticContextParent = OutermostSemanticContextOfSubprogram;
43
- export declare class SubprogramTypeParameterSemanticContext extends SemanticContextValidatingNameConflictsBase {
44
- readonly kind = "subprogram-type-parameter";
45
- readonly outer: SubprogramTypeParameterSemanticContextParent;
46
- readonly node: tree.TypeParameterClause;
47
- protected readonly asContext: SemanticContext;
48
- constructor(analyzer: Analyzer, node: tree.TypeParameterClause, outer: SubprogramTypeParameterSemanticContextParent);
49
- validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
50
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
51
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
52
- }
53
- export type SubprogramParameterSemanticContextParent = SubprogramTypeParameterSemanticContext | OutermostSemanticContextOfSubprogram;
54
- export declare abstract class SubprogramParameterSemanticContext extends SemanticContextValidatingNameConflictsBase {
55
- readonly kind = "subprogram-parameter";
56
- readonly outer: SubprogramParameterSemanticContextParent;
57
- constructor(analyzer: Analyzer, outer: SubprogramParameterSemanticContextParent);
58
- }
59
- export declare class ExplicitSubprogramParameterSemanticContext extends SubprogramParameterSemanticContext {
60
- readonly node: tree.ParameterList;
61
- protected readonly asContext: SemanticContext;
62
- constructor(analyzer: Analyzer, node: tree.ParameterList, outer: SubprogramParameterSemanticContextParent);
63
- validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
64
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
65
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
66
- }
67
- export type BlockSemanticContext = StatementBlockSemanticContext | FunctionBlockSemanticContext;
68
- export type StatementBlockSemanticContextParent = StatementBlockSemanticContext | FunctionBlockSemanticContext | ForStatementSemanticContext | CatchClauseSemanticContext;
69
- export declare class StatementBlockSemanticContext extends SemanticContextValidatingNameConflictsBase {
70
- readonly kind = "statement-block";
71
- readonly outer: StatementBlockSemanticContextParent;
72
- readonly node: tree.StatementBlock;
73
- protected readonly asContext: SemanticContext;
74
- constructor(analyzer: Analyzer, node: tree.StatementBlock, outer: StatementBlockSemanticContextParent);
75
- getTryStatementContext(): TryStatementContextKind | undefined;
76
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
77
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
78
- }
79
- export type FunctionBlockSemanticContextParent = SubprogramParameterSemanticContext | OutermostSemanticContextOfSubprogram | SpecialLocalDeclarationSemanticContext;
80
- export declare class FunctionBlockSemanticContext extends SemanticContextValidatingNameConflictsBase {
81
- readonly kind = "function-block";
82
- readonly outer: FunctionBlockSemanticContextParent;
83
- readonly node: tree.FunctionBlock;
84
- protected readonly asContext: SemanticContext;
85
- constructor(analyzer: Analyzer, node: tree.FunctionBlock, outer: FunctionBlockSemanticContextParent);
86
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
87
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
88
- }
89
- export type SpecialLocalDeclarationSemanticContextParent = SubprogramParameterSemanticContext | OutermostSemanticContextOfSubprogram;
90
- export declare class SpecialLocalDeclarationSemanticContext extends SemanticContextValidatingNameConflictsBase {
91
- readonly kind = "special-local-declaration";
92
- readonly outer: SpecialLocalDeclarationSemanticContextParent;
93
- readonly node: tree.FunctionBlock;
94
- protected readonly asContext: SemanticContext;
95
- constructor(analyzer: Analyzer, node: tree.FunctionBlock, outer: SpecialLocalDeclarationSemanticContextParent);
96
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
97
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
98
- }
99
- export declare class ForStatementSemanticContext extends SemanticContextValidatingNameConflictsBase {
100
- readonly kind = "for-statement";
101
- readonly outer: BlockSemanticContext;
102
- readonly node: tree.ForStatement;
103
- protected readonly asContext: SemanticContext;
104
- constructor(analyzer: Analyzer, node: tree.ForStatement, outer: BlockSemanticContext);
105
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
106
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
107
- }
108
- export declare class CatchClauseSemanticContext extends SemanticContextValidatingNameConflictsBase {
109
- readonly kind = "catch-clause";
110
- readonly outer: BlockSemanticContext;
111
- readonly node: tree.CatchClause;
112
- protected readonly asContext: SemanticContext;
113
- constructor(analyzer: Analyzer, node: tree.CatchClause, outer: BlockSemanticContext);
114
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
115
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
116
- }
117
- export type SemanticContextValidatingNameConflicts = StatementBlockSemanticContext | ForStatementSemanticContext | CatchClauseSemanticContext | SpecialLocalDeclarationSemanticContext | SubprogramParameterSemanticContext | SubprogramTypeParameterSemanticContext;
118
40
  interface ISemanticContextValidatingNameConflicts {
119
41
  validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
120
- getMemberEntityDictionary(): ReadonlyMap<string, readonly MemberOfSemanticContextValidatingNameConflicts[]>;
121
42
  }
122
43
  export type MemberOfSemanticContextValidatingNameConflicts = LocalVariableEntity | ParameterVariableEntity | NestedFunctionEntity | TypeParameterEntity;
123
44
  export type MemberOfSemanticContextValidatingNameConflictsForTypeLookup = TypeParameterEntity;
@@ -33,7 +33,7 @@ export declare class SourceFileSemanticContext extends SemanticContextBase {
33
33
  getOwnTypesOrContainersWithTypes(hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<TypeOrContainerWithTypes>[];
34
34
  getOwnTypesOrContainersWithTypesByName(name: SearchName, hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<TypeOrContainerWithTypes>[];
35
35
  getOwnNamedDeclarations(_noInstanceMembers?: boolean, hidingMatcher?: IEntityHidingMatcher): FoundNamedDeclaration<NamedDeclaration>[];
36
- getOwnNamedDeclarationsByName(name: SearchName, _noInstanceMembers?: boolean, hidingMatcher?: IEntityHidingMatcher): FoundNamedDeclaration<NamedDeclaration>[];
36
+ getOwnNamedDeclarationsByName(name: SearchName, _noInstanceMembers?: boolean, hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<NamedDeclaration>[];
37
37
  getOwnTypeExtensionsByType(type: TypeEntity, hidingMatcher?: IEntityHidingMatcher): TypeExtensionEntity[];
38
38
  private convertPackageMemberToNamedDeclaration;
39
39
  private convertPackageAliasToTypeOrContainerWithTypes;
@@ -0,0 +1,89 @@
1
+ import { DiagnosticAcceptor } from '../../diagnostic/Diagnostic.js';
2
+ import * as tree from '../../tree/index.js';
3
+ import { Analyzer } from '../Analyzer.js';
4
+ import { SemanticContext } from './SemanticContext.js';
5
+ import { TryStatementContextKind } from './SemanticContextBase.js';
6
+ import { MemberOfSemanticContextValidatingNameConflicts, MemberOfSemanticContextValidatingNameConflictsForTypeLookup, SemanticContextValidatingNameConflictsBase } from './SemanticContextValidatingNameConflicts.js';
7
+ import { OutermostSemanticContextOfSubprogram } from './SubprogramSemanticContext.js';
8
+ export type SubprogramTypeParameterSemanticContextParent = OutermostSemanticContextOfSubprogram;
9
+ export declare class SubprogramTypeParameterSemanticContext extends SemanticContextValidatingNameConflictsBase {
10
+ readonly kind = "subprogram-type-parameter";
11
+ readonly outer: SubprogramTypeParameterSemanticContextParent;
12
+ readonly node: tree.TypeParameterClause;
13
+ protected readonly asContext: SemanticContext;
14
+ constructor(analyzer: Analyzer, node: tree.TypeParameterClause, outer: SubprogramTypeParameterSemanticContextParent);
15
+ validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
16
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
17
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
18
+ }
19
+ export type SubprogramParameterSemanticContextParent = SubprogramTypeParameterSemanticContext | OutermostSemanticContextOfSubprogram;
20
+ export declare abstract class SubprogramParameterSemanticContext extends SemanticContextValidatingNameConflictsBase {
21
+ readonly kind = "subprogram-parameter";
22
+ readonly outer: SubprogramParameterSemanticContextParent;
23
+ constructor(analyzer: Analyzer, outer: SubprogramParameterSemanticContextParent);
24
+ }
25
+ export declare class ExplicitSubprogramParameterSemanticContext extends SubprogramParameterSemanticContext {
26
+ readonly node: tree.ParameterList;
27
+ protected readonly asContext: SemanticContext;
28
+ constructor(analyzer: Analyzer, node: tree.ParameterList, outer: SubprogramParameterSemanticContextParent);
29
+ validateNameConflicts(diagnostics: DiagnosticAcceptor): void;
30
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
31
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
32
+ }
33
+ export declare class FunctionBlockLiteralParameterSemanticContext extends SubprogramParameterSemanticContext {
34
+ readonly node: tree.FunctionBlockLiteral;
35
+ protected readonly asContext: SemanticContext;
36
+ constructor(analyzer: Analyzer, node: tree.FunctionBlockLiteral, outer: SubprogramParameterSemanticContextParent);
37
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
38
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
39
+ }
40
+ export type BlockSemanticContext = StatementBlockSemanticContext | FunctionBlockSemanticContext;
41
+ export type StatementBlockSemanticContextParent = StatementBlockSemanticContext | FunctionBlockSemanticContext | ForStatementSemanticContext | CatchClauseSemanticContext;
42
+ export declare class StatementBlockSemanticContext extends SemanticContextValidatingNameConflictsBase {
43
+ readonly kind = "statement-block";
44
+ readonly outer: StatementBlockSemanticContextParent;
45
+ readonly node: tree.StatementBlock;
46
+ protected readonly asContext: SemanticContext;
47
+ constructor(analyzer: Analyzer, node: tree.StatementBlock, outer: StatementBlockSemanticContextParent);
48
+ getTryStatementContext(): TryStatementContextKind | undefined;
49
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
50
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
51
+ }
52
+ export type FunctionBlockSemanticContextParent = SubprogramParameterSemanticContext | OutermostSemanticContextOfSubprogram | SpecialLocalDeclarationSemanticContext;
53
+ export declare class FunctionBlockSemanticContext extends SemanticContextValidatingNameConflictsBase {
54
+ readonly kind = "function-block";
55
+ readonly outer: FunctionBlockSemanticContextParent;
56
+ readonly node: tree.FunctionBlock;
57
+ protected readonly asContext: SemanticContext;
58
+ constructor(analyzer: Analyzer, node: tree.FunctionBlock, outer: FunctionBlockSemanticContextParent);
59
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
60
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
61
+ }
62
+ export type SpecialLocalDeclarationSemanticContextParent = SubprogramParameterSemanticContext | OutermostSemanticContextOfSubprogram;
63
+ export declare class SpecialLocalDeclarationSemanticContext extends SemanticContextValidatingNameConflictsBase {
64
+ readonly kind = "special-local-declaration";
65
+ readonly outer: SpecialLocalDeclarationSemanticContextParent;
66
+ readonly node: tree.FunctionBlock;
67
+ protected readonly asContext: SemanticContext;
68
+ constructor(analyzer: Analyzer, node: tree.FunctionBlock, outer: SpecialLocalDeclarationSemanticContextParent);
69
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
70
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
71
+ }
72
+ export declare class ForStatementSemanticContext extends SemanticContextValidatingNameConflictsBase {
73
+ readonly kind = "for-statement";
74
+ readonly outer: BlockSemanticContext;
75
+ readonly node: tree.ForStatement;
76
+ protected readonly asContext: SemanticContext;
77
+ constructor(analyzer: Analyzer, node: tree.ForStatement, outer: BlockSemanticContext);
78
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
79
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
80
+ }
81
+ export declare class CatchClauseSemanticContext extends SemanticContextValidatingNameConflictsBase {
82
+ readonly kind = "catch-clause";
83
+ readonly outer: BlockSemanticContext;
84
+ readonly node: tree.CatchClause;
85
+ protected readonly asContext: SemanticContext;
86
+ constructor(analyzer: Analyzer, node: tree.CatchClause, outer: BlockSemanticContext);
87
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
88
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
89
+ }
@@ -7,7 +7,6 @@ import { DereferencedVariableAccessorDeclaration, FieldAccessorDeclaration, Func
7
7
  import { NamedDeclaration, TypeOrContainerWithTypes } from './Declarations.js';
8
8
  import { SemanticContext } from './SemanticContext.js';
9
9
  import { SubprogramInfo, TryStatementContextKind } from './SemanticContextBase.js';
10
- import { MemberOfSemanticContextValidatingNameConflicts, MemberOfSemanticContextValidatingNameConflictsForTypeLookup, SubprogramParameterSemanticContext, SubprogramParameterSemanticContextParent } from './SemanticContextValidatingNameConflicts.js';
11
10
  import { SemanticContextWithParent } from './SemanticContextWithParent.js';
12
11
  import { SourceFileSemanticContext } from './SourceFileSemanticContext.js';
13
12
  import { SemanticContextContainingTypeMember } from './TypeSemanticContext.js';
@@ -36,13 +35,6 @@ export declare class FunctionSemanticContext extends OutermostSemanticContextOfS
36
35
  getContainingSubprogram(): SubprogramInfo;
37
36
  isStatic(): boolean;
38
37
  }
39
- export declare class FunctionBlockLiteralParameterSemanticContext extends SubprogramParameterSemanticContext {
40
- readonly node: tree.FunctionBlockLiteral;
41
- protected readonly asContext: SemanticContext;
42
- constructor(analyzer: Analyzer, node: tree.FunctionBlockLiteral, outer: SubprogramParameterSemanticContextParent);
43
- protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
44
- protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
45
- }
46
38
  export declare class PackageConstructorSemanticContext extends OutermostSemanticContextOfSubprogram {
47
39
  readonly outer: SourceFileSemanticContext;
48
40
  protected readonly asContext: SemanticContext;
@@ -10,6 +10,7 @@ import { TypeMemberLookup } from '../TypeMemberLookup.js';
10
10
  import { NamedDeclaration, TypeOrContainerWithTypes } from './Declarations.js';
11
11
  import { SemanticContext } from './SemanticContext.js';
12
12
  import { SubprogramInfo, TypeOrTypeExtension } from './SemanticContextBase.js';
13
+ import { MemberOfSemanticContextValidatingNameConflicts, MemberOfSemanticContextValidatingNameConflictsForTypeLookup, SemanticContextValidatingNameConflictsBase } from './SemanticContextValidatingNameConflicts.js';
13
14
  import { SemanticContextWithParent } from './SemanticContextWithParent.js';
14
15
  import { SourceFileSemanticContext } from './SourceFileSemanticContext.js';
15
16
  export type TypeDeclarationCreatingSemanticContext = StructuredTypeDeclaration | VariantTypeDeclaration | FunctionTypeDeclaration | tree.PackageAliasTypeDeclaration;
@@ -35,23 +36,15 @@ export declare class OutermostSemanticContextOfType extends SemanticContextWithP
35
36
  private getContainingType;
36
37
  }
37
38
  type TypeDeclarationWithTypeParameters = tree.PackageStructuredTypeDeclaration | tree.PackageVariantTypeDeclaration | tree.PackageAliasTypeDeclaration | tree.PackageFunctionTypeDeclaration;
38
- export declare class TypeParametersOfTypeSemanticContext extends SemanticContextWithParent {
39
+ export declare class TypeParametersOfTypeSemanticContext extends SemanticContextValidatingNameConflictsBase {
39
40
  readonly kind = "type-parameter-of-type";
40
41
  readonly outer: OutermostSemanticContextOfType;
42
+ readonly node: TypeDeclarationWithTypeParameters;
41
43
  protected readonly asContext: SemanticContext;
42
- private readonly _analyzer;
43
- private readonly _node;
44
44
  private readonly _typeParameterClause;
45
- private readonly _typesOrContainerWithTypes;
46
- private readonly _typesOrContainerWithTypesByName;
47
- private get typesOrContainerWithTypes();
48
- private get typesOrContainerWithTypesByName();
49
45
  constructor(analyzer: Analyzer, node: TypeDeclarationWithTypeParameters, typeParameterClause: tree.TypeParameterClause, outer: OutermostSemanticContextOfType);
50
- getOwnTypesOrContainersWithTypes(_hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<TypeOrContainerWithTypes>[];
51
- getOwnTypesOrContainersWithTypesByName(name: SearchName, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<TypeOrContainerWithTypes>[];
52
- getOwnNamedDeclarations(_noInstanceMembers?: boolean, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<NamedDeclaration>[];
53
- getOwnNamedDeclarationsByName(_name: SearchName, _noInstanceMembers?: boolean, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<NamedDeclaration>[];
54
- private createTypesOrContainerWithTypes;
46
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
47
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
55
48
  }
56
49
  declare abstract class TypeOrExtensionBodySemanticContext extends SemanticContextWithParent {
57
50
  protected abstract memberLookup: TypeMemberLookup;
@@ -89,21 +82,13 @@ export declare class TypeExtensionBodySemanticContext extends TypeOrExtensionBod
89
82
  getContainingTypeOrTypeExtension(): TypeOrTypeExtension | undefined;
90
83
  }
91
84
  export type ParameterOfFunctionTypeSemanticContextParent = TypeParametersOfTypeSemanticContext | OutermostSemanticContextOfType;
92
- export declare class ParametersOfFunctionTypeSemanticContext extends SemanticContextWithParent {
85
+ export declare class ParametersOfFunctionTypeSemanticContext extends SemanticContextValidatingNameConflictsBase {
93
86
  readonly kind = "parameters-of-function-type";
94
87
  readonly outer: ParameterOfFunctionTypeSemanticContextParent;
88
+ readonly node: tree.FunctionTypeDeclarationBody;
95
89
  protected readonly asContext: SemanticContext;
96
- private readonly _analyzer;
97
- private readonly _node;
98
- private readonly _namedDeclarations;
99
- private readonly _namedDeclarationsByName;
100
- private get namedDeclarations();
101
- private get namedDeclarationsByName();
102
90
  constructor(analyzer: Analyzer, node: tree.FunctionTypeDeclarationBody, outer: ParameterOfFunctionTypeSemanticContextParent);
103
- getOwnTypesOrContainersWithTypes(_hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<TypeOrContainerWithTypes>[];
104
- getOwnTypesOrContainersWithTypesByName(name: SearchName, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<TypeOrContainerWithTypes>[];
105
- getOwnNamedDeclarations(_noInstanceMembers?: boolean, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<NamedDeclaration>[];
106
- getOwnNamedDeclarationsByName(name: SearchName, _noInstanceMembers?: boolean, _hidingMatcher?: IEntityHidingMatcher): readonly FoundNamedDeclaration<NamedDeclaration>[];
107
- private createNamedDeclarations;
91
+ protected createMemberEntities(): readonly MemberOfSemanticContextValidatingNameConflicts[];
92
+ protected createMemberEntitiesForTypeLookup(): readonly MemberOfSemanticContextValidatingNameConflictsForTypeLookup[];
108
93
  }
109
94
  export {};
@@ -5,5 +5,6 @@ export * from './SemanticContextBase.js';
5
5
  export * from './SemanticContextBuilder.js';
6
6
  export * from './SemanticContextValidatingNameConflicts.js';
7
7
  export * from './SourceFileSemanticContext.js';
8
+ export * from './SubprogramBodyAndParametersSemanticContext.js';
8
9
  export * from './SubprogramSemanticContext.js';
9
10
  export * from './TypeSemanticContext.js';
@@ -4,4 +4,5 @@ export declare class Cached<T> {
4
4
  private _isEvaluating;
5
5
  getOrInsertWith(fn: () => T): T;
6
6
  clear(): void;
7
+ getCachedValue(): T | undefined;
7
8
  }