tsc-ts 0.0.9 → 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 +2 -2
- 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 +22 -15
- package/dist/api/compiler/ast.js +1026 -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 +178 -124
- 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 +472 -440
- 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 -107
- 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 +212 -75
- 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 +145 -36
- 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 +104 -31
- package/dist/api/compiler/checker.js +181 -33
- 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 +42 -3
- package/dist/api/compiler/compile-program.js +139 -27
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.d.ts +22 -0
- package/dist/api/compiler/diagnostics.js +93 -11
- 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 +21 -1
- package/dist/api/compiler/file-loader.js +201 -48
- 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/parallel-parse.d.ts +3 -2
- package/dist/api/compiler/parallel-parse.js +17 -5
- 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 +5 -1
- package/dist/api/compiler/printer/emit-context.js +20 -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 +49 -2
- package/dist/api/compiler/printer/printer.js +539 -293
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +12 -2
- package/dist/api/compiler/program-checker.js +88 -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 +4 -6
- package/dist/api/compiler/program.js +74 -87
- 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 +347 -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 +23 -14
- package/dist/api/compiler/symbol.js +23 -11
- 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 +58 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +79 -9
- 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 +136 -62
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -82
- 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 +200 -56
- 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 +124 -23
- 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 +203 -39
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +167 -27
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/diagnostics.ts +84 -3
- 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 +197 -38
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +165 -30
- 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 +326 -52
- package/src/compiler/parallel-emit.ts +320 -0
- package/src/compiler/parallel-parse.ts +16 -5
- package/src/compiler/parse-thread.ts +3 -0
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +21 -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 +266 -30
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +57 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +18 -26
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +240 -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 +46 -24
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +64 -4
- 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 +66 -9
- package/src/compiler/tsc-cli.ts +7 -0
- package/src/compiler/tsc-compile.ts +284 -4
- 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
|
@@ -13,7 +13,11 @@ import { CheckerDeclarationEmitResolver, CheckerEmitResolver } from './checker-e
|
|
|
13
13
|
import { getEmitModuleFormatOfFile } from './program-utilities.js';
|
|
14
14
|
import { DeclarationGlobals, SyntacticDeclarationEmitResolver } from './transformers/declarations-syntactic.js';
|
|
15
15
|
import { mark } from './timeline.js';
|
|
16
|
-
import
|
|
16
|
+
import { DecoratorMetadata } from './transformers/decorator-metadata.js';
|
|
17
|
+
import { SyntaxFacts } from './transformers/syntax-facts.js';
|
|
18
|
+
import type { TypeReferenceSerializationKind } from './transformers/type-serialization.js';
|
|
19
|
+
import { EmitContext } from './printer/emit-context.js';
|
|
20
|
+
import { type EmitResolver, SyntacticEmitResolver } from './transformers/emit-resolver.js';
|
|
17
21
|
import { ModuleFormatHost } from './transformers/module.js';
|
|
18
22
|
import { type MergedGlobals, ModuleLookup, ReferenceResolver } from './transformers/reference-resolver.js';
|
|
19
23
|
|
|
@@ -193,6 +197,100 @@ export class EmitIndexes {
|
|
|
193
197
|
}
|
|
194
198
|
}
|
|
195
199
|
|
|
200
|
+
/**
|
|
201
|
+
* The JavaScript emit of a program's files without a checker, for emit threads (parallel-emit.ts).
|
|
202
|
+
* JavaScript emit asks the checker only how decorator metadata serializes a type
|
|
203
|
+
* (`CheckerEmitResolver`): with `kinds`, the answers the main thread's checker gave
|
|
204
|
+
* (`recordMetadataKinds`), else files with decorator metadata are emitted by a `ProgramEmitter`.
|
|
205
|
+
*/
|
|
206
|
+
export class JavaScriptEmitter {
|
|
207
|
+
private readonly host: ProgramEmitHost;
|
|
208
|
+
private readonly recorded: RecordedKindsEmitResolver | undefined;
|
|
209
|
+
|
|
210
|
+
constructor(program: Program, kinds: readonly number[] = []) {
|
|
211
|
+
const options = program.options;
|
|
212
|
+
const indexes = program.emitIndexes;
|
|
213
|
+
const references = new ReferenceResolver(
|
|
214
|
+
options,
|
|
215
|
+
program.getSourceFiles(),
|
|
216
|
+
new ProgramModules(program),
|
|
217
|
+
indexes !== undefined ? indexes.globals : undefined,
|
|
218
|
+
);
|
|
219
|
+
this.recorded = kinds.length > 0 ? new RecordedKindsEmitResolver(options, references, kinds) : undefined;
|
|
220
|
+
this.host = new ProgramEmitHost(program, this.recorded ?? new SyntacticEmitResolver(options, references));
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Emits `file`, or returns undefined if its decorator metadata asked for a kind that wasn't recorded: what
|
|
225
|
+
* was written is then not the file's emit, and it must be emitted with the checker.
|
|
226
|
+
*/
|
|
227
|
+
emit(file: SourceFile, writer: OutputWriter): EmitResult | undefined {
|
|
228
|
+
const host = this.host;
|
|
229
|
+
const recorded = this.recorded;
|
|
230
|
+
if (recorded !== undefined) recorded.missed = false;
|
|
231
|
+
host.writer = writer;
|
|
232
|
+
const result = emitFiles(host, [file], EmitOnly.Js);
|
|
233
|
+
host.writer = undefined;
|
|
234
|
+
return recorded !== undefined && recorded.missed ? undefined : result;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The serialization kinds of decorator metadata that the checker of `checked` gives the type references of
|
|
240
|
+
* `files`, in the order JavaScript emit asks for them: the type name's node id, the location's node id (-1 for
|
|
241
|
+
* none) and the kind, for each. Only the decorator metadata transform runs, as the first transform of emit.
|
|
242
|
+
*/
|
|
243
|
+
export function recordMetadataKinds(checked: CheckedProgram, files: readonly SourceFile[]): number[] {
|
|
244
|
+
const program = checked.program;
|
|
245
|
+
const options = program.options;
|
|
246
|
+
const indexes = program.emitIndexes;
|
|
247
|
+
const references = new ReferenceResolver(
|
|
248
|
+
options,
|
|
249
|
+
program.getSourceFiles(),
|
|
250
|
+
new ProgramModules(program),
|
|
251
|
+
indexes !== undefined ? indexes.globals : undefined,
|
|
252
|
+
);
|
|
253
|
+
const resolver = new RecordingEmitResolver(options, references, checked.checker);
|
|
254
|
+
for (const file of files)
|
|
255
|
+
new DecoratorMetadata(new EmitContext(), options, resolver, new SyntaxFacts()).transformSourceFile(file);
|
|
256
|
+
return resolver.kinds;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/** A `CheckerEmitResolver` that records the serialization kinds it gives (`recordMetadataKinds`). */
|
|
260
|
+
class RecordingEmitResolver extends CheckerEmitResolver {
|
|
261
|
+
readonly kinds: number[] = [];
|
|
262
|
+
|
|
263
|
+
getTypeReferenceSerializationKind(typeName: Node, location: Node | undefined): TypeReferenceSerializationKind {
|
|
264
|
+
const kind = super.getTypeReferenceSerializationKind(typeName, location);
|
|
265
|
+
this.kinds.push(typeName.id, location === undefined ? -1 : location.id, kind);
|
|
266
|
+
return kind;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/** Answers serialization kinds from those recorded on the main thread; `missed` once one wasn't. */
|
|
271
|
+
class RecordedKindsEmitResolver extends SyntacticEmitResolver {
|
|
272
|
+
/** The kind and location of each type name, by the type name's node id. */
|
|
273
|
+
private readonly byName = new Map<number, number>();
|
|
274
|
+
missed = false;
|
|
275
|
+
|
|
276
|
+
constructor(
|
|
277
|
+
options: CompilerOptions,
|
|
278
|
+
referenceResolver: ReferenceResolver,
|
|
279
|
+
private readonly kinds: readonly number[],
|
|
280
|
+
) {
|
|
281
|
+
super(options, referenceResolver);
|
|
282
|
+
for (let i = 0; i < kinds.length; i += 3) if (!this.byName.has(kinds[i]!)) this.byName.set(kinds[i]!, i);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
getTypeReferenceSerializationKind(typeName: Node, location: Node | undefined): TypeReferenceSerializationKind {
|
|
286
|
+
const at = this.byName.get(typeName.id);
|
|
287
|
+
if (at !== undefined && this.kinds[at + 1] === (location === undefined ? -1 : location.id))
|
|
288
|
+
return this.kinds[at + 2]! as TypeReferenceSerializationKind;
|
|
289
|
+
this.missed = true;
|
|
290
|
+
return super.getTypeReferenceSerializationKind(typeName, location);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
196
294
|
/** A checked program and the emit of its files. */
|
|
197
295
|
export class ProgramEmitter {
|
|
198
296
|
private host: ProgramEmitHost | undefined = undefined;
|
|
@@ -277,6 +375,14 @@ export abstract class CompilerProgram {
|
|
|
277
375
|
this.emitter = new ProgramEmitter(checked);
|
|
278
376
|
}
|
|
279
377
|
|
|
378
|
+
/**
|
|
379
|
+
* The time spent in declaration emit while checking, to count as emit time rather than check time, since
|
|
380
|
+
* the last call. Only an incremental program emits while checking, to compute signatures.
|
|
381
|
+
*/
|
|
382
|
+
takeNestedEmitTime(): number {
|
|
383
|
+
return 0;
|
|
384
|
+
}
|
|
385
|
+
|
|
280
386
|
get program(): Program {
|
|
281
387
|
return this.checked.program;
|
|
282
388
|
}
|
|
@@ -302,6 +408,15 @@ export abstract class CompilerProgram {
|
|
|
302
408
|
return this.checked.getGlobalDiagnostics(withCheckerThreads);
|
|
303
409
|
}
|
|
304
410
|
|
|
411
|
+
/**
|
|
412
|
+
* Whether the global diagnostics found by checking are reported after the semantic diagnostics. An
|
|
413
|
+
* incremental program has them in the semantic diagnostics of the files they were found in
|
|
414
|
+
* (`CheckedProgram.globalsInFileDiagnostics`).
|
|
415
|
+
*/
|
|
416
|
+
reportsGlobalDiagnosticsOfChecking(): boolean {
|
|
417
|
+
return !this.checked.globalsInFileDiagnostics;
|
|
418
|
+
}
|
|
419
|
+
|
|
305
420
|
/** Semantic diagnostics of every file. */
|
|
306
421
|
abstract getSemanticDiagnostics(): Diagnostic[];
|
|
307
422
|
|
|
@@ -347,32 +462,37 @@ export class PlainProgram extends CompilerProgram {
|
|
|
347
462
|
|
|
348
463
|
emit(writer: OutputWriter): EmitResult {
|
|
349
464
|
const options = this.options;
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
465
|
+
// A `noEmit` program emits nothing, and its emit is not skipped (tsgo's `HandleNoEmitOptions`): its
|
|
466
|
+
// declaration errors come with its other diagnostics (`getDiagnosticsOfProgram`).
|
|
467
|
+
if (options.noEmit === true) return new EmitResult();
|
|
468
|
+
const skipped = handleNoEmitOnError(this);
|
|
469
|
+
if (skipped !== undefined) return skipped;
|
|
354
470
|
const program = this.program;
|
|
355
471
|
const files = program.getSourceFiles();
|
|
356
472
|
const parallel = this.checked.emittedInParallel;
|
|
357
|
-
// Checker threads emitted the files they checked (parallel-check.ts)
|
|
473
|
+
// Checker threads emitted the files they checked (parallel-check.ts), or emit threads their JavaScript
|
|
474
|
+
// (parallel-emit.ts); the rest is emitted here, in order.
|
|
358
475
|
const result =
|
|
359
476
|
parallel === undefined
|
|
360
477
|
? this.emitter.emit(files, EmitOnly.All, writer)
|
|
361
478
|
: combineEmitResults(
|
|
362
479
|
files.map((file, i) => {
|
|
363
480
|
const emitted = parallel[i];
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
481
|
+
// The declaration thread emitted the declarations of the files it could (parallel-emit.ts).
|
|
482
|
+
const ahead = this.checked.declarationsEmittedAhead;
|
|
483
|
+
// The file's JavaScript is emitted too, here or on an emit thread.
|
|
484
|
+
const declarations = (): EmitResult =>
|
|
485
|
+
ahead?.[i] ?? this.emitter.emit([file], EmitOnly.DtsAfterJs, writer);
|
|
486
|
+
if (emitted === undefined)
|
|
487
|
+
return ahead !== undefined
|
|
488
|
+
? combineEmitResults([this.emitter.emit([file], EmitOnly.Js, writer), declarations()])
|
|
489
|
+
: this.emitter.emit([file], EmitOnly.All, writer);
|
|
490
|
+
const written = writeHeldOutputs(emitted, writer);
|
|
491
|
+
// Emit threads emit JavaScript only.
|
|
492
|
+
if (!this.checked.javaScriptEmittedOnThreads || !getEmitDeclarations(options)) return written;
|
|
493
|
+
return combineEmitResults([written, declarations()]);
|
|
367
494
|
}),
|
|
368
495
|
);
|
|
369
|
-
if (options.noEmit === true) {
|
|
370
|
-
// Emit is skipped only for files that would have been emitted.
|
|
371
|
-
result.emitSkipped = files.some((file) => program.sourceFileMayBeEmitted(file, false));
|
|
372
|
-
// Declaration emit still runs for its errors, as in tsgo, also when other errors were found.
|
|
373
|
-
if (getEmitDeclarations(options) && options.noEmitOnError !== true)
|
|
374
|
-
for (const d of this.getDeclarationDiagnostics()) result.diagnostics.push(d);
|
|
375
|
-
}
|
|
376
496
|
return result;
|
|
377
497
|
}
|
|
378
498
|
}
|
|
@@ -389,10 +509,15 @@ export function handleNoEmitOnError(program: CompilerProgram): EmitResult | unde
|
|
|
389
509
|
}
|
|
390
510
|
|
|
391
511
|
/**
|
|
392
|
-
* Config and syntax errors; without syntax errors, program, global and semantic errors too, and
|
|
393
|
-
* declaration errors under `noEmit` (or `withDeclarationDiagnostics`).
|
|
512
|
+
* Config and syntax errors; without syntax errors, program, global and semantic errors too, and, when
|
|
513
|
+
* there are none of these, declaration errors under `noEmit` (or `withDeclarationDiagnostics`). With
|
|
514
|
+
* `declarationsLater`, the declaration errors are left to the caller (`declarationDiagnosticsDue`).
|
|
394
515
|
*/
|
|
395
|
-
export function getDiagnosticsOfProgram(
|
|
516
|
+
export function getDiagnosticsOfProgram(
|
|
517
|
+
program: CompilerProgram,
|
|
518
|
+
withDeclarationDiagnostics: boolean,
|
|
519
|
+
declarationsLater: boolean = false,
|
|
520
|
+
): Diagnostic[] {
|
|
396
521
|
const result: Diagnostic[] = [...program.getConfigFileParsingDiagnostics()];
|
|
397
522
|
const configCount = result.length;
|
|
398
523
|
for (const d of program.getSyntacticDiagnostics()) result.push(d);
|
|
@@ -407,22 +532,37 @@ export function getDiagnosticsOfProgram(program: CompilerProgram, withDeclaratio
|
|
|
407
532
|
if (result.length === configCount) {
|
|
408
533
|
const checkStart = performance.now();
|
|
409
534
|
const semantic = program.getSemanticDiagnostics();
|
|
410
|
-
|
|
535
|
+
// Declaration emit that computed signatures while checking counts as emit time, as in TypeScript 7.1.
|
|
536
|
+
const nestedEmitTime = program.takeNestedEmitTime();
|
|
537
|
+
program.times.checkTime = Math.max(0, performance.now() - checkStart - nestedEmitTime);
|
|
538
|
+
program.times.emitTime += nestedEmitTime;
|
|
411
539
|
for (const d of semantic) result.push(d);
|
|
412
540
|
// Checking may have found more, such as missing global types.
|
|
413
|
-
for (const d of program.getGlobalDiagnostics()) result.push(d);
|
|
541
|
+
if (program.reportsGlobalDiagnosticsOfChecking()) for (const d of program.getGlobalDiagnostics()) result.push(d);
|
|
414
542
|
mark('semantic diagnostics');
|
|
415
543
|
}
|
|
416
|
-
if (
|
|
417
|
-
(withDeclarationDiagnostics || options.noEmit === true) &&
|
|
418
|
-
getEmitDeclarations(options) &&
|
|
419
|
-
result.length === configCount
|
|
420
|
-
) {
|
|
544
|
+
if (!declarationsLater && declarationDiagnosticsDue(program, result, withDeclarationDiagnostics))
|
|
421
545
|
for (const d of program.getDeclarationDiagnostics()) result.push(d);
|
|
422
|
-
}
|
|
423
546
|
return result;
|
|
424
547
|
}
|
|
425
548
|
|
|
549
|
+
/**
|
|
550
|
+
* Whether `getDiagnosticsOfProgram` adds the declaration errors to `diagnostics`: under `noEmit` (or
|
|
551
|
+
* `withDeclarationDiagnostics`) with declarations, when only config errors were found.
|
|
552
|
+
*/
|
|
553
|
+
export function declarationDiagnosticsDue(
|
|
554
|
+
program: CompilerProgram,
|
|
555
|
+
diagnostics: readonly Diagnostic[],
|
|
556
|
+
withDeclarationDiagnostics: boolean,
|
|
557
|
+
): boolean {
|
|
558
|
+
const options = program.options;
|
|
559
|
+
return (
|
|
560
|
+
(withDeclarationDiagnostics || options.noEmit === true) &&
|
|
561
|
+
getEmitDeclarations(options) &&
|
|
562
|
+
diagnostics.length === program.getConfigFileParsingDiagnostics().length
|
|
563
|
+
);
|
|
564
|
+
}
|
|
565
|
+
|
|
426
566
|
/** Combines emit results in order. */
|
|
427
567
|
export function combineEmitResults(results: readonly EmitResult[]): EmitResult {
|
|
428
568
|
const result = new EmitResult();
|
package/src/compiler/decoder.ts
CHANGED
|
@@ -203,7 +203,7 @@ import { protocolVersion } from './encoder.js';
|
|
|
203
203
|
import { SyntaxKind } from './syntax-kind.js';
|
|
204
204
|
|
|
205
205
|
const nodeSize = 28;
|
|
206
|
-
const headerSize =
|
|
206
|
+
const headerSize = 64;
|
|
207
207
|
const nodeListKind = 0xffffffff;
|
|
208
208
|
|
|
209
209
|
const fieldKind = 0;
|
|
@@ -533,6 +533,13 @@ class Decoder {
|
|
|
533
533
|
throw unexpected(node);
|
|
534
534
|
}
|
|
535
535
|
|
|
536
|
+
typeLiteral(bit: number): TypeLiteralNode | undefined {
|
|
537
|
+
const node = this.node(bit);
|
|
538
|
+
if (node === undefined) return undefined;
|
|
539
|
+
if (node instanceof TypeLiteralNode) return node as TypeLiteralNode;
|
|
540
|
+
throw unexpected(node);
|
|
541
|
+
}
|
|
542
|
+
|
|
536
543
|
importAttributes(bit: number): ImportAttributes | undefined {
|
|
537
544
|
const node = this.node(bit);
|
|
538
545
|
if (node === undefined) return undefined;
|
|
@@ -596,7 +603,7 @@ class Decoder {
|
|
|
596
603
|
createWithChildren(kind: SyntaxKind, common: number): Node {
|
|
597
604
|
switch (kind) {
|
|
598
605
|
case SyntaxKind.QualifiedName:
|
|
599
|
-
return new QualifiedName(this.required(0), this.
|
|
606
|
+
return new QualifiedName(this.required(0), this.required(1));
|
|
600
607
|
case SyntaxKind.ComputedPropertyName:
|
|
601
608
|
return new ComputedPropertyName(this.required(0));
|
|
602
609
|
case SyntaxKind.Decorator:
|
|
@@ -1110,7 +1117,8 @@ class Decoder {
|
|
|
1110
1117
|
this.modifiers(0),
|
|
1111
1118
|
(common & 1) !== 0 ? SyntaxKind.NamespaceKeyword : SyntaxKind.ModuleKeyword,
|
|
1112
1119
|
this.required(1),
|
|
1113
|
-
this.
|
|
1120
|
+
this.typeLiteral(2),
|
|
1121
|
+
this.node(3),
|
|
1114
1122
|
);
|
|
1115
1123
|
case SyntaxKind.ImportEqualsDeclaration:
|
|
1116
1124
|
return new ImportEqualsDeclaration(
|
|
@@ -1163,7 +1171,7 @@ class Decoder {
|
|
|
1163
1171
|
this.list(3),
|
|
1164
1172
|
);
|
|
1165
1173
|
}
|
|
1166
|
-
if (kind <= SyntaxKind.
|
|
1174
|
+
if (kind <= SyntaxKind.LastToken) return new Token(kind);
|
|
1167
1175
|
throw invalid(`unhandled node kind ${kind} with ${this.children.length} children`);
|
|
1168
1176
|
}
|
|
1169
1177
|
}
|
|
@@ -1201,6 +1209,7 @@ function typeOperator(index: number): SyntaxKind {
|
|
|
1201
1209
|
function importPhase(index: number): SyntaxKind | undefined {
|
|
1202
1210
|
if (index === 1) return SyntaxKind.TypeKeyword;
|
|
1203
1211
|
if (index === 2) return SyntaxKind.DeferKeyword;
|
|
1212
|
+
if (index === 3) return SyntaxKind.SourceKeyword;
|
|
1204
1213
|
return undefined;
|
|
1205
1214
|
}
|
|
1206
1215
|
|