tsc-ts 0.0.10 → 0.1.1
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 +29 -18
- package/dist/api/compiler/ast.js +1040 -1007
- 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 +136 -91
- package/dist/api/compiler/checker-contextual.d.ts +20 -0
- package/dist/api/compiler/checker-contextual.js +175 -62
- 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 +258 -212
- 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 +107 -89
- 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 +190 -46
- 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 +97 -31
- package/dist/api/compiler/checker.js +149 -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 +24 -4
- package/dist/api/compiler/compile-program.js +53 -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/expr-record.d.ts +11 -0
- package/dist/api/compiler/expr-record.js +53 -0
- 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/identifier-name.d.ts +9 -0
- package/dist/api/compiler/identifier-name.js +10 -0
- package/dist/api/compiler/instantiation.d.ts +7 -0
- package/dist/api/compiler/instantiation.js +101 -49
- package/dist/api/compiler/jsdoc.js +27 -25
- 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 +42 -20
- package/dist/api/compiler/parser.js +318 -224
- 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 +6 -3
- 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 +306 -283
- 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 +64 -59
- package/dist/api/compiler/scanner.d.ts +27 -2
- package/dist/api/compiler/scanner.js +181 -150
- package/dist/api/compiler/shared-results.d.ts +696 -0
- package/dist/api/compiler/shared-results.js +2905 -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 +307 -239
- 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 +74 -38
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/cgroup.ts +157 -0
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +76 -8
- package/src/compiler/checker-classes.ts +80 -25
- package/src/compiler/checker-contextual.ts +110 -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 +95 -47
- 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 +28 -5
- 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 +173 -35
- 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 +175 -41
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +59 -25
- package/src/compiler/decoder.ts +15 -5
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/doctor-report.ts +133 -0
- package/src/compiler/emitter.ts +57 -8
- package/src/compiler/encoder.ts +23 -8
- package/src/compiler/expr-record.ts +59 -0
- 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/identifier-name.ts +13 -0
- 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 +7 -3
- 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 +543 -147
- package/src/compiler/parallel-emit.ts +4 -4
- package/src/compiler/parser.ts +166 -47
- 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 +7 -3
- package/src/compiler/printer/helpers.ts +10 -1
- package/src/compiler/printer/name-generator.ts +24 -2
- package/src/compiler/printer/printer.ts +39 -16
- 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 +14 -5
- package/src/compiler/run-config.ts +1383 -0
- package/src/compiler/run-record-read.ts +87 -0
- package/src/compiler/run-records.ts +575 -0
- package/src/compiler/scanner.ts +166 -120
- package/src/compiler/shared-results.ts +3144 -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 +22 -3
- 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 +136 -49
- 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 +67 -6
- package/src/compiler/tsc-cli.ts +35 -4
- package/src/compiler/tsc-compile.ts +220 -10
- package/src/compiler/tsc-watch.ts +97 -47
- 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,28 @@
|
|
|
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
|
+
import { ExprCheckRecord } from './expr-record.js';
|
|
5
6
|
import { Diagnostic, type DiagnosticMessage, Diagnostics } from './diagnostics.js';
|
|
6
7
|
import { type CompilerOptions, ModuleKind, ScriptTarget } from './options.js';
|
|
7
8
|
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';
|
|
9
|
+
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
10
|
import type { ModuleResolution } from './checker-modules.js';
|
|
10
11
|
import { CheckerNameResolver, type LibGlobals, type MergedGlobals, TableChanges, SuggestionNameResolver } from './checker-symbols.js';
|
|
11
|
-
import { Relation, RelationKey, type InternedRelationKey, type Relater, TypeComparer } from './relations.js';
|
|
12
|
+
import { Relation, RelationKey, type InternedRelationKey, type Relater, TypeComparer, type VarianceStackEntry } from './relations.js';
|
|
12
13
|
import { TypeNodeVisitor } from './checker-source-file.js';
|
|
13
14
|
import { InferenceCaches } from './checker-inference.js';
|
|
14
15
|
import { AssignmentMarker, type FlowLoopInfo, type FlowState, type FlowWalk } from './checker-narrowing.js';
|
|
15
16
|
import type { FlowNode, FlowReduceLabel } from './flow.js';
|
|
16
17
|
import { JsxState } from './checker-jsx.js';
|
|
17
|
-
import type {
|
|
18
|
+
import type { IterationTypes } from './checker-iteration.js';
|
|
18
19
|
import type { SpreadIndices } from './checker-contextual.js';
|
|
19
20
|
import { SourceFileMetadata } from './program-utilities.js';
|
|
20
21
|
import type { GrammarChecker } from './checker-grammar.js';
|
|
21
22
|
import type { ResolvedModule } from './module-resolution-types.js';
|
|
22
23
|
import type { ModuleSpecifierHost } from './module-specifiers.js';
|
|
23
24
|
import type { PropertyListIndex } from './checker-members.js';
|
|
25
|
+
import { type ThreadSharing } from './shared-results.js';
|
|
24
26
|
/** What the checker needs from a program. */
|
|
25
27
|
export declare abstract class CheckerHost {
|
|
26
28
|
abstract getCompilerOptions(): CompilerOptions;
|
|
@@ -57,15 +59,21 @@ export declare abstract class CheckerHost {
|
|
|
57
59
|
/** What module specifier generation needs; without it, specifiers are relative paths. */
|
|
58
60
|
getModuleSpecifierHost(): ModuleSpecifierHost | undefined;
|
|
59
61
|
}
|
|
60
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* Per-file and global diagnostics, sorted on read like tsgo's DiagnosticsCollection, which keeps one of
|
|
64
|
+
* each set of equal diagnostics.
|
|
65
|
+
*/
|
|
61
66
|
declare class DiagnosticCollection {
|
|
62
67
|
private readonly byFile;
|
|
63
68
|
private readonly sortedFiles;
|
|
64
69
|
private readonly global;
|
|
65
70
|
private globalSorted;
|
|
66
|
-
/** The diagnostics
|
|
71
|
+
/** The diagnostics at each file, position, end and code, to find an equal one when adding. */
|
|
72
|
+
private readonly byLocation;
|
|
73
|
+
/** The diagnostics reported since `startLog`, while recording, also those equal to one already added. */
|
|
67
74
|
private log;
|
|
68
|
-
|
|
75
|
+
/** Adds `diagnostic` unless an equal one was added; returns the one the collection holds. */
|
|
76
|
+
add(diagnostic: Diagnostic): Diagnostic;
|
|
69
77
|
forFile(fileName: string): Diagnostic[];
|
|
70
78
|
count(): number;
|
|
71
79
|
/** An already reported diagnostic equal to `diagnostic`, if any. */
|
|
@@ -73,8 +81,12 @@ declare class DiagnosticCollection {
|
|
|
73
81
|
globals(): Diagnostic[];
|
|
74
82
|
/** The global diagnostics `withoutNewGlobals` removed. */
|
|
75
83
|
removedGlobals: number;
|
|
84
|
+
/** Where results are shared between checker threads (shared-results.ts): every diagnostic added, in order. */
|
|
85
|
+
added: Diagnostic[] | undefined;
|
|
76
86
|
/** Runs `run`, then removes the global diagnostics it added. */
|
|
77
87
|
withoutNewGlobals<T>(run: () => T): T;
|
|
88
|
+
/** Removes the global diagnostic `diagnostic` from the location index. */
|
|
89
|
+
private forget;
|
|
78
90
|
/** Records the diagnostics added from now on. */
|
|
79
91
|
startLog(): void;
|
|
80
92
|
/** The diagnostics added since `startLog`, in order; stops recording. */
|
|
@@ -147,10 +159,20 @@ export declare class Checker implements TypeChecking {
|
|
|
147
159
|
readonly memberPositionsInLists: Map<Symbol[], Map<string, number>>;
|
|
148
160
|
/** The property names of the last instantiation of each such list whose table is built on demand. */
|
|
149
161
|
readonly memberNamesOfLists: Map<Symbol[], MemberNames>;
|
|
162
|
+
/** The property order of the instantiations of each such list (`NamedMemberOrder`); null where it has none. */
|
|
163
|
+
readonly namedMemberOrdersOfLists: Map<Symbol[], NamedMemberOrder | null>;
|
|
150
164
|
/** Long lists of inherited properties, by name. */
|
|
151
165
|
readonly propertiesByName: Map<Symbol[], Map<string, Symbol>>;
|
|
152
166
|
/** Number of `typeToString` calls in progress. */
|
|
153
167
|
serializationLevel: number;
|
|
168
|
+
/**
|
|
169
|
+
* `typeToString` results by type, enclosing declaration, flags and the type parameter of the variance check in
|
|
170
|
+
* progress: the prints that created no types, which a later print with the same inputs repeats exactly
|
|
171
|
+
* (`typeToString`).
|
|
172
|
+
*/
|
|
173
|
+
readonly typeStrings: Map<string, string>;
|
|
174
|
+
/** `symbolToString` results by symbol, then by enclosing declaration and flags, kept as `typeStrings` are. */
|
|
175
|
+
readonly symbolStrings: Map<Symbol, Map<string, string>>;
|
|
154
176
|
/** Whether `globalObjectType` is set; global type lookups before it can't suggest `typeof`. */
|
|
155
177
|
hasGlobalObjectType: boolean;
|
|
156
178
|
/** The node being checked, for errors with no better location. */
|
|
@@ -167,7 +189,7 @@ export declare class Checker implements TypeChecking {
|
|
|
167
189
|
*/
|
|
168
190
|
modulesMerged: boolean;
|
|
169
191
|
/** Module specifiers of `import("…")` types, by module symbol id, importing file path and resolution mode. */
|
|
170
|
-
readonly moduleSpecifiers: Map<string,
|
|
192
|
+
readonly moduleSpecifiers: Map<string, ModuleSpecifierResult>;
|
|
171
193
|
/** Specifier generation for hosts without a program. */
|
|
172
194
|
fallbackModuleSpecifierHost: ModuleSpecifierHost | undefined;
|
|
173
195
|
readonly symbolLinkTable: SparseLinkTable<SymbolLinks>;
|
|
@@ -188,24 +210,26 @@ export declare class Checker implements TypeChecking {
|
|
|
188
210
|
/** The mapper of an instantiated symbol or a mapped type property. */
|
|
189
211
|
readonly symbolMappers: LinkTable<TypeMapper>;
|
|
190
212
|
/** The literal type of a property name. */
|
|
191
|
-
readonly symbolNameTypes:
|
|
213
|
+
readonly symbolNameTypes: CompactLinkTable<Type>;
|
|
192
214
|
/** The mapped type of a mapped type property, or the union/intersection of a synthetic property. */
|
|
193
|
-
readonly symbolContainingTypes:
|
|
215
|
+
readonly symbolContainingTypes: CompactLinkTable<Type>;
|
|
194
216
|
/** The key type of a mapped type property. */
|
|
195
|
-
readonly symbolKeyTypes:
|
|
217
|
+
readonly symbolKeyTypes: CompactLinkTable<Type>;
|
|
196
218
|
/** The property a mapped, spread or synthetic property comes from. */
|
|
197
|
-
readonly symbolSyntheticOrigins:
|
|
219
|
+
readonly symbolSyntheticOrigins: CompactLinkTable<Symbol>;
|
|
198
220
|
/** The left and right properties a spread property combines. */
|
|
199
|
-
readonly symbolLeftSpreads:
|
|
200
|
-
readonly symbolRightSpreads:
|
|
221
|
+
readonly symbolLeftSpreads: CompactLinkTable<Symbol>;
|
|
222
|
+
readonly symbolRightSpreads: CompactLinkTable<Symbol>;
|
|
201
223
|
/** Bits of SymbolFlags for the meanings in which a symbol was referenced. */
|
|
202
|
-
readonly symbolReferenceKinds:
|
|
224
|
+
readonly symbolReferenceKinds: CompactIntLinkTable;
|
|
203
225
|
/** The resolved symbol of an identifier, entity name or call. */
|
|
204
|
-
readonly resolvedSymbols:
|
|
226
|
+
readonly resolvedSymbols: CompactLinkTable<Symbol>;
|
|
205
227
|
/** The resolved type of a type node or expression. */
|
|
206
|
-
readonly resolvedTypes:
|
|
228
|
+
readonly resolvedTypes: CompactLinkTable<Type>;
|
|
229
|
+
/** The type the last completed check of each expression key produced (expr-record.ts). */
|
|
230
|
+
readonly exprCheckRecord: ExprCheckRecord;
|
|
207
231
|
/** The resolved signature of a call-like node or a signature declaration. */
|
|
208
|
-
readonly resolvedSignatures:
|
|
232
|
+
readonly resolvedSignatures: CompactLinkTable<Signature>;
|
|
209
233
|
/** Merged symbols, indexed by the id of the symbol merged into them. */
|
|
210
234
|
readonly mergedSymbols: Map<number, Symbol>;
|
|
211
235
|
/**
|
|
@@ -253,6 +277,7 @@ export declare class Checker implements TypeChecking {
|
|
|
253
277
|
readonly unionOfUnionTypes: Map<string, Type>;
|
|
254
278
|
/** `unionOfUnionTypes` without an alias, by both ids and the reduction packed into one number. */
|
|
255
279
|
readonly unionOfUnionTypesById: Map<number, Type>;
|
|
280
|
+
readonly unionTypesByInputList: TypeListCache<Type>;
|
|
256
281
|
readonly intersectionTypes: TypeListCache<Type>;
|
|
257
282
|
readonly tupleTypes: Map<string, Type>;
|
|
258
283
|
readonly indexedAccessTypes: Map<string, Type>;
|
|
@@ -368,13 +393,19 @@ export declare class Checker implements TypeChecking {
|
|
|
368
393
|
readonly moduleTypeCache: Map<string, Type>;
|
|
369
394
|
readonly globalSymbolCache: Map<string, Symbol | null>;
|
|
370
395
|
resolutionStart: number;
|
|
371
|
-
|
|
396
|
+
/** The generic types whose variances are being computed, outermost first. */
|
|
397
|
+
varianceStack: VarianceStackEntry[];
|
|
372
398
|
instantiationDepth: number;
|
|
399
|
+
/** The types being instantiated, outermost first: the first `instantiationDepth` entries are current. */
|
|
400
|
+
readonly instantiationStack: Type[];
|
|
401
|
+
/** The calls being resolved, outermost first: the first `callResolutionDepth` entries are current. */
|
|
402
|
+
readonly callResolutionStack: Node[];
|
|
403
|
+
callResolutionDepth: number;
|
|
373
404
|
instantiationCount: number;
|
|
374
405
|
/** Instantiations over the checker's lifetime (statistics). */
|
|
375
406
|
totalInstantiations: number;
|
|
376
|
-
/**
|
|
377
|
-
|
|
407
|
+
/** Ids of the mappers of the instantiations in progress: the first `activeMapperDepth` entries are live. */
|
|
408
|
+
activeMapperIds: Int32Array<ArrayBuffer>;
|
|
378
409
|
activeMapperDepth: number;
|
|
379
410
|
/** Per active mapper: its instantiations by type id, created on the first nested write. */
|
|
380
411
|
readonly activeMapperCaches: (Map<number, Type> | undefined)[];
|
|
@@ -389,20 +420,28 @@ export declare class Checker implements TypeChecking {
|
|
|
389
420
|
/** Empty lists for type arguments that are compared with cached instantiations before any is kept. */
|
|
390
421
|
readonly freeTypeLists: Type[][];
|
|
391
422
|
/**
|
|
392
|
-
*
|
|
423
|
+
* The ids of the anonymous and mapped types whose declaration has no outer type parameters
|
|
393
424
|
* to instantiate (`getObjectTypeInstantiation`).
|
|
394
425
|
*/
|
|
395
|
-
readonly withoutOuterTypeParameters:
|
|
426
|
+
readonly withoutOuterTypeParameters: PagedIdSet;
|
|
396
427
|
conditionalConstraintDepth: number;
|
|
397
428
|
readonly suggestionResolver: SuggestionNameResolver;
|
|
398
429
|
readonly awaitedTypeStack: number[];
|
|
399
430
|
/** Iteration types by type id and iteration use. */
|
|
400
431
|
readonly iterationTypesCache: Map<number, IterationTypes>;
|
|
401
|
-
/**
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
432
|
+
/**
|
|
433
|
+
* Diagnostics reported after the checks of the file being checked, or before the next global
|
|
434
|
+
* diagnostics are read, in the order they were deferred. Reporting them earlier could resolve types
|
|
435
|
+
* that are being resolved.
|
|
436
|
+
*/
|
|
437
|
+
deferredDiagnostics: (() => void)[];
|
|
438
|
+
/** Defers the diagnostic `report` reports at `node` (`deferredDiagnostics`). */
|
|
439
|
+
deferDiagnostic(node: Node, report: () => void): void;
|
|
440
|
+
/**
|
|
441
|
+
* The checked object literals of each file whose members may set deprecated properties of their contextual
|
|
442
|
+
* types, reported when the file's suggestion diagnostics are asked for (`checkObjectLiteralDeprecations`).
|
|
443
|
+
*/
|
|
444
|
+
readonly objectLiteralsForDeprecations: Map<SourceFile, Node[]>;
|
|
406
445
|
/** Binding patterns whose implied type is being computed as a contextual type. */
|
|
407
446
|
readonly contextualBindingPatterns: Node[];
|
|
408
447
|
/** The binding pattern or assignment pattern that implied each type. */
|
|
@@ -453,11 +492,13 @@ export declare class Checker implements TypeChecking {
|
|
|
453
492
|
flowTypeCache: Map<Node, Type> | undefined;
|
|
454
493
|
flowInvocationCount: number;
|
|
455
494
|
/** The reduce labels being passed, innermost last; each limits its target label's antecedents. */
|
|
456
|
-
|
|
495
|
+
flowReduceLabels: FlowReduceLabel[];
|
|
457
496
|
readonly flowNodeReachable: Map<FlowNode, boolean>;
|
|
458
497
|
readonly flowNodePostSuper: Map<FlowNode, boolean>;
|
|
459
498
|
lastFlowNode: FlowNode | undefined;
|
|
460
499
|
lastFlowNodeReachable: boolean;
|
|
500
|
+
/** Symbols whose explicit type is being found, for flow analysis of self-referential `for...of`. */
|
|
501
|
+
readonly resolvingExplicitTypeOfSymbol: Set<Symbol>;
|
|
461
502
|
readonly assignmentMarker: AssignmentMarker;
|
|
462
503
|
readonly primitiveTypeAliasSuggestions: Map<string, Symbol>;
|
|
463
504
|
/** Renamed binding elements in parameters of bodiless signatures, checked for use with their file. */
|
|
@@ -480,6 +521,9 @@ export declare class Checker implements TypeChecking {
|
|
|
480
521
|
readonly ambientModuleSymbols: Symbol[];
|
|
481
522
|
readonly patternAmbientModules: PatternAmbientModule[];
|
|
482
523
|
readonly patternAmbientModuleAugmentations: Map<string, Symbol>;
|
|
524
|
+
/** The pattern module each entry of `patternAmbientModuleAugmentations` augments. */
|
|
525
|
+
readonly patternAmbientModuleAugmentationTargets: Map<string, Symbol>;
|
|
526
|
+
readonly moduleImportAttributesTypes: Map<Symbol, Type>;
|
|
483
527
|
readonly inferenceCaches: InferenceCaches;
|
|
484
528
|
/** The type resolution stack: the first `resolutionDepth` entries are live, later slots are reused. */
|
|
485
529
|
readonly resolutionTargets: (Symbol | Type | Signature | Node)[];
|
|
@@ -488,6 +532,27 @@ export declare class Checker implements TypeChecking {
|
|
|
488
532
|
resolutionDepth: number;
|
|
489
533
|
/** The number of resolution cycles found (`pushTypeResolution`). */
|
|
490
534
|
resolutionCycleCount: number;
|
|
535
|
+
/**
|
|
536
|
+
* While an `inferTypesFromUnstarted` walk runs: the unions and intersections whose properties
|
|
537
|
+
* `hasUnmatchedProperty` searched before they were resolved. Such a search creates fewer types
|
|
538
|
+
* than one of the resolved properties.
|
|
539
|
+
*/
|
|
540
|
+
unresolvedPropertySearches: Type[] | undefined;
|
|
541
|
+
/** TSC_TS_SHARE: the checker thread's sharing with the other checker threads. */
|
|
542
|
+
threadSharing: ThreadSharing | undefined;
|
|
543
|
+
/**
|
|
544
|
+
* Where results are shared (shared-results.ts): for each conditional type made as a member of the distribution of a
|
|
545
|
+
* conditional type instantiation, that instantiation and the constituent it is for.
|
|
546
|
+
*/
|
|
547
|
+
distributedConditionals: Map<Type, DistributedConditional> | undefined;
|
|
548
|
+
/** The same members by `distributedKey`. */
|
|
549
|
+
distributedByKey: Map<string, Type> | undefined;
|
|
550
|
+
/** The conditional types conditional type instantiations resolved to, with the instantiation's root and key. */
|
|
551
|
+
conditionalResults: Map<Type, ConditionalResultKey> | undefined;
|
|
552
|
+
/** The access flags of the key `getIndexedAccessTypeEx` keeps each indexed access type by. */
|
|
553
|
+
indexedAccessKeyFlags: Map<Type, number> | undefined;
|
|
554
|
+
/** Where results are shared between checker threads (shared-results.ts): the file of each diagnostic deferred. */
|
|
555
|
+
deferredDiagnosticFiles: number[] | undefined;
|
|
491
556
|
constructor(host: CheckerHost);
|
|
492
557
|
/** Checks `file` if needed and returns its semantic diagnostics, sorted. */
|
|
493
558
|
getDiagnostics(file: SourceFile): Diagnostic[];
|
|
@@ -522,7 +587,8 @@ export declare class Checker implements TypeChecking {
|
|
|
522
587
|
newSignature(flags: SignatureFlags, declaration: Node | undefined, typeParameters: Type[], thisParameter: Symbol | undefined, parameters: Symbol[], resolvedReturnType: Type | undefined, minArgumentCount: number): Signature;
|
|
523
588
|
/** Reports `message` at `node`, or as a global diagnostic without a node. */
|
|
524
589
|
error(node: Node | undefined, message: DiagnosticMessage, ...args: string[]): Diagnostic;
|
|
525
|
-
|
|
590
|
+
/** Reports `diagnostic`; returns the equal diagnostic already reported, if any, else `diagnostic`. */
|
|
591
|
+
addDiagnostic(diagnostic: Diagnostic): Diagnostic;
|
|
526
592
|
addSuggestion(diagnostic: Diagnostic): void;
|
|
527
593
|
/** Reports an error, or a suggestion when `isError` is false. */
|
|
528
594
|
addErrorOrSuggestion(isError: boolean, diagnostic: Diagnostic): void;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { sideOf } from './side-state.js';
|
|
2
|
-
import {
|
|
2
|
+
import { CompactIntLinkTable, CompactLinkTable, IntLinkTable, LinkTable, PagedIdSet, SparseLinkTable, } from './link-tables.js';
|
|
3
|
+
import { ExprCheckRecord } from './expr-record.js';
|
|
3
4
|
import { getErrorRangeForNode, getSourceFileOfNode } from './binder-utilities.js';
|
|
4
|
-
import { Diagnostic, compareDiagnostics } from './diagnostics.js';
|
|
5
|
+
import { Diagnostic, compareDiagnostics, equalDiagnostics, } from './diagnostics.js';
|
|
5
6
|
import { ModuleKind, ScriptTarget, getEmitScriptTarget, getIsolatedModules, getStrictOptionValue, shouldPreserveConstEnums, } from './options.js';
|
|
6
7
|
import { Symbol, getSymbolId } from './symbol.js';
|
|
7
8
|
import { IndexInfo, IntrinsicType, LiteralType, NodeLinks, Signature, SymbolLinks, TypeParameter, TypePredicate, emptyTypes, TypeListCache, TypeListTable, } from './checker-types.js';
|
|
@@ -10,12 +11,14 @@ import { getFalseTypeFromConditionalType, getTrueTypeFromConditionalType } from
|
|
|
10
11
|
import { createArrayType, createTypeFromGenericGlobalType, getBigIntLiteralType, getNumberLiteralType, getStringLiteralType, getTemplateLiteralType, getUnionType, newAnonymousType, newObjectType, } from './checker-type-factory.js';
|
|
11
12
|
import { CheckerNameResolver, borrowLibGlobals, findLibGlobals, returnLibGlobals, setGlobal, SuggestionNameResolver, getGlobalStrictFunctionType, getGlobalType, initializeGlobals, mergeAmbientModulesAndAugmentations, } from './checker-symbols.js';
|
|
12
13
|
import { PermissiveMapper, ReportingMapper, RestrictiveMapper, UniqueLiteralMapper } from './instantiation.js';
|
|
13
|
-
import { Relation, RelationKey } from './relations.js';
|
|
14
|
-
import { TypeNodeVisitor, checkSourceFile } from './checker-source-file.js';
|
|
14
|
+
import { Relation, RelationKey, } from './relations.js';
|
|
15
|
+
import { TypeNodeVisitor, checkSourceFile, produceDeferredDiagnostics } from './checker-source-file.js';
|
|
16
|
+
import { checkObjectLiteralDeprecations } from './checker-deprecation.js';
|
|
15
17
|
import { InferenceCaches } from './checker-inference.js';
|
|
16
18
|
import { AssignmentMarker } from './checker-narrowing.js';
|
|
17
19
|
import { JsxState } from './checker-jsx.js';
|
|
18
20
|
import { SourceFileMetadata, getEmitModuleFormatOfFile } from './program-utilities.js';
|
|
21
|
+
import { startThreadSharing } from './shared-results.js';
|
|
19
22
|
/** What the checker needs from a program. */
|
|
20
23
|
export class CheckerHost {
|
|
21
24
|
/** How a module name in `file` resolved in `mode`, if the program resolved it. */
|
|
@@ -78,22 +81,40 @@ export class CheckerHost {
|
|
|
78
81
|
return undefined;
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Per-file and global diagnostics, sorted on read like tsgo's DiagnosticsCollection, which keeps one of
|
|
86
|
+
* each set of equal diagnostics.
|
|
87
|
+
*/
|
|
82
88
|
class DiagnosticCollection {
|
|
83
89
|
byFile = new Map();
|
|
84
90
|
sortedFiles = new Set();
|
|
85
91
|
global = [];
|
|
86
92
|
globalSorted = true;
|
|
87
|
-
/** The diagnostics
|
|
93
|
+
/** The diagnostics at each file, position, end and code, to find an equal one when adding. */
|
|
94
|
+
byLocation = new Map();
|
|
95
|
+
/** The diagnostics reported since `startLog`, while recording, also those equal to one already added. */
|
|
88
96
|
log = undefined;
|
|
97
|
+
/** Adds `diagnostic` unless an equal one was added; returns the one the collection holds. */
|
|
89
98
|
add(diagnostic) {
|
|
90
99
|
if (this.log !== undefined)
|
|
91
100
|
this.log.push(diagnostic);
|
|
101
|
+
if (this.added !== undefined)
|
|
102
|
+
this.added.push(diagnostic);
|
|
92
103
|
const file = diagnostic.file;
|
|
104
|
+
const key = `${file === undefined ? '' : file.fileName}\0${diagnostic.pos}\0${diagnostic.end}\0${diagnostic.code}`;
|
|
105
|
+
const existing = this.byLocation.get(key);
|
|
106
|
+
if (existing === undefined)
|
|
107
|
+
this.byLocation.set(key, [diagnostic]);
|
|
108
|
+
else {
|
|
109
|
+
for (const d of existing)
|
|
110
|
+
if (equalDiagnostics(d, diagnostic))
|
|
111
|
+
return d;
|
|
112
|
+
existing.push(diagnostic);
|
|
113
|
+
}
|
|
93
114
|
if (file === undefined) {
|
|
94
115
|
this.global.push(diagnostic);
|
|
95
116
|
this.globalSorted = false;
|
|
96
|
-
return;
|
|
117
|
+
return diagnostic;
|
|
97
118
|
}
|
|
98
119
|
let list = this.byFile.get(file.fileName);
|
|
99
120
|
if (list === undefined) {
|
|
@@ -102,6 +123,7 @@ class DiagnosticCollection {
|
|
|
102
123
|
}
|
|
103
124
|
list.push(diagnostic);
|
|
104
125
|
this.sortedFiles.delete(file.fileName);
|
|
126
|
+
return diagnostic;
|
|
105
127
|
}
|
|
106
128
|
forFile(fileName) {
|
|
107
129
|
const list = this.byFile.get(fileName);
|
|
@@ -139,6 +161,8 @@ class DiagnosticCollection {
|
|
|
139
161
|
}
|
|
140
162
|
/** The global diagnostics `withoutNewGlobals` removed. */
|
|
141
163
|
removedGlobals = 0;
|
|
164
|
+
/** Where results are shared between checker threads (shared-results.ts): every diagnostic added, in order. */
|
|
165
|
+
added = undefined;
|
|
142
166
|
/** Runs `run`, then removes the global diagnostics it added. */
|
|
143
167
|
withoutNewGlobals(run) {
|
|
144
168
|
const outer = this.log;
|
|
@@ -157,15 +181,28 @@ class DiagnosticCollection {
|
|
|
157
181
|
if (d.file === undefined)
|
|
158
182
|
globals.add(d);
|
|
159
183
|
if (globals.size > 0) {
|
|
160
|
-
this.removedGlobals += globals.size;
|
|
161
184
|
let kept = 0;
|
|
162
|
-
for (const d of this.global)
|
|
185
|
+
for (const d of this.global) {
|
|
163
186
|
if (!globals.has(d))
|
|
164
187
|
this.global[kept++] = d;
|
|
188
|
+
else
|
|
189
|
+
this.forget(d);
|
|
190
|
+
}
|
|
191
|
+
this.removedGlobals += this.global.length - kept;
|
|
165
192
|
this.global.length = kept;
|
|
166
193
|
}
|
|
167
194
|
}
|
|
168
195
|
}
|
|
196
|
+
/** Removes the global diagnostic `diagnostic` from the location index. */
|
|
197
|
+
forget(diagnostic) {
|
|
198
|
+
const key = `\0${diagnostic.pos}\0${diagnostic.end}\0${diagnostic.code}`;
|
|
199
|
+
const existing = this.byLocation.get(key);
|
|
200
|
+
if (existing === undefined)
|
|
201
|
+
return;
|
|
202
|
+
const at = existing.indexOf(diagnostic);
|
|
203
|
+
if (at >= 0)
|
|
204
|
+
existing.splice(at, 1);
|
|
205
|
+
}
|
|
169
206
|
/** Records the diagnostics added from now on. */
|
|
170
207
|
startLog() {
|
|
171
208
|
this.log = [];
|
|
@@ -249,10 +286,20 @@ export class Checker {
|
|
|
249
286
|
memberPositionsInLists = new Map();
|
|
250
287
|
/** The property names of the last instantiation of each such list whose table is built on demand. */
|
|
251
288
|
memberNamesOfLists = new Map();
|
|
289
|
+
/** The property order of the instantiations of each such list (`NamedMemberOrder`); null where it has none. */
|
|
290
|
+
namedMemberOrdersOfLists = new Map();
|
|
252
291
|
/** Long lists of inherited properties, by name. */
|
|
253
292
|
propertiesByName = new Map();
|
|
254
293
|
/** Number of `typeToString` calls in progress. */
|
|
255
294
|
serializationLevel = 0;
|
|
295
|
+
/**
|
|
296
|
+
* `typeToString` results by type, enclosing declaration, flags and the type parameter of the variance check in
|
|
297
|
+
* progress: the prints that created no types, which a later print with the same inputs repeats exactly
|
|
298
|
+
* (`typeToString`).
|
|
299
|
+
*/
|
|
300
|
+
typeStrings = new Map();
|
|
301
|
+
/** `symbolToString` results by symbol, then by enclosing declaration and flags, kept as `typeStrings` are. */
|
|
302
|
+
symbolStrings = new Map();
|
|
256
303
|
/** Whether `globalObjectType` is set; global type lookups before it can't suggest `typeof`. */
|
|
257
304
|
hasGlobalObjectType = false;
|
|
258
305
|
/** The node being checked, for errors with no better location. */
|
|
@@ -286,6 +333,9 @@ export class Checker {
|
|
|
286
333
|
* so far; null where a list repeats a name.
|
|
287
334
|
*/
|
|
288
335
|
propertyListIndexes = new Map();
|
|
336
|
+
// Types, targets and mappers of symbols keep a slot per id: they are dense enough, and read on hot
|
|
337
|
+
// paths. The other symbol columns, which most symbols leave empty, keep only their values
|
|
338
|
+
// (CompactLinkTable).
|
|
289
339
|
/** The type of a value symbol. */
|
|
290
340
|
symbolTypes = new LinkTable();
|
|
291
341
|
/** For instantiated and synthetic symbols, the symbol they come from. */
|
|
@@ -293,24 +343,26 @@ export class Checker {
|
|
|
293
343
|
/** The mapper of an instantiated symbol or a mapped type property. */
|
|
294
344
|
symbolMappers = new LinkTable();
|
|
295
345
|
/** The literal type of a property name. */
|
|
296
|
-
symbolNameTypes = new
|
|
346
|
+
symbolNameTypes = new CompactLinkTable();
|
|
297
347
|
/** The mapped type of a mapped type property, or the union/intersection of a synthetic property. */
|
|
298
|
-
symbolContainingTypes = new
|
|
348
|
+
symbolContainingTypes = new CompactLinkTable();
|
|
299
349
|
/** The key type of a mapped type property. */
|
|
300
|
-
symbolKeyTypes = new
|
|
350
|
+
symbolKeyTypes = new CompactLinkTable();
|
|
301
351
|
/** The property a mapped, spread or synthetic property comes from. */
|
|
302
|
-
symbolSyntheticOrigins = new
|
|
352
|
+
symbolSyntheticOrigins = new CompactLinkTable();
|
|
303
353
|
/** The left and right properties a spread property combines. */
|
|
304
|
-
symbolLeftSpreads = new
|
|
305
|
-
symbolRightSpreads = new
|
|
354
|
+
symbolLeftSpreads = new CompactLinkTable();
|
|
355
|
+
symbolRightSpreads = new CompactLinkTable();
|
|
306
356
|
/** Bits of SymbolFlags for the meanings in which a symbol was referenced. */
|
|
307
|
-
symbolReferenceKinds = new
|
|
357
|
+
symbolReferenceKinds = new CompactIntLinkTable();
|
|
308
358
|
/** The resolved symbol of an identifier, entity name or call. */
|
|
309
|
-
resolvedSymbols = new
|
|
359
|
+
resolvedSymbols = new CompactLinkTable();
|
|
310
360
|
/** The resolved type of a type node or expression. */
|
|
311
|
-
resolvedTypes = new
|
|
361
|
+
resolvedTypes = new CompactLinkTable();
|
|
362
|
+
/** The type the last completed check of each expression key produced (expr-record.ts). */
|
|
363
|
+
exprCheckRecord = new ExprCheckRecord();
|
|
312
364
|
/** The resolved signature of a call-like node or a signature declaration. */
|
|
313
|
-
resolvedSignatures = new
|
|
365
|
+
resolvedSignatures = new CompactLinkTable();
|
|
314
366
|
/** Merged symbols, indexed by the id of the symbol merged into them. */
|
|
315
367
|
mergedSymbols;
|
|
316
368
|
/**
|
|
@@ -360,6 +412,7 @@ export class Checker {
|
|
|
360
412
|
unionOfUnionTypes = new Map();
|
|
361
413
|
/** `unionOfUnionTypes` without an alias, by both ids and the reduction packed into one number. */
|
|
362
414
|
unionOfUnionTypesById = new Map();
|
|
415
|
+
unionTypesByInputList = new TypeListCache();
|
|
363
416
|
intersectionTypes = new TypeListCache();
|
|
364
417
|
tupleTypes = new Map();
|
|
365
418
|
indexedAccessTypes = new Map();
|
|
@@ -480,14 +533,20 @@ export class Checker {
|
|
|
480
533
|
globalSymbolCache = new Map();
|
|
481
534
|
// Resolution stacks for cycle detection (see pushTypeResolution).
|
|
482
535
|
resolutionStart = 0;
|
|
483
|
-
|
|
536
|
+
/** The generic types whose variances are being computed, outermost first. */
|
|
537
|
+
varianceStack = [];
|
|
484
538
|
// Instantiation
|
|
485
539
|
instantiationDepth = 0;
|
|
540
|
+
/** The types being instantiated, outermost first: the first `instantiationDepth` entries are current. */
|
|
541
|
+
instantiationStack = [];
|
|
542
|
+
/** The calls being resolved, outermost first: the first `callResolutionDepth` entries are current. */
|
|
543
|
+
callResolutionStack = [];
|
|
544
|
+
callResolutionDepth = 0;
|
|
486
545
|
instantiationCount = 0;
|
|
487
546
|
/** Instantiations over the checker's lifetime (statistics). */
|
|
488
547
|
totalInstantiations = 0;
|
|
489
|
-
/**
|
|
490
|
-
|
|
548
|
+
/** Ids of the mappers of the instantiations in progress: the first `activeMapperDepth` entries are live. */
|
|
549
|
+
activeMapperIds = new Int32Array(16);
|
|
491
550
|
activeMapperDepth = 0;
|
|
492
551
|
/** Per active mapper: its instantiations by type id, created on the first nested write. */
|
|
493
552
|
activeMapperCaches = [];
|
|
@@ -502,20 +561,32 @@ export class Checker {
|
|
|
502
561
|
/** Empty lists for type arguments that are compared with cached instantiations before any is kept. */
|
|
503
562
|
freeTypeLists = [];
|
|
504
563
|
/**
|
|
505
|
-
*
|
|
564
|
+
* The ids of the anonymous and mapped types whose declaration has no outer type parameters
|
|
506
565
|
* to instantiate (`getObjectTypeInstantiation`).
|
|
507
566
|
*/
|
|
508
|
-
withoutOuterTypeParameters = new
|
|
567
|
+
withoutOuterTypeParameters = new PagedIdSet();
|
|
509
568
|
conditionalConstraintDepth = 0;
|
|
510
569
|
suggestionResolver;
|
|
511
570
|
awaitedTypeStack = [];
|
|
512
571
|
/** Iteration types by type id and iteration use. */
|
|
513
572
|
iterationTypesCache = new Map();
|
|
514
|
-
/**
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
573
|
+
/**
|
|
574
|
+
* Diagnostics reported after the checks of the file being checked, or before the next global
|
|
575
|
+
* diagnostics are read, in the order they were deferred. Reporting them earlier could resolve types
|
|
576
|
+
* that are being resolved.
|
|
577
|
+
*/
|
|
578
|
+
deferredDiagnostics = [];
|
|
579
|
+
/** Defers the diagnostic `report` reports at `node` (`deferredDiagnostics`). */
|
|
580
|
+
deferDiagnostic(node, report) {
|
|
581
|
+
this.deferredDiagnostics.push(report);
|
|
582
|
+
if (this.deferredDiagnosticFiles !== undefined)
|
|
583
|
+
this.deferredDiagnosticFiles.push(this.fileIndex.get(getSourceFileOfNode(node)) ?? -1);
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* The checked object literals of each file whose members may set deprecated properties of their contextual
|
|
587
|
+
* types, reported when the file's suggestion diagnostics are asked for (`checkObjectLiteralDeprecations`).
|
|
588
|
+
*/
|
|
589
|
+
objectLiteralsForDeprecations = new Map();
|
|
519
590
|
/** Binding patterns whose implied type is being computed as a contextual type. */
|
|
520
591
|
contextualBindingPatterns = [];
|
|
521
592
|
/** The binding pattern or assignment pattern that implied each type. */
|
|
@@ -572,6 +643,8 @@ export class Checker {
|
|
|
572
643
|
flowNodePostSuper = new Map();
|
|
573
644
|
lastFlowNode = undefined;
|
|
574
645
|
lastFlowNodeReachable = false;
|
|
646
|
+
/** Symbols whose explicit type is being found, for flow analysis of self-referential `for...of`. */
|
|
647
|
+
resolvingExplicitTypeOfSymbol = new Set();
|
|
575
648
|
assignmentMarker;
|
|
576
649
|
primitiveTypeAliasSuggestions = new Map();
|
|
577
650
|
/** Renamed binding elements in parameters of bodiless signatures, checked for use with their file. */
|
|
@@ -595,6 +668,9 @@ export class Checker {
|
|
|
595
668
|
ambientModuleSymbols = [];
|
|
596
669
|
patternAmbientModules = [];
|
|
597
670
|
patternAmbientModuleAugmentations = new Map();
|
|
671
|
+
/** The pattern module each entry of `patternAmbientModuleAugmentations` augments. */
|
|
672
|
+
patternAmbientModuleAugmentationTargets = new Map();
|
|
673
|
+
moduleImportAttributesTypes = new Map();
|
|
598
674
|
inferenceCaches = new InferenceCaches();
|
|
599
675
|
/** The type resolution stack: the first `resolutionDepth` entries are live, later slots are reused. */
|
|
600
676
|
resolutionTargets = [];
|
|
@@ -603,6 +679,28 @@ export class Checker {
|
|
|
603
679
|
resolutionDepth = 0;
|
|
604
680
|
/** The number of resolution cycles found (`pushTypeResolution`). */
|
|
605
681
|
resolutionCycleCount = 0;
|
|
682
|
+
/**
|
|
683
|
+
* While an `inferTypesFromUnstarted` walk runs: the unions and intersections whose properties
|
|
684
|
+
* `hasUnmatchedProperty` searched before they were resolved. Such a search creates fewer types
|
|
685
|
+
* than one of the resolved properties.
|
|
686
|
+
*/
|
|
687
|
+
unresolvedPropertySearches = undefined;
|
|
688
|
+
// The fields of shared results come last, so the fields before keep their places.
|
|
689
|
+
/** TSC_TS_SHARE: the checker thread's sharing with the other checker threads. */
|
|
690
|
+
threadSharing = undefined;
|
|
691
|
+
/**
|
|
692
|
+
* Where results are shared (shared-results.ts): for each conditional type made as a member of the distribution of a
|
|
693
|
+
* conditional type instantiation, that instantiation and the constituent it is for.
|
|
694
|
+
*/
|
|
695
|
+
distributedConditionals = undefined;
|
|
696
|
+
/** The same members by `distributedKey`. */
|
|
697
|
+
distributedByKey = undefined;
|
|
698
|
+
/** The conditional types conditional type instantiations resolved to, with the instantiation's root and key. */
|
|
699
|
+
conditionalResults = undefined;
|
|
700
|
+
/** The access flags of the key `getIndexedAccessTypeEx` keeps each indexed access type by. */
|
|
701
|
+
indexedAccessKeyFlags = undefined;
|
|
702
|
+
/** Where results are shared between checker threads (shared-results.ts): the file of each diagnostic deferred. */
|
|
703
|
+
deferredDiagnosticFiles = undefined;
|
|
606
704
|
constructor(host) {
|
|
607
705
|
this.host = host;
|
|
608
706
|
const options = host.getCompilerOptions();
|
|
@@ -792,6 +890,15 @@ export class Checker {
|
|
|
792
890
|
mergeAmbientModulesAndAugmentations(this);
|
|
793
891
|
this.modulesMerged = true;
|
|
794
892
|
this.mergeDiagnostics.push(this.diagnostics.takeLog(), this.suggestionDiagnostics.takeLog());
|
|
893
|
+
// Returns unless this thread was given sharing data (`ThreadSharingData` in its worker data): the
|
|
894
|
+
// main thread, and every thread of a run that didn't share.
|
|
895
|
+
startThreadSharing(this);
|
|
896
|
+
if (this.threadSharing !== undefined) {
|
|
897
|
+
this.distributedConditionals = new Map();
|
|
898
|
+
this.distributedByKey = new Map();
|
|
899
|
+
this.conditionalResults = new Map();
|
|
900
|
+
this.indexedAccessKeyFlags = new Map();
|
|
901
|
+
}
|
|
795
902
|
}
|
|
796
903
|
// ---- Public API
|
|
797
904
|
/** Checks `file` if needed and returns its semantic diagnostics, sorted. */
|
|
@@ -803,10 +910,12 @@ export class Checker {
|
|
|
803
910
|
/** Checks `file`, including unused identifiers, and returns its suggestion diagnostics. */
|
|
804
911
|
getSuggestionDiagnostics(file) {
|
|
805
912
|
checkSourceFile(this, file, true);
|
|
913
|
+
checkObjectLiteralDeprecations(this, file);
|
|
806
914
|
return this.suggestionDiagnostics.forFile(file.fileName);
|
|
807
915
|
}
|
|
808
916
|
/** Diagnostics without a file, such as missing global types. */
|
|
809
917
|
getGlobalDiagnostics() {
|
|
918
|
+
produceDeferredDiagnostics(this);
|
|
810
919
|
return this.diagnostics.globals();
|
|
811
920
|
}
|
|
812
921
|
/**
|
|
@@ -887,15 +996,15 @@ export class Checker {
|
|
|
887
996
|
// ---- Diagnostics
|
|
888
997
|
/** Reports `message` at `node`, or as a global diagnostic without a node. */
|
|
889
998
|
error(node, message, ...args) {
|
|
890
|
-
|
|
891
|
-
this.addDiagnostic(diagnostic);
|
|
892
|
-
return diagnostic;
|
|
999
|
+
return this.addDiagnostic(createDiagnosticForNode(node, message, args));
|
|
893
1000
|
}
|
|
1001
|
+
/** Reports `diagnostic`; returns the equal diagnostic already reported, if any, else `diagnostic`. */
|
|
894
1002
|
addDiagnostic(diagnostic) {
|
|
895
1003
|
this.reports++;
|
|
896
1004
|
// Discard diagnostics created while at the maximum number of nested typeToString calls.
|
|
897
1005
|
if (this.serializationLevel < maxSerializationLevel)
|
|
898
|
-
this.diagnostics.add(diagnostic);
|
|
1006
|
+
return this.diagnostics.add(diagnostic);
|
|
1007
|
+
return diagnostic;
|
|
899
1008
|
}
|
|
900
1009
|
addSuggestion(diagnostic) {
|
|
901
1010
|
this.reports++;
|
|
@@ -941,6 +1050,7 @@ export function disposeChecker(c) {
|
|
|
941
1050
|
c.sharedSymbolCopies.clear();
|
|
942
1051
|
c.memberPositionsInLists.clear();
|
|
943
1052
|
c.memberNamesOfLists.clear();
|
|
1053
|
+
c.namedMemberOrdersOfLists.clear();
|
|
944
1054
|
c.propertiesByName.clear();
|
|
945
1055
|
c.symbolAccessibilityCaches = undefined;
|
|
946
1056
|
c.unresolvedSymbols.clear();
|
|
@@ -954,6 +1064,7 @@ export function disposeChecker(c) {
|
|
|
954
1064
|
c.unionTypes.clear();
|
|
955
1065
|
c.unionOfUnionTypes.clear();
|
|
956
1066
|
c.unionOfUnionTypesById.clear();
|
|
1067
|
+
c.unionTypesByInputList.clear();
|
|
957
1068
|
c.intersectionTypes.clear();
|
|
958
1069
|
c.tupleTypes.clear();
|
|
959
1070
|
c.indexedAccessTypes.clear();
|
|
@@ -966,8 +1077,8 @@ export function disposeChecker(c) {
|
|
|
966
1077
|
c.cachedTypesById.clear();
|
|
967
1078
|
c.cachedTypesByPair.clear();
|
|
968
1079
|
c.iterationTypesCache.clear();
|
|
969
|
-
c.
|
|
970
|
-
c.
|
|
1080
|
+
c.deferredDiagnostics = [];
|
|
1081
|
+
c.objectLiteralsForDeprecations.clear();
|
|
971
1082
|
c.errorTypes.clear();
|
|
972
1083
|
c.globalTypeCache.clear();
|
|
973
1084
|
c.globalSymbolCache.clear();
|
|
@@ -978,8 +1089,11 @@ export function disposeChecker(c) {
|
|
|
978
1089
|
c.flowNodePostSuper.clear();
|
|
979
1090
|
c.primitiveTypeAliasSuggestions.clear();
|
|
980
1091
|
c.patternAmbientModuleAugmentations.clear();
|
|
1092
|
+
c.patternAmbientModuleAugmentationTargets.clear();
|
|
1093
|
+
c.moduleImportAttributesTypes.clear();
|
|
981
1094
|
c.sharedFlowTypes.length = 0;
|
|
982
1095
|
c.relationComparers = [];
|
|
1096
|
+
c.inferenceCaches.unstartedInferences.clear();
|
|
983
1097
|
}
|
|
984
1098
|
/** A diagnostic at `node`'s error range, or a global one without a node. */
|
|
985
1099
|
export function createDiagnosticForNode(node, message, args) {
|