tsc-ts 0.0.10 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/tsc-ts.js +70 -1
- package/dist/api/compiler/ast-utilities.d.ts +19 -1
- package/dist/api/compiler/ast-utilities.js +180 -95
- package/dist/api/compiler/ast.d.ts +20 -15
- package/dist/api/compiler/ast.js +1023 -995
- package/dist/api/compiler/astnav.js +15 -15
- package/dist/api/compiler/binder-utilities.js +186 -186
- package/dist/api/compiler/binder.js +290 -263
- package/dist/api/compiler/character-codes.js +2 -2
- package/dist/api/compiler/checker-calls.js +173 -123
- package/dist/api/compiler/checker-classes.d.ts +14 -3
- package/dist/api/compiler/checker-classes.js +134 -90
- package/dist/api/compiler/checker-contextual.js +64 -61
- package/dist/api/compiler/checker-declaration-order.js +79 -79
- package/dist/api/compiler/checker-declarations.d.ts +1 -0
- package/dist/api/compiler/checker-declarations.js +160 -136
- package/dist/api/compiler/checker-declared-types.js +67 -65
- package/dist/api/compiler/checker-decorators.js +77 -77
- package/dist/api/compiler/checker-deprecation.d.ts +8 -3
- package/dist/api/compiler/checker-deprecation.js +76 -55
- package/dist/api/compiler/checker-destructuring.js +47 -45
- package/dist/api/compiler/checker-elaboration.js +24 -24
- package/dist/api/compiler/checker-emit-helpers.js +4 -4
- package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
- package/dist/api/compiler/checker-emit-resolver.js +25 -13
- package/dist/api/compiler/checker-evaluator.js +9 -9
- package/dist/api/compiler/checker-expressions.js +244 -211
- package/dist/api/compiler/checker-functions.js +113 -107
- package/dist/api/compiler/checker-generated-code.d.ts +0 -11
- package/dist/api/compiler/checker-generated-code.js +28 -52
- package/dist/api/compiler/checker-grammar.d.ts +1 -0
- package/dist/api/compiler/checker-grammar.js +469 -438
- package/dist/api/compiler/checker-heritage.js +91 -93
- package/dist/api/compiler/checker-inference.d.ts +77 -5
- package/dist/api/compiler/checker-inference.js +487 -113
- package/dist/api/compiler/checker-iteration.d.ts +0 -10
- package/dist/api/compiler/checker-iteration.js +35 -52
- package/dist/api/compiler/checker-javascript.js +14 -14
- package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
- package/dist/api/compiler/checker-jsdoc.js +67 -58
- package/dist/api/compiler/checker-jsx.js +105 -88
- package/dist/api/compiler/checker-members.d.ts +9 -2
- package/dist/api/compiler/checker-members.js +210 -74
- package/dist/api/compiler/checker-modules.d.ts +15 -6
- package/dist/api/compiler/checker-modules.js +469 -309
- package/dist/api/compiler/checker-narrowing.js +273 -189
- package/dist/api/compiler/checker-object-literals.js +25 -22
- package/dist/api/compiler/checker-operators.js +126 -118
- package/dist/api/compiler/checker-overloads.js +27 -27
- package/dist/api/compiler/checker-property-access.js +59 -55
- package/dist/api/compiler/checker-services.d.ts +1 -0
- package/dist/api/compiler/checker-services.js +222 -210
- package/dist/api/compiler/checker-signatures.js +65 -49
- package/dist/api/compiler/checker-source-file.d.ts +5 -0
- package/dist/api/compiler/checker-source-file.js +154 -130
- package/dist/api/compiler/checker-statements.js +33 -32
- package/dist/api/compiler/checker-super.js +50 -50
- package/dist/api/compiler/checker-symbol-types.js +109 -93
- package/dist/api/compiler/checker-symbols.d.ts +13 -1
- package/dist/api/compiler/checker-symbols.js +264 -149
- package/dist/api/compiler/checker-type-factory.d.ts +5 -0
- package/dist/api/compiler/checker-type-factory.js +137 -34
- package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
- package/dist/api/compiler/checker-type-nodes.js +179 -141
- package/dist/api/compiler/checker-type-operators.d.ts +2 -0
- package/dist/api/compiler/checker-type-operators.js +110 -63
- package/dist/api/compiler/checker-types.d.ts +80 -3
- package/dist/api/compiler/checker-types.js +121 -2
- package/dist/api/compiler/checker-unused.js +114 -118
- package/dist/api/compiler/checker-utilities.js +11 -11
- package/dist/api/compiler/checker.d.ts +93 -31
- package/dist/api/compiler/checker.js +143 -35
- package/dist/api/compiler/command-line.d.ts +1 -3
- package/dist/api/compiler/command-line.js +47 -44
- package/dist/api/compiler/compile-program.d.ts +19 -4
- package/dist/api/compiler/compile-program.js +45 -26
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.js +7 -7
- package/dist/api/compiler/emitter.d.ts +7 -1
- package/dist/api/compiler/emitter.js +53 -11
- package/dist/api/compiler/file-include.d.ts +2 -1
- package/dist/api/compiler/file-include.js +11 -7
- package/dist/api/compiler/file-loader.d.ts +10 -0
- package/dist/api/compiler/file-loader.js +138 -41
- package/dist/api/compiler/instantiation.d.ts +7 -0
- package/dist/api/compiler/instantiation.js +101 -49
- package/dist/api/compiler/jsdoc.js +23 -23
- package/dist/api/compiler/link-tables.d.ts +48 -18
- package/dist/api/compiler/link-tables.js +80 -37
- package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
- package/dist/api/compiler/locales/cs-CZ.js +1 -1
- package/dist/api/compiler/locales/de-DE.d.ts +1 -1
- package/dist/api/compiler/locales/de-DE.js +1 -1
- package/dist/api/compiler/locales/es-ES.d.ts +1 -1
- package/dist/api/compiler/locales/es-ES.js +1 -1
- package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
- package/dist/api/compiler/locales/fr-FR.js +1 -1
- package/dist/api/compiler/locales/it-IT.d.ts +1 -1
- package/dist/api/compiler/locales/it-IT.js +1 -1
- package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
- package/dist/api/compiler/locales/ja-JP.js +1 -1
- package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
- package/dist/api/compiler/locales/ko-KR.js +1 -1
- package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
- package/dist/api/compiler/locales/pl-PL.js +1 -1
- package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
- package/dist/api/compiler/locales/pt-BR.js +1 -1
- package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
- package/dist/api/compiler/locales/ru-RU.js +1 -1
- package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
- package/dist/api/compiler/locales/tr-TR.js +1 -1
- package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
- package/dist/api/compiler/locales/zh-CN.js +1 -1
- package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
- package/dist/api/compiler/locales/zh-TW.js +1 -1
- package/dist/api/compiler/module-resolution-types.js +6 -6
- package/dist/api/compiler/module-resolution.d.ts +10 -1
- package/dist/api/compiler/module-resolution.js +115 -84
- package/dist/api/compiler/module-specifiers.d.ts +15 -0
- package/dist/api/compiler/module-specifiers.js +24 -18
- package/dist/api/compiler/name-resolver.js +74 -65
- package/dist/api/compiler/node-builder-names.d.ts +11 -3
- package/dist/api/compiler/node-builder-names.js +210 -90
- package/dist/api/compiler/node-builder-pseudo.js +29 -31
- package/dist/api/compiler/node-builder-reuse.js +23 -22
- package/dist/api/compiler/node-builder.d.ts +18 -1
- package/dist/api/compiler/node-builder.js +191 -102
- package/dist/api/compiler/option-declarations.d.ts +2 -6
- package/dist/api/compiler/option-declarations.js +315 -375
- package/dist/api/compiler/options.d.ts +15 -33
- package/dist/api/compiler/options.js +21 -54
- package/dist/api/compiler/output-paths.d.ts +4 -1
- package/dist/api/compiler/output-paths.js +6 -11
- package/dist/api/compiler/package-json.d.ts +3 -3
- package/dist/api/compiler/package-json.js +11 -10
- package/dist/api/compiler/parser.d.ts +40 -19
- package/dist/api/compiler/parser.js +308 -216
- package/dist/api/compiler/path.d.ts +9 -0
- package/dist/api/compiler/path.js +20 -3
- package/dist/api/compiler/printer/emit-context.d.ts +3 -1
- package/dist/api/compiler/printer/emit-context.js +16 -1
- package/dist/api/compiler/printer/factory-base.d.ts +2 -2
- package/dist/api/compiler/printer/factory-base.js +7 -3
- package/dist/api/compiler/printer/factory.js +3 -1
- package/dist/api/compiler/printer/helpers.js +10 -1
- package/dist/api/compiler/printer/name-generator.d.ts +1 -1
- package/dist/api/compiler/printer/name-generator.js +35 -16
- package/dist/api/compiler/printer/printer.d.ts +1 -0
- package/dist/api/compiler/printer/printer.js +303 -281
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +8 -2
- package/dist/api/compiler/program-checker.js +84 -34
- package/dist/api/compiler/program-utilities.d.ts +3 -1
- package/dist/api/compiler/program-utilities.js +28 -15
- package/dist/api/compiler/program.d.ts +2 -0
- package/dist/api/compiler/program.js +69 -57
- package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
- package/dist/api/compiler/pseudo-bigint.js +18 -0
- package/dist/api/compiler/regexp-checker.d.ts +1 -1
- package/dist/api/compiler/regexp-checker.js +93 -76
- package/dist/api/compiler/relations.d.ts +27 -4
- package/dist/api/compiler/relations.js +337 -180
- package/dist/api/compiler/reparser.js +60 -56
- package/dist/api/compiler/scanner.d.ts +19 -2
- package/dist/api/compiler/scanner.js +123 -108
- package/dist/api/compiler/shared-results.d.ts +463 -0
- package/dist/api/compiler/shared-results.js +2128 -0
- package/dist/api/compiler/sourcemap.js +2 -2
- package/dist/api/compiler/symbol-accessibility.js +87 -74
- package/dist/api/compiler/symbol.d.ts +22 -13
- package/dist/api/compiler/symbol.js +15 -1
- package/dist/api/compiler/syntax-kind.d.ts +198 -197
- package/dist/api/compiler/transformers/alias-references.js +247 -139
- package/dist/api/compiler/transformers/async-utilities.js +25 -25
- package/dist/api/compiler/transformers/async.d.ts +0 -1
- package/dist/api/compiler/transformers/async.js +64 -77
- package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
- package/dist/api/compiler/transformers/class-fields.js +81 -78
- package/dist/api/compiler/transformers/commonjs-module.js +18 -15
- package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
- package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
- package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
- package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
- package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
- package/dist/api/compiler/transformers/declarations.d.ts +4 -1
- package/dist/api/compiler/transformers/declarations.js +305 -238
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
- package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
- package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
- package/dist/api/compiler/transformers/destructuring.js +19 -18
- package/dist/api/compiler/transformers/emit-resolver.js +1 -1
- package/dist/api/compiler/transformers/es-decorators.js +55 -55
- package/dist/api/compiler/transformers/external-module-info.js +3 -3
- package/dist/api/compiler/transformers/for-await.js +25 -25
- package/dist/api/compiler/transformers/import-elision.js +14 -14
- package/dist/api/compiler/transformers/jsx.js +12 -12
- package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
- package/dist/api/compiler/transformers/module.js +8 -8
- package/dist/api/compiler/transformers/named-evaluation.js +4 -4
- package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
- package/dist/api/compiler/transformers/optional-chain.js +10 -10
- package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
- package/dist/api/compiler/transformers/reference-resolver.js +131 -69
- package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
- package/dist/api/compiler/transformers/subtree-facts.js +47 -47
- package/dist/api/compiler/transformers/syntax-facts.js +56 -58
- package/dist/api/compiler/transformers/type-eraser.js +73 -66
- package/dist/api/compiler/transformers/type-serialization.js +24 -24
- package/dist/api/compiler/transformers/using.js +12 -12
- package/dist/api/compiler/transformers/utilities.js +77 -77
- package/dist/api/compiler/transformers/visitor-base.js +172 -172
- package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
- package/dist/api/compiler/tsconfig.d.ts +10 -2
- package/dist/api/compiler/tsconfig.js +136 -48
- package/dist/api/compiler/type-printer.js +40 -3
- package/dist/api/compiler/types.d.ts +2 -1
- package/dist/api/library/ast.generated.d.ts +42 -39
- package/dist/api/library/ast.generated.js +1 -1
- package/dist/api/library/compiler-options.generated.d.ts +111 -100
- package/dist/api/library/compiler-options.generated.js +1 -1
- package/dist/api/library/disk.js +12 -1
- package/dist/api/library/enums.generated.d.ts +206 -206
- package/dist/api/library/enums.generated.js +206 -206
- package/dist/api/library/nodes.js +26 -26
- package/package.json +9 -9
- package/src/compiler/ast-utilities.ts +99 -7
- package/src/compiler/ast.ts +55 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +76 -8
- package/src/compiler/checker-classes.ts +78 -24
- package/src/compiler/checker-contextual.ts +6 -1
- package/src/compiler/checker-declarations.ts +31 -4
- package/src/compiler/checker-declared-types.ts +8 -5
- package/src/compiler/checker-decorators.ts +1 -1
- package/src/compiler/checker-deprecation.ts +29 -8
- package/src/compiler/checker-destructuring.ts +10 -3
- package/src/compiler/checker-emit-helpers.ts +1 -0
- package/src/compiler/checker-emit-resolver.ts +16 -6
- package/src/compiler/checker-expressions.ts +79 -46
- package/src/compiler/checker-functions.ts +21 -6
- package/src/compiler/checker-generated-code.ts +2 -22
- package/src/compiler/checker-grammar.ts +133 -60
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -87
- package/src/compiler/checker-iteration.ts +18 -31
- package/src/compiler/checker-javascript.ts +1 -1
- package/src/compiler/checker-jsdoc.ts +50 -27
- package/src/compiler/checker-jsx.ts +26 -4
- package/src/compiler/checker-members.ts +197 -55
- package/src/compiler/checker-modules.ts +332 -65
- package/src/compiler/checker-narrowing.ts +98 -19
- package/src/compiler/checker-object-literals.ts +3 -0
- package/src/compiler/checker-operators.ts +11 -4
- package/src/compiler/checker-property-access.ts +7 -2
- package/src/compiler/checker-services.ts +39 -12
- package/src/compiler/checker-signatures.ts +15 -1
- package/src/compiler/checker-source-file.ts +39 -13
- package/src/compiler/checker-statements.ts +3 -2
- package/src/compiler/checker-symbol-types.ts +29 -6
- package/src/compiler/checker-symbols.ts +158 -15
- package/src/compiler/checker-type-factory.ts +120 -21
- package/src/compiler/checker-type-nodes.ts +46 -3
- package/src/compiler/checker-type-operators.ts +83 -26
- package/src/compiler/checker-types.ts +147 -4
- package/src/compiler/checker-unused.ts +9 -14
- package/src/compiler/checker.ts +168 -41
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +51 -25
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/emitter.ts +57 -8
- package/src/compiler/encoder.ts +23 -8
- package/src/compiler/file-include.ts +9 -3
- package/src/compiler/file-loader.ts +139 -32
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +86 -18
- package/src/compiler/init.ts +2 -7
- package/src/compiler/instantiation.ts +77 -22
- package/src/compiler/jsdoc.ts +3 -1
- package/src/compiler/link-tables.ts +82 -37
- package/src/compiler/locales/cs-CZ.ts +1 -1
- package/src/compiler/locales/de-DE.ts +1 -1
- package/src/compiler/locales/es-ES.ts +1 -1
- package/src/compiler/locales/fr-FR.ts +1 -1
- package/src/compiler/locales/it-IT.ts +1 -1
- package/src/compiler/locales/ja-JP.ts +1 -1
- package/src/compiler/locales/ko-KR.ts +1 -1
- package/src/compiler/locales/pl-PL.ts +1 -1
- package/src/compiler/locales/pt-BR.ts +1 -1
- package/src/compiler/locales/ru-RU.ts +1 -1
- package/src/compiler/locales/tr-TR.ts +1 -1
- package/src/compiler/locales/zh-CN.ts +1 -1
- package/src/compiler/locales/zh-TW.ts +1 -1
- package/src/compiler/module-resolution.ts +44 -8
- package/src/compiler/module-specifiers.ts +62 -20
- package/src/compiler/name-resolver.ts +9 -1
- package/src/compiler/node-builder-names.ts +236 -54
- package/src/compiler/node-builder-pseudo.ts +4 -7
- package/src/compiler/node-builder-reuse.ts +5 -4
- package/src/compiler/node-builder.ts +130 -31
- package/src/compiler/option-declarations.ts +33 -103
- package/src/compiler/options.ts +23 -62
- package/src/compiler/output-paths.ts +5 -18
- package/src/compiler/package-entrypoints.ts +345 -0
- package/src/compiler/package-json.ts +4 -4
- package/src/compiler/parallel-check.ts +197 -8
- package/src/compiler/parallel-emit.ts +1 -1
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +16 -0
- package/src/compiler/printer/factory-base.ts +10 -3
- package/src/compiler/printer/factory.ts +4 -1
- package/src/compiler/printer/helpers.ts +10 -1
- package/src/compiler/printer/name-generator.ts +24 -2
- package/src/compiler/printer/printer.ts +35 -14
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +53 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +13 -1
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +233 -77
- package/src/compiler/reparser.ts +7 -2
- package/src/compiler/scanner.ts +109 -79
- package/src/compiler/shared-results.ts +2414 -0
- package/src/compiler/show-config.ts +18 -1
- package/src/compiler/sourcemap.ts +2 -2
- package/src/compiler/symbol-accessibility.ts +26 -3
- package/src/compiler/symbol.ts +31 -14
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +19 -2
- package/src/compiler/transformers/alias-references.ts +123 -4
- package/src/compiler/transformers/async.ts +2 -17
- package/src/compiler/transformers/class-fields.ts +13 -12
- package/src/compiler/transformers/commonjs-module.ts +11 -7
- package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
- package/src/compiler/transformers/declarations-pseudo.ts +2 -4
- package/src/compiler/transformers/declarations-resolver.ts +0 -3
- package/src/compiler/transformers/declarations-syntactic.ts +1 -21
- package/src/compiler/transformers/declarations.ts +134 -48
- package/src/compiler/transformers/decorator-metadata.ts +9 -1
- package/src/compiler/transformers/destructuring.ts +4 -3
- package/src/compiler/transformers/external-module-info.ts +1 -1
- package/src/compiler/transformers/jsx.ts +2 -1
- package/src/compiler/transformers/reference-resolver.ts +83 -19
- package/src/compiler/transformers/runtime-syntax.ts +6 -1
- package/src/compiler/transformers/syntax-facts.ts +2 -7
- package/src/compiler/transformers/type-eraser.ts +10 -1
- package/src/compiler/transformers/type-serialization.ts +3 -2
- package/src/compiler/transformers/visitor-base.ts +2 -1
- package/src/compiler/transformers/visitor-hooks.ts +9 -4
- package/src/compiler/tsc-build.ts +3 -0
- package/src/compiler/tsc-cli.ts +2 -0
- package/src/compiler/tsc-compile.ts +7 -2
- package/src/compiler/tsc-watch.ts +74 -45
- package/src/compiler/tsconfig.ts +176 -19
- package/src/compiler/type-printer.ts +36 -2
- package/src/compiler/types.ts +2 -1
- package/src/library/ast.generated.ts +57 -41
- package/src/library/compiler-options.generated.ts +117 -103
- package/src/library/disk.ts +10 -1
- package/src/library/enums.generated.ts +196 -196
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ModuleSpecifierResult } from './node-builder-names.js';
|
|
2
2
|
import type { EmitHelperFileLinks } from './checker-emit-helpers.js';
|
|
3
3
|
import type { Node, PatternAmbientModule, SourceFile } from './ast.js';
|
|
4
|
-
import {
|
|
4
|
+
import { CompactIntLinkTable, CompactLinkTable, IntLinkTable, LinkTable, PagedIdSet, SparseLinkTable } from './link-tables.js';
|
|
5
5
|
import { Diagnostic, type DiagnosticMessage, Diagnostics } from './diagnostics.js';
|
|
6
6
|
import { type CompilerOptions, ModuleKind, ScriptTarget } from './options.js';
|
|
7
7
|
import { CheckFlags, Symbol, SymbolFlags, type SymbolTable } from './symbol.js';
|
|
8
|
-
import { IndexInfo, IntrinsicType, LiteralType, MemberNames, NodeLinks, ObjectFlags, ObjectType, Signature, SignatureFlags, SymbolLinks, type Type, TypeFlags, TypeMapper, TypeParameter, TypePredicate, VarianceFlags, TypeListCache, TypeListTable, type ConditionalType, type InterfaceType, type TypeChecking } from './checker-types.js';
|
|
8
|
+
import { IndexInfo, IntrinsicType, LiteralType, MemberNames, NamedMemberOrder, NodeLinks, ObjectFlags, ObjectType, Signature, SignatureFlags, SymbolLinks, type Type, TypeFlags, TypeMapper, TypeParameter, TypePredicate, VarianceFlags, TypeListCache, TypeListTable, type ConditionalType, type InterfaceType, type TypeChecking, type ConditionalResultKey, type DistributedConditional } from './checker-types.js';
|
|
9
9
|
import type { ModuleResolution } from './checker-modules.js';
|
|
10
10
|
import { CheckerNameResolver, type LibGlobals, type MergedGlobals, TableChanges, SuggestionNameResolver } from './checker-symbols.js';
|
|
11
|
-
import { Relation, RelationKey, type InternedRelationKey, type Relater, TypeComparer } from './relations.js';
|
|
11
|
+
import { Relation, RelationKey, type InternedRelationKey, type Relater, TypeComparer, type VarianceStackEntry } from './relations.js';
|
|
12
12
|
import { TypeNodeVisitor } from './checker-source-file.js';
|
|
13
13
|
import { InferenceCaches } from './checker-inference.js';
|
|
14
14
|
import { AssignmentMarker, type FlowLoopInfo, type FlowState, type FlowWalk } from './checker-narrowing.js';
|
|
15
15
|
import type { FlowNode, FlowReduceLabel } from './flow.js';
|
|
16
16
|
import { JsxState } from './checker-jsx.js';
|
|
17
|
-
import type {
|
|
17
|
+
import type { IterationTypes } from './checker-iteration.js';
|
|
18
18
|
import type { SpreadIndices } from './checker-contextual.js';
|
|
19
19
|
import { SourceFileMetadata } from './program-utilities.js';
|
|
20
20
|
import type { GrammarChecker } from './checker-grammar.js';
|
|
21
21
|
import type { ResolvedModule } from './module-resolution-types.js';
|
|
22
22
|
import type { ModuleSpecifierHost } from './module-specifiers.js';
|
|
23
23
|
import type { PropertyListIndex } from './checker-members.js';
|
|
24
|
+
import { type ThreadSharing } from './shared-results.js';
|
|
24
25
|
/** What the checker needs from a program. */
|
|
25
26
|
export declare abstract class CheckerHost {
|
|
26
27
|
abstract getCompilerOptions(): CompilerOptions;
|
|
@@ -57,15 +58,21 @@ export declare abstract class CheckerHost {
|
|
|
57
58
|
/** What module specifier generation needs; without it, specifiers are relative paths. */
|
|
58
59
|
getModuleSpecifierHost(): ModuleSpecifierHost | undefined;
|
|
59
60
|
}
|
|
60
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Per-file and global diagnostics, sorted on read like tsgo's DiagnosticsCollection, which keeps one of
|
|
63
|
+
* each set of equal diagnostics.
|
|
64
|
+
*/
|
|
61
65
|
declare class DiagnosticCollection {
|
|
62
66
|
private readonly byFile;
|
|
63
67
|
private readonly sortedFiles;
|
|
64
68
|
private readonly global;
|
|
65
69
|
private globalSorted;
|
|
66
|
-
/** The diagnostics
|
|
70
|
+
/** The diagnostics at each file, position, end and code, to find an equal one when adding. */
|
|
71
|
+
private readonly byLocation;
|
|
72
|
+
/** The diagnostics reported since `startLog`, while recording, also those equal to one already added. */
|
|
67
73
|
private log;
|
|
68
|
-
|
|
74
|
+
/** Adds `diagnostic` unless an equal one was added; returns the one the collection holds. */
|
|
75
|
+
add(diagnostic: Diagnostic): Diagnostic;
|
|
69
76
|
forFile(fileName: string): Diagnostic[];
|
|
70
77
|
count(): number;
|
|
71
78
|
/** An already reported diagnostic equal to `diagnostic`, if any. */
|
|
@@ -73,8 +80,12 @@ declare class DiagnosticCollection {
|
|
|
73
80
|
globals(): Diagnostic[];
|
|
74
81
|
/** The global diagnostics `withoutNewGlobals` removed. */
|
|
75
82
|
removedGlobals: number;
|
|
83
|
+
/** Where results are shared between checker threads (shared-results.ts): every diagnostic added, in order. */
|
|
84
|
+
added: Diagnostic[] | undefined;
|
|
76
85
|
/** Runs `run`, then removes the global diagnostics it added. */
|
|
77
86
|
withoutNewGlobals<T>(run: () => T): T;
|
|
87
|
+
/** Removes the global diagnostic `diagnostic` from the location index. */
|
|
88
|
+
private forget;
|
|
78
89
|
/** Records the diagnostics added from now on. */
|
|
79
90
|
startLog(): void;
|
|
80
91
|
/** The diagnostics added since `startLog`, in order; stops recording. */
|
|
@@ -147,10 +158,20 @@ export declare class Checker implements TypeChecking {
|
|
|
147
158
|
readonly memberPositionsInLists: Map<Symbol[], Map<string, number>>;
|
|
148
159
|
/** The property names of the last instantiation of each such list whose table is built on demand. */
|
|
149
160
|
readonly memberNamesOfLists: Map<Symbol[], MemberNames>;
|
|
161
|
+
/** The property order of the instantiations of each such list (`NamedMemberOrder`); null where it has none. */
|
|
162
|
+
readonly namedMemberOrdersOfLists: Map<Symbol[], NamedMemberOrder | null>;
|
|
150
163
|
/** Long lists of inherited properties, by name. */
|
|
151
164
|
readonly propertiesByName: Map<Symbol[], Map<string, Symbol>>;
|
|
152
165
|
/** Number of `typeToString` calls in progress. */
|
|
153
166
|
serializationLevel: number;
|
|
167
|
+
/**
|
|
168
|
+
* `typeToString` results by type, enclosing declaration, flags and the type parameter of the variance check in
|
|
169
|
+
* progress: the prints that created no types, which a later print with the same inputs repeats exactly
|
|
170
|
+
* (`typeToString`).
|
|
171
|
+
*/
|
|
172
|
+
readonly typeStrings: Map<string, string>;
|
|
173
|
+
/** `symbolToString` results by symbol, then by enclosing declaration and flags, kept as `typeStrings` are. */
|
|
174
|
+
readonly symbolStrings: Map<Symbol, Map<string, string>>;
|
|
154
175
|
/** Whether `globalObjectType` is set; global type lookups before it can't suggest `typeof`. */
|
|
155
176
|
hasGlobalObjectType: boolean;
|
|
156
177
|
/** The node being checked, for errors with no better location. */
|
|
@@ -167,7 +188,7 @@ export declare class Checker implements TypeChecking {
|
|
|
167
188
|
*/
|
|
168
189
|
modulesMerged: boolean;
|
|
169
190
|
/** Module specifiers of `import("…")` types, by module symbol id, importing file path and resolution mode. */
|
|
170
|
-
readonly moduleSpecifiers: Map<string,
|
|
191
|
+
readonly moduleSpecifiers: Map<string, ModuleSpecifierResult>;
|
|
171
192
|
/** Specifier generation for hosts without a program. */
|
|
172
193
|
fallbackModuleSpecifierHost: ModuleSpecifierHost | undefined;
|
|
173
194
|
readonly symbolLinkTable: SparseLinkTable<SymbolLinks>;
|
|
@@ -188,24 +209,24 @@ export declare class Checker implements TypeChecking {
|
|
|
188
209
|
/** The mapper of an instantiated symbol or a mapped type property. */
|
|
189
210
|
readonly symbolMappers: LinkTable<TypeMapper>;
|
|
190
211
|
/** The literal type of a property name. */
|
|
191
|
-
readonly symbolNameTypes:
|
|
212
|
+
readonly symbolNameTypes: CompactLinkTable<Type>;
|
|
192
213
|
/** The mapped type of a mapped type property, or the union/intersection of a synthetic property. */
|
|
193
|
-
readonly symbolContainingTypes:
|
|
214
|
+
readonly symbolContainingTypes: CompactLinkTable<Type>;
|
|
194
215
|
/** The key type of a mapped type property. */
|
|
195
|
-
readonly symbolKeyTypes:
|
|
216
|
+
readonly symbolKeyTypes: CompactLinkTable<Type>;
|
|
196
217
|
/** The property a mapped, spread or synthetic property comes from. */
|
|
197
|
-
readonly symbolSyntheticOrigins:
|
|
218
|
+
readonly symbolSyntheticOrigins: CompactLinkTable<Symbol>;
|
|
198
219
|
/** The left and right properties a spread property combines. */
|
|
199
|
-
readonly symbolLeftSpreads:
|
|
200
|
-
readonly symbolRightSpreads:
|
|
220
|
+
readonly symbolLeftSpreads: CompactLinkTable<Symbol>;
|
|
221
|
+
readonly symbolRightSpreads: CompactLinkTable<Symbol>;
|
|
201
222
|
/** Bits of SymbolFlags for the meanings in which a symbol was referenced. */
|
|
202
|
-
readonly symbolReferenceKinds:
|
|
223
|
+
readonly symbolReferenceKinds: CompactIntLinkTable;
|
|
203
224
|
/** The resolved symbol of an identifier, entity name or call. */
|
|
204
|
-
readonly resolvedSymbols:
|
|
225
|
+
readonly resolvedSymbols: CompactLinkTable<Symbol>;
|
|
205
226
|
/** The resolved type of a type node or expression. */
|
|
206
|
-
readonly resolvedTypes:
|
|
227
|
+
readonly resolvedTypes: CompactLinkTable<Type>;
|
|
207
228
|
/** The resolved signature of a call-like node or a signature declaration. */
|
|
208
|
-
readonly resolvedSignatures:
|
|
229
|
+
readonly resolvedSignatures: CompactLinkTable<Signature>;
|
|
209
230
|
/** Merged symbols, indexed by the id of the symbol merged into them. */
|
|
210
231
|
readonly mergedSymbols: Map<number, Symbol>;
|
|
211
232
|
/**
|
|
@@ -368,13 +389,19 @@ export declare class Checker implements TypeChecking {
|
|
|
368
389
|
readonly moduleTypeCache: Map<string, Type>;
|
|
369
390
|
readonly globalSymbolCache: Map<string, Symbol | null>;
|
|
370
391
|
resolutionStart: number;
|
|
371
|
-
|
|
392
|
+
/** The generic types whose variances are being computed, outermost first. */
|
|
393
|
+
varianceStack: VarianceStackEntry[];
|
|
372
394
|
instantiationDepth: number;
|
|
395
|
+
/** The types being instantiated, outermost first: the first `instantiationDepth` entries are current. */
|
|
396
|
+
readonly instantiationStack: Type[];
|
|
397
|
+
/** The calls being resolved, outermost first: the first `callResolutionDepth` entries are current. */
|
|
398
|
+
readonly callResolutionStack: Node[];
|
|
399
|
+
callResolutionDepth: number;
|
|
373
400
|
instantiationCount: number;
|
|
374
401
|
/** Instantiations over the checker's lifetime (statistics). */
|
|
375
402
|
totalInstantiations: number;
|
|
376
|
-
/**
|
|
377
|
-
|
|
403
|
+
/** Ids of the mappers of the instantiations in progress: the first `activeMapperDepth` entries are live. */
|
|
404
|
+
activeMapperIds: Int32Array<ArrayBuffer>;
|
|
378
405
|
activeMapperDepth: number;
|
|
379
406
|
/** Per active mapper: its instantiations by type id, created on the first nested write. */
|
|
380
407
|
readonly activeMapperCaches: (Map<number, Type> | undefined)[];
|
|
@@ -389,20 +416,28 @@ export declare class Checker implements TypeChecking {
|
|
|
389
416
|
/** Empty lists for type arguments that are compared with cached instantiations before any is kept. */
|
|
390
417
|
readonly freeTypeLists: Type[][];
|
|
391
418
|
/**
|
|
392
|
-
*
|
|
419
|
+
* The ids of the anonymous and mapped types whose declaration has no outer type parameters
|
|
393
420
|
* to instantiate (`getObjectTypeInstantiation`).
|
|
394
421
|
*/
|
|
395
|
-
readonly withoutOuterTypeParameters:
|
|
422
|
+
readonly withoutOuterTypeParameters: PagedIdSet;
|
|
396
423
|
conditionalConstraintDepth: number;
|
|
397
424
|
readonly suggestionResolver: SuggestionNameResolver;
|
|
398
425
|
readonly awaitedTypeStack: number[];
|
|
399
426
|
/** Iteration types by type id and iteration use. */
|
|
400
427
|
readonly iterationTypesCache: Map<number, IterationTypes>;
|
|
401
|
-
/**
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
428
|
+
/**
|
|
429
|
+
* Diagnostics reported after the checks of the file being checked, or before the next global
|
|
430
|
+
* diagnostics are read, in the order they were deferred. Reporting them earlier could resolve types
|
|
431
|
+
* that are being resolved.
|
|
432
|
+
*/
|
|
433
|
+
deferredDiagnostics: (() => void)[];
|
|
434
|
+
/** Defers the diagnostic `report` reports at `node` (`deferredDiagnostics`). */
|
|
435
|
+
deferDiagnostic(node: Node, report: () => void): void;
|
|
436
|
+
/**
|
|
437
|
+
* The checked object literals of each file whose members may set deprecated properties of their contextual
|
|
438
|
+
* types, reported when the file's suggestion diagnostics are asked for (`checkObjectLiteralDeprecations`).
|
|
439
|
+
*/
|
|
440
|
+
readonly objectLiteralsForDeprecations: Map<SourceFile, Node[]>;
|
|
406
441
|
/** Binding patterns whose implied type is being computed as a contextual type. */
|
|
407
442
|
readonly contextualBindingPatterns: Node[];
|
|
408
443
|
/** The binding pattern or assignment pattern that implied each type. */
|
|
@@ -453,11 +488,13 @@ export declare class Checker implements TypeChecking {
|
|
|
453
488
|
flowTypeCache: Map<Node, Type> | undefined;
|
|
454
489
|
flowInvocationCount: number;
|
|
455
490
|
/** The reduce labels being passed, innermost last; each limits its target label's antecedents. */
|
|
456
|
-
|
|
491
|
+
flowReduceLabels: FlowReduceLabel[];
|
|
457
492
|
readonly flowNodeReachable: Map<FlowNode, boolean>;
|
|
458
493
|
readonly flowNodePostSuper: Map<FlowNode, boolean>;
|
|
459
494
|
lastFlowNode: FlowNode | undefined;
|
|
460
495
|
lastFlowNodeReachable: boolean;
|
|
496
|
+
/** Symbols whose explicit type is being found, for flow analysis of self-referential `for...of`. */
|
|
497
|
+
readonly resolvingExplicitTypeOfSymbol: Set<Symbol>;
|
|
461
498
|
readonly assignmentMarker: AssignmentMarker;
|
|
462
499
|
readonly primitiveTypeAliasSuggestions: Map<string, Symbol>;
|
|
463
500
|
/** Renamed binding elements in parameters of bodiless signatures, checked for use with their file. */
|
|
@@ -480,6 +517,9 @@ export declare class Checker implements TypeChecking {
|
|
|
480
517
|
readonly ambientModuleSymbols: Symbol[];
|
|
481
518
|
readonly patternAmbientModules: PatternAmbientModule[];
|
|
482
519
|
readonly patternAmbientModuleAugmentations: Map<string, Symbol>;
|
|
520
|
+
/** The pattern module each entry of `patternAmbientModuleAugmentations` augments. */
|
|
521
|
+
readonly patternAmbientModuleAugmentationTargets: Map<string, Symbol>;
|
|
522
|
+
readonly moduleImportAttributesTypes: Map<Symbol, Type>;
|
|
483
523
|
readonly inferenceCaches: InferenceCaches;
|
|
484
524
|
/** The type resolution stack: the first `resolutionDepth` entries are live, later slots are reused. */
|
|
485
525
|
readonly resolutionTargets: (Symbol | Type | Signature | Node)[];
|
|
@@ -488,6 +528,27 @@ export declare class Checker implements TypeChecking {
|
|
|
488
528
|
resolutionDepth: number;
|
|
489
529
|
/** The number of resolution cycles found (`pushTypeResolution`). */
|
|
490
530
|
resolutionCycleCount: number;
|
|
531
|
+
/**
|
|
532
|
+
* While an `inferTypesFromUnstarted` walk runs: the unions and intersections whose properties
|
|
533
|
+
* `hasUnmatchedProperty` searched before they were resolved. Such a search creates fewer types
|
|
534
|
+
* than one of the resolved properties.
|
|
535
|
+
*/
|
|
536
|
+
unresolvedPropertySearches: Type[] | undefined;
|
|
537
|
+
/** TSC_TS_SHARE: the checker thread's sharing with the other checker threads. */
|
|
538
|
+
threadSharing: ThreadSharing | undefined;
|
|
539
|
+
/**
|
|
540
|
+
* Where results are shared (shared-results.ts): for each conditional type made as a member of the distribution of a
|
|
541
|
+
* conditional type instantiation, that instantiation and the constituent it is for.
|
|
542
|
+
*/
|
|
543
|
+
distributedConditionals: Map<Type, DistributedConditional> | undefined;
|
|
544
|
+
/** The same members by `distributedKey`. */
|
|
545
|
+
distributedByKey: Map<string, Type> | undefined;
|
|
546
|
+
/** The conditional types conditional type instantiations resolved to, with the instantiation's root and key. */
|
|
547
|
+
conditionalResults: Map<Type, ConditionalResultKey> | undefined;
|
|
548
|
+
/** The access flags of the key `getIndexedAccessTypeEx` keeps each indexed access type by. */
|
|
549
|
+
indexedAccessKeyFlags: Map<Type, number> | undefined;
|
|
550
|
+
/** Where results are shared between checker threads (shared-results.ts): the file of each diagnostic deferred. */
|
|
551
|
+
deferredDiagnosticFiles: string[] | undefined;
|
|
491
552
|
constructor(host: CheckerHost);
|
|
492
553
|
/** Checks `file` if needed and returns its semantic diagnostics, sorted. */
|
|
493
554
|
getDiagnostics(file: SourceFile): Diagnostic[];
|
|
@@ -522,7 +583,8 @@ export declare class Checker implements TypeChecking {
|
|
|
522
583
|
newSignature(flags: SignatureFlags, declaration: Node | undefined, typeParameters: Type[], thisParameter: Symbol | undefined, parameters: Symbol[], resolvedReturnType: Type | undefined, minArgumentCount: number): Signature;
|
|
523
584
|
/** Reports `message` at `node`, or as a global diagnostic without a node. */
|
|
524
585
|
error(node: Node | undefined, message: DiagnosticMessage, ...args: string[]): Diagnostic;
|
|
525
|
-
|
|
586
|
+
/** Reports `diagnostic`; returns the equal diagnostic already reported, if any, else `diagnostic`. */
|
|
587
|
+
addDiagnostic(diagnostic: Diagnostic): Diagnostic;
|
|
526
588
|
addSuggestion(diagnostic: Diagnostic): void;
|
|
527
589
|
/** Reports an error, or a suggestion when `isError` is false. */
|
|
528
590
|
addErrorOrSuggestion(isError: boolean, diagnostic: Diagnostic): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { sideOf } from './side-state.js';
|
|
2
|
-
import {
|
|
2
|
+
import { CompactIntLinkTable, CompactLinkTable, IntLinkTable, LinkTable, PagedIdSet, SparseLinkTable, } from './link-tables.js';
|
|
3
3
|
import { getErrorRangeForNode, getSourceFileOfNode } from './binder-utilities.js';
|
|
4
|
-
import { Diagnostic, compareDiagnostics } from './diagnostics.js';
|
|
4
|
+
import { Diagnostic, compareDiagnostics, equalDiagnostics, } from './diagnostics.js';
|
|
5
5
|
import { ModuleKind, ScriptTarget, getEmitScriptTarget, getIsolatedModules, getStrictOptionValue, shouldPreserveConstEnums, } from './options.js';
|
|
6
6
|
import { Symbol, getSymbolId } from './symbol.js';
|
|
7
7
|
import { IndexInfo, IntrinsicType, LiteralType, NodeLinks, Signature, SymbolLinks, TypeParameter, TypePredicate, emptyTypes, TypeListCache, TypeListTable, } from './checker-types.js';
|
|
@@ -10,12 +10,14 @@ import { getFalseTypeFromConditionalType, getTrueTypeFromConditionalType } from
|
|
|
10
10
|
import { createArrayType, createTypeFromGenericGlobalType, getBigIntLiteralType, getNumberLiteralType, getStringLiteralType, getTemplateLiteralType, getUnionType, newAnonymousType, newObjectType, } from './checker-type-factory.js';
|
|
11
11
|
import { CheckerNameResolver, borrowLibGlobals, findLibGlobals, returnLibGlobals, setGlobal, SuggestionNameResolver, getGlobalStrictFunctionType, getGlobalType, initializeGlobals, mergeAmbientModulesAndAugmentations, } from './checker-symbols.js';
|
|
12
12
|
import { PermissiveMapper, ReportingMapper, RestrictiveMapper, UniqueLiteralMapper } from './instantiation.js';
|
|
13
|
-
import { Relation, RelationKey } from './relations.js';
|
|
14
|
-
import { TypeNodeVisitor, checkSourceFile } from './checker-source-file.js';
|
|
13
|
+
import { Relation, RelationKey, } from './relations.js';
|
|
14
|
+
import { TypeNodeVisitor, checkSourceFile, produceDeferredDiagnostics } from './checker-source-file.js';
|
|
15
|
+
import { checkObjectLiteralDeprecations } from './checker-deprecation.js';
|
|
15
16
|
import { InferenceCaches } from './checker-inference.js';
|
|
16
17
|
import { AssignmentMarker } from './checker-narrowing.js';
|
|
17
18
|
import { JsxState } from './checker-jsx.js';
|
|
18
19
|
import { SourceFileMetadata, getEmitModuleFormatOfFile } from './program-utilities.js';
|
|
20
|
+
import { shareThreads, startThreadSharing } from './shared-results.js';
|
|
19
21
|
/** What the checker needs from a program. */
|
|
20
22
|
export class CheckerHost {
|
|
21
23
|
/** How a module name in `file` resolved in `mode`, if the program resolved it. */
|
|
@@ -78,22 +80,40 @@ export class CheckerHost {
|
|
|
78
80
|
return undefined;
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Per-file and global diagnostics, sorted on read like tsgo's DiagnosticsCollection, which keeps one of
|
|
85
|
+
* each set of equal diagnostics.
|
|
86
|
+
*/
|
|
82
87
|
class DiagnosticCollection {
|
|
83
88
|
byFile = new Map();
|
|
84
89
|
sortedFiles = new Set();
|
|
85
90
|
global = [];
|
|
86
91
|
globalSorted = true;
|
|
87
|
-
/** The diagnostics
|
|
92
|
+
/** The diagnostics at each file, position, end and code, to find an equal one when adding. */
|
|
93
|
+
byLocation = new Map();
|
|
94
|
+
/** The diagnostics reported since `startLog`, while recording, also those equal to one already added. */
|
|
88
95
|
log = undefined;
|
|
96
|
+
/** Adds `diagnostic` unless an equal one was added; returns the one the collection holds. */
|
|
89
97
|
add(diagnostic) {
|
|
90
98
|
if (this.log !== undefined)
|
|
91
99
|
this.log.push(diagnostic);
|
|
100
|
+
if (this.added !== undefined)
|
|
101
|
+
this.added.push(diagnostic);
|
|
92
102
|
const file = diagnostic.file;
|
|
103
|
+
const key = `${file === undefined ? '' : file.fileName}\0${diagnostic.pos}\0${diagnostic.end}\0${diagnostic.code}`;
|
|
104
|
+
const existing = this.byLocation.get(key);
|
|
105
|
+
if (existing === undefined)
|
|
106
|
+
this.byLocation.set(key, [diagnostic]);
|
|
107
|
+
else {
|
|
108
|
+
for (const d of existing)
|
|
109
|
+
if (equalDiagnostics(d, diagnostic))
|
|
110
|
+
return d;
|
|
111
|
+
existing.push(diagnostic);
|
|
112
|
+
}
|
|
93
113
|
if (file === undefined) {
|
|
94
114
|
this.global.push(diagnostic);
|
|
95
115
|
this.globalSorted = false;
|
|
96
|
-
return;
|
|
116
|
+
return diagnostic;
|
|
97
117
|
}
|
|
98
118
|
let list = this.byFile.get(file.fileName);
|
|
99
119
|
if (list === undefined) {
|
|
@@ -102,6 +122,7 @@ class DiagnosticCollection {
|
|
|
102
122
|
}
|
|
103
123
|
list.push(diagnostic);
|
|
104
124
|
this.sortedFiles.delete(file.fileName);
|
|
125
|
+
return diagnostic;
|
|
105
126
|
}
|
|
106
127
|
forFile(fileName) {
|
|
107
128
|
const list = this.byFile.get(fileName);
|
|
@@ -139,6 +160,8 @@ class DiagnosticCollection {
|
|
|
139
160
|
}
|
|
140
161
|
/** The global diagnostics `withoutNewGlobals` removed. */
|
|
141
162
|
removedGlobals = 0;
|
|
163
|
+
/** Where results are shared between checker threads (shared-results.ts): every diagnostic added, in order. */
|
|
164
|
+
added = undefined;
|
|
142
165
|
/** Runs `run`, then removes the global diagnostics it added. */
|
|
143
166
|
withoutNewGlobals(run) {
|
|
144
167
|
const outer = this.log;
|
|
@@ -157,15 +180,28 @@ class DiagnosticCollection {
|
|
|
157
180
|
if (d.file === undefined)
|
|
158
181
|
globals.add(d);
|
|
159
182
|
if (globals.size > 0) {
|
|
160
|
-
this.removedGlobals += globals.size;
|
|
161
183
|
let kept = 0;
|
|
162
|
-
for (const d of this.global)
|
|
184
|
+
for (const d of this.global) {
|
|
163
185
|
if (!globals.has(d))
|
|
164
186
|
this.global[kept++] = d;
|
|
187
|
+
else
|
|
188
|
+
this.forget(d);
|
|
189
|
+
}
|
|
190
|
+
this.removedGlobals += this.global.length - kept;
|
|
165
191
|
this.global.length = kept;
|
|
166
192
|
}
|
|
167
193
|
}
|
|
168
194
|
}
|
|
195
|
+
/** Removes the global diagnostic `diagnostic` from the location index. */
|
|
196
|
+
forget(diagnostic) {
|
|
197
|
+
const key = `\0${diagnostic.pos}\0${diagnostic.end}\0${diagnostic.code}`;
|
|
198
|
+
const existing = this.byLocation.get(key);
|
|
199
|
+
if (existing === undefined)
|
|
200
|
+
return;
|
|
201
|
+
const at = existing.indexOf(diagnostic);
|
|
202
|
+
if (at >= 0)
|
|
203
|
+
existing.splice(at, 1);
|
|
204
|
+
}
|
|
169
205
|
/** Records the diagnostics added from now on. */
|
|
170
206
|
startLog() {
|
|
171
207
|
this.log = [];
|
|
@@ -249,10 +285,20 @@ export class Checker {
|
|
|
249
285
|
memberPositionsInLists = new Map();
|
|
250
286
|
/** The property names of the last instantiation of each such list whose table is built on demand. */
|
|
251
287
|
memberNamesOfLists = new Map();
|
|
288
|
+
/** The property order of the instantiations of each such list (`NamedMemberOrder`); null where it has none. */
|
|
289
|
+
namedMemberOrdersOfLists = new Map();
|
|
252
290
|
/** Long lists of inherited properties, by name. */
|
|
253
291
|
propertiesByName = new Map();
|
|
254
292
|
/** Number of `typeToString` calls in progress. */
|
|
255
293
|
serializationLevel = 0;
|
|
294
|
+
/**
|
|
295
|
+
* `typeToString` results by type, enclosing declaration, flags and the type parameter of the variance check in
|
|
296
|
+
* progress: the prints that created no types, which a later print with the same inputs repeats exactly
|
|
297
|
+
* (`typeToString`).
|
|
298
|
+
*/
|
|
299
|
+
typeStrings = new Map();
|
|
300
|
+
/** `symbolToString` results by symbol, then by enclosing declaration and flags, kept as `typeStrings` are. */
|
|
301
|
+
symbolStrings = new Map();
|
|
256
302
|
/** Whether `globalObjectType` is set; global type lookups before it can't suggest `typeof`. */
|
|
257
303
|
hasGlobalObjectType = false;
|
|
258
304
|
/** The node being checked, for errors with no better location. */
|
|
@@ -286,6 +332,9 @@ export class Checker {
|
|
|
286
332
|
* so far; null where a list repeats a name.
|
|
287
333
|
*/
|
|
288
334
|
propertyListIndexes = new Map();
|
|
335
|
+
// Types, targets and mappers of symbols keep a slot per id: they are dense enough, and read on hot
|
|
336
|
+
// paths. The other symbol columns, which most symbols leave empty, keep only their values
|
|
337
|
+
// (CompactLinkTable).
|
|
289
338
|
/** The type of a value symbol. */
|
|
290
339
|
symbolTypes = new LinkTable();
|
|
291
340
|
/** For instantiated and synthetic symbols, the symbol they come from. */
|
|
@@ -293,24 +342,24 @@ export class Checker {
|
|
|
293
342
|
/** The mapper of an instantiated symbol or a mapped type property. */
|
|
294
343
|
symbolMappers = new LinkTable();
|
|
295
344
|
/** The literal type of a property name. */
|
|
296
|
-
symbolNameTypes = new
|
|
345
|
+
symbolNameTypes = new CompactLinkTable();
|
|
297
346
|
/** The mapped type of a mapped type property, or the union/intersection of a synthetic property. */
|
|
298
|
-
symbolContainingTypes = new
|
|
347
|
+
symbolContainingTypes = new CompactLinkTable();
|
|
299
348
|
/** The key type of a mapped type property. */
|
|
300
|
-
symbolKeyTypes = new
|
|
349
|
+
symbolKeyTypes = new CompactLinkTable();
|
|
301
350
|
/** The property a mapped, spread or synthetic property comes from. */
|
|
302
|
-
symbolSyntheticOrigins = new
|
|
351
|
+
symbolSyntheticOrigins = new CompactLinkTable();
|
|
303
352
|
/** The left and right properties a spread property combines. */
|
|
304
|
-
symbolLeftSpreads = new
|
|
305
|
-
symbolRightSpreads = new
|
|
353
|
+
symbolLeftSpreads = new CompactLinkTable();
|
|
354
|
+
symbolRightSpreads = new CompactLinkTable();
|
|
306
355
|
/** Bits of SymbolFlags for the meanings in which a symbol was referenced. */
|
|
307
|
-
symbolReferenceKinds = new
|
|
356
|
+
symbolReferenceKinds = new CompactIntLinkTable();
|
|
308
357
|
/** The resolved symbol of an identifier, entity name or call. */
|
|
309
|
-
resolvedSymbols = new
|
|
358
|
+
resolvedSymbols = new CompactLinkTable();
|
|
310
359
|
/** The resolved type of a type node or expression. */
|
|
311
|
-
resolvedTypes = new
|
|
360
|
+
resolvedTypes = new CompactLinkTable();
|
|
312
361
|
/** The resolved signature of a call-like node or a signature declaration. */
|
|
313
|
-
resolvedSignatures = new
|
|
362
|
+
resolvedSignatures = new CompactLinkTable();
|
|
314
363
|
/** Merged symbols, indexed by the id of the symbol merged into them. */
|
|
315
364
|
mergedSymbols;
|
|
316
365
|
/**
|
|
@@ -480,14 +529,20 @@ export class Checker {
|
|
|
480
529
|
globalSymbolCache = new Map();
|
|
481
530
|
// Resolution stacks for cycle detection (see pushTypeResolution).
|
|
482
531
|
resolutionStart = 0;
|
|
483
|
-
|
|
532
|
+
/** The generic types whose variances are being computed, outermost first. */
|
|
533
|
+
varianceStack = [];
|
|
484
534
|
// Instantiation
|
|
485
535
|
instantiationDepth = 0;
|
|
536
|
+
/** The types being instantiated, outermost first: the first `instantiationDepth` entries are current. */
|
|
537
|
+
instantiationStack = [];
|
|
538
|
+
/** The calls being resolved, outermost first: the first `callResolutionDepth` entries are current. */
|
|
539
|
+
callResolutionStack = [];
|
|
540
|
+
callResolutionDepth = 0;
|
|
486
541
|
instantiationCount = 0;
|
|
487
542
|
/** Instantiations over the checker's lifetime (statistics). */
|
|
488
543
|
totalInstantiations = 0;
|
|
489
|
-
/**
|
|
490
|
-
|
|
544
|
+
/** Ids of the mappers of the instantiations in progress: the first `activeMapperDepth` entries are live. */
|
|
545
|
+
activeMapperIds = new Int32Array(16);
|
|
491
546
|
activeMapperDepth = 0;
|
|
492
547
|
/** Per active mapper: its instantiations by type id, created on the first nested write. */
|
|
493
548
|
activeMapperCaches = [];
|
|
@@ -502,20 +557,32 @@ export class Checker {
|
|
|
502
557
|
/** Empty lists for type arguments that are compared with cached instantiations before any is kept. */
|
|
503
558
|
freeTypeLists = [];
|
|
504
559
|
/**
|
|
505
|
-
*
|
|
560
|
+
* The ids of the anonymous and mapped types whose declaration has no outer type parameters
|
|
506
561
|
* to instantiate (`getObjectTypeInstantiation`).
|
|
507
562
|
*/
|
|
508
|
-
withoutOuterTypeParameters = new
|
|
563
|
+
withoutOuterTypeParameters = new PagedIdSet();
|
|
509
564
|
conditionalConstraintDepth = 0;
|
|
510
565
|
suggestionResolver;
|
|
511
566
|
awaitedTypeStack = [];
|
|
512
567
|
/** Iteration types by type id and iteration use. */
|
|
513
568
|
iterationTypesCache = new Map();
|
|
514
|
-
/**
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
569
|
+
/**
|
|
570
|
+
* Diagnostics reported after the checks of the file being checked, or before the next global
|
|
571
|
+
* diagnostics are read, in the order they were deferred. Reporting them earlier could resolve types
|
|
572
|
+
* that are being resolved.
|
|
573
|
+
*/
|
|
574
|
+
deferredDiagnostics = [];
|
|
575
|
+
/** Defers the diagnostic `report` reports at `node` (`deferredDiagnostics`). */
|
|
576
|
+
deferDiagnostic(node, report) {
|
|
577
|
+
this.deferredDiagnostics.push(report);
|
|
578
|
+
if (this.deferredDiagnosticFiles !== undefined)
|
|
579
|
+
this.deferredDiagnosticFiles.push(getSourceFileOfNode(node).fileName);
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* The checked object literals of each file whose members may set deprecated properties of their contextual
|
|
583
|
+
* types, reported when the file's suggestion diagnostics are asked for (`checkObjectLiteralDeprecations`).
|
|
584
|
+
*/
|
|
585
|
+
objectLiteralsForDeprecations = new Map();
|
|
519
586
|
/** Binding patterns whose implied type is being computed as a contextual type. */
|
|
520
587
|
contextualBindingPatterns = [];
|
|
521
588
|
/** The binding pattern or assignment pattern that implied each type. */
|
|
@@ -572,6 +639,8 @@ export class Checker {
|
|
|
572
639
|
flowNodePostSuper = new Map();
|
|
573
640
|
lastFlowNode = undefined;
|
|
574
641
|
lastFlowNodeReachable = false;
|
|
642
|
+
/** Symbols whose explicit type is being found, for flow analysis of self-referential `for...of`. */
|
|
643
|
+
resolvingExplicitTypeOfSymbol = new Set();
|
|
575
644
|
assignmentMarker;
|
|
576
645
|
primitiveTypeAliasSuggestions = new Map();
|
|
577
646
|
/** Renamed binding elements in parameters of bodiless signatures, checked for use with their file. */
|
|
@@ -595,6 +664,9 @@ export class Checker {
|
|
|
595
664
|
ambientModuleSymbols = [];
|
|
596
665
|
patternAmbientModules = [];
|
|
597
666
|
patternAmbientModuleAugmentations = new Map();
|
|
667
|
+
/** The pattern module each entry of `patternAmbientModuleAugmentations` augments. */
|
|
668
|
+
patternAmbientModuleAugmentationTargets = new Map();
|
|
669
|
+
moduleImportAttributesTypes = new Map();
|
|
598
670
|
inferenceCaches = new InferenceCaches();
|
|
599
671
|
/** The type resolution stack: the first `resolutionDepth` entries are live, later slots are reused. */
|
|
600
672
|
resolutionTargets = [];
|
|
@@ -603,6 +675,28 @@ export class Checker {
|
|
|
603
675
|
resolutionDepth = 0;
|
|
604
676
|
/** The number of resolution cycles found (`pushTypeResolution`). */
|
|
605
677
|
resolutionCycleCount = 0;
|
|
678
|
+
/**
|
|
679
|
+
* While an `inferTypesFromUnstarted` walk runs: the unions and intersections whose properties
|
|
680
|
+
* `hasUnmatchedProperty` searched before they were resolved. Such a search creates fewer types
|
|
681
|
+
* than one of the resolved properties.
|
|
682
|
+
*/
|
|
683
|
+
unresolvedPropertySearches = undefined;
|
|
684
|
+
// The fields of shared results come last, so the fields before keep their places.
|
|
685
|
+
/** TSC_TS_SHARE: the checker thread's sharing with the other checker threads. */
|
|
686
|
+
threadSharing = undefined;
|
|
687
|
+
/**
|
|
688
|
+
* Where results are shared (shared-results.ts): for each conditional type made as a member of the distribution of a
|
|
689
|
+
* conditional type instantiation, that instantiation and the constituent it is for.
|
|
690
|
+
*/
|
|
691
|
+
distributedConditionals = undefined;
|
|
692
|
+
/** The same members by `distributedKey`. */
|
|
693
|
+
distributedByKey = undefined;
|
|
694
|
+
/** The conditional types conditional type instantiations resolved to, with the instantiation's root and key. */
|
|
695
|
+
conditionalResults = undefined;
|
|
696
|
+
/** The access flags of the key `getIndexedAccessTypeEx` keeps each indexed access type by. */
|
|
697
|
+
indexedAccessKeyFlags = undefined;
|
|
698
|
+
/** Where results are shared between checker threads (shared-results.ts): the file of each diagnostic deferred. */
|
|
699
|
+
deferredDiagnosticFiles = undefined;
|
|
606
700
|
constructor(host) {
|
|
607
701
|
this.host = host;
|
|
608
702
|
const options = host.getCompilerOptions();
|
|
@@ -792,6 +886,14 @@ export class Checker {
|
|
|
792
886
|
mergeAmbientModulesAndAugmentations(this);
|
|
793
887
|
this.modulesMerged = true;
|
|
794
888
|
this.mergeDiagnostics.push(this.diagnostics.takeLog(), this.suggestionDiagnostics.takeLog());
|
|
889
|
+
if (shareThreads)
|
|
890
|
+
startThreadSharing(this);
|
|
891
|
+
if (this.threadSharing !== undefined) {
|
|
892
|
+
this.distributedConditionals = new Map();
|
|
893
|
+
this.distributedByKey = new Map();
|
|
894
|
+
this.conditionalResults = new Map();
|
|
895
|
+
this.indexedAccessKeyFlags = new Map();
|
|
896
|
+
}
|
|
795
897
|
}
|
|
796
898
|
// ---- Public API
|
|
797
899
|
/** Checks `file` if needed and returns its semantic diagnostics, sorted. */
|
|
@@ -803,10 +905,12 @@ export class Checker {
|
|
|
803
905
|
/** Checks `file`, including unused identifiers, and returns its suggestion diagnostics. */
|
|
804
906
|
getSuggestionDiagnostics(file) {
|
|
805
907
|
checkSourceFile(this, file, true);
|
|
908
|
+
checkObjectLiteralDeprecations(this, file);
|
|
806
909
|
return this.suggestionDiagnostics.forFile(file.fileName);
|
|
807
910
|
}
|
|
808
911
|
/** Diagnostics without a file, such as missing global types. */
|
|
809
912
|
getGlobalDiagnostics() {
|
|
913
|
+
produceDeferredDiagnostics(this);
|
|
810
914
|
return this.diagnostics.globals();
|
|
811
915
|
}
|
|
812
916
|
/**
|
|
@@ -887,15 +991,15 @@ export class Checker {
|
|
|
887
991
|
// ---- Diagnostics
|
|
888
992
|
/** Reports `message` at `node`, or as a global diagnostic without a node. */
|
|
889
993
|
error(node, message, ...args) {
|
|
890
|
-
|
|
891
|
-
this.addDiagnostic(diagnostic);
|
|
892
|
-
return diagnostic;
|
|
994
|
+
return this.addDiagnostic(createDiagnosticForNode(node, message, args));
|
|
893
995
|
}
|
|
996
|
+
/** Reports `diagnostic`; returns the equal diagnostic already reported, if any, else `diagnostic`. */
|
|
894
997
|
addDiagnostic(diagnostic) {
|
|
895
998
|
this.reports++;
|
|
896
999
|
// Discard diagnostics created while at the maximum number of nested typeToString calls.
|
|
897
1000
|
if (this.serializationLevel < maxSerializationLevel)
|
|
898
|
-
this.diagnostics.add(diagnostic);
|
|
1001
|
+
return this.diagnostics.add(diagnostic);
|
|
1002
|
+
return diagnostic;
|
|
899
1003
|
}
|
|
900
1004
|
addSuggestion(diagnostic) {
|
|
901
1005
|
this.reports++;
|
|
@@ -941,6 +1045,7 @@ export function disposeChecker(c) {
|
|
|
941
1045
|
c.sharedSymbolCopies.clear();
|
|
942
1046
|
c.memberPositionsInLists.clear();
|
|
943
1047
|
c.memberNamesOfLists.clear();
|
|
1048
|
+
c.namedMemberOrdersOfLists.clear();
|
|
944
1049
|
c.propertiesByName.clear();
|
|
945
1050
|
c.symbolAccessibilityCaches = undefined;
|
|
946
1051
|
c.unresolvedSymbols.clear();
|
|
@@ -966,8 +1071,8 @@ export function disposeChecker(c) {
|
|
|
966
1071
|
c.cachedTypesById.clear();
|
|
967
1072
|
c.cachedTypesByPair.clear();
|
|
968
1073
|
c.iterationTypesCache.clear();
|
|
969
|
-
c.
|
|
970
|
-
c.
|
|
1074
|
+
c.deferredDiagnostics = [];
|
|
1075
|
+
c.objectLiteralsForDeprecations.clear();
|
|
971
1076
|
c.errorTypes.clear();
|
|
972
1077
|
c.globalTypeCache.clear();
|
|
973
1078
|
c.globalSymbolCache.clear();
|
|
@@ -978,8 +1083,11 @@ export function disposeChecker(c) {
|
|
|
978
1083
|
c.flowNodePostSuper.clear();
|
|
979
1084
|
c.primitiveTypeAliasSuggestions.clear();
|
|
980
1085
|
c.patternAmbientModuleAugmentations.clear();
|
|
1086
|
+
c.patternAmbientModuleAugmentationTargets.clear();
|
|
1087
|
+
c.moduleImportAttributesTypes.clear();
|
|
981
1088
|
c.sharedFlowTypes.length = 0;
|
|
982
1089
|
c.relationComparers = [];
|
|
1090
|
+
c.inferenceCaches.unstartedInferences.clear();
|
|
983
1091
|
}
|
|
984
1092
|
/** A diagnostic at `node`'s error range, or a global one without a node. */
|
|
985
1093
|
export function createDiagnosticForNode(node, message, args) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Diagnostic } from './diagnostics.js';
|
|
2
2
|
import { type OptionDeclaration } from './option-declarations.js';
|
|
3
|
-
import { type BuildOptions, type CompilerOptions, type OptionValue
|
|
3
|
+
import { type BuildOptions, type CompilerOptions, type OptionValue } from './options.js';
|
|
4
4
|
/** Reads response files. */
|
|
5
5
|
export declare abstract class CommandLineHost {
|
|
6
6
|
readonly currentDirectory: string;
|
|
@@ -10,7 +10,6 @@ export declare abstract class CommandLineHost {
|
|
|
10
10
|
}
|
|
11
11
|
export interface ParsedCommandLine {
|
|
12
12
|
readonly options: CompilerOptions;
|
|
13
|
-
readonly watchOptions: WatchOptions;
|
|
14
13
|
readonly fileNames: readonly string[];
|
|
15
14
|
readonly errors: readonly Diagnostic[];
|
|
16
15
|
/** Options as written, keyed by declaration name in first-seen order. Paths are not made absolute. */
|
|
@@ -20,7 +19,6 @@ export interface ParsedBuildCommandLine {
|
|
|
20
19
|
readonly buildOptions: BuildOptions;
|
|
21
20
|
/** Only options shared with `tsc`, and `build`. */
|
|
22
21
|
readonly compilerOptions: CompilerOptions;
|
|
23
|
-
readonly watchOptions: WatchOptions;
|
|
24
22
|
/** Project paths as given; `["."]` if none. */
|
|
25
23
|
readonly projects: readonly string[];
|
|
26
24
|
readonly errors: readonly Diagnostic[];
|