tsc-ts 0.0.10 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/tsc-ts.js +70 -1
- package/dist/api/compiler/ast-utilities.d.ts +19 -1
- package/dist/api/compiler/ast-utilities.js +180 -95
- package/dist/api/compiler/ast.d.ts +20 -15
- package/dist/api/compiler/ast.js +1023 -995
- package/dist/api/compiler/astnav.js +15 -15
- package/dist/api/compiler/binder-utilities.js +186 -186
- package/dist/api/compiler/binder.js +290 -263
- package/dist/api/compiler/character-codes.js +2 -2
- package/dist/api/compiler/checker-calls.js +173 -123
- package/dist/api/compiler/checker-classes.d.ts +14 -3
- package/dist/api/compiler/checker-classes.js +134 -90
- package/dist/api/compiler/checker-contextual.js +64 -61
- package/dist/api/compiler/checker-declaration-order.js +79 -79
- package/dist/api/compiler/checker-declarations.d.ts +1 -0
- package/dist/api/compiler/checker-declarations.js +160 -136
- package/dist/api/compiler/checker-declared-types.js +67 -65
- package/dist/api/compiler/checker-decorators.js +77 -77
- package/dist/api/compiler/checker-deprecation.d.ts +8 -3
- package/dist/api/compiler/checker-deprecation.js +76 -55
- package/dist/api/compiler/checker-destructuring.js +47 -45
- package/dist/api/compiler/checker-elaboration.js +24 -24
- package/dist/api/compiler/checker-emit-helpers.js +4 -4
- package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
- package/dist/api/compiler/checker-emit-resolver.js +25 -13
- package/dist/api/compiler/checker-evaluator.js +9 -9
- package/dist/api/compiler/checker-expressions.js +244 -211
- package/dist/api/compiler/checker-functions.js +113 -107
- package/dist/api/compiler/checker-generated-code.d.ts +0 -11
- package/dist/api/compiler/checker-generated-code.js +28 -52
- package/dist/api/compiler/checker-grammar.d.ts +1 -0
- package/dist/api/compiler/checker-grammar.js +469 -438
- package/dist/api/compiler/checker-heritage.js +91 -93
- package/dist/api/compiler/checker-inference.d.ts +77 -5
- package/dist/api/compiler/checker-inference.js +487 -113
- package/dist/api/compiler/checker-iteration.d.ts +0 -10
- package/dist/api/compiler/checker-iteration.js +35 -52
- package/dist/api/compiler/checker-javascript.js +14 -14
- package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
- package/dist/api/compiler/checker-jsdoc.js +67 -58
- package/dist/api/compiler/checker-jsx.js +105 -88
- package/dist/api/compiler/checker-members.d.ts +9 -2
- package/dist/api/compiler/checker-members.js +210 -74
- package/dist/api/compiler/checker-modules.d.ts +15 -6
- package/dist/api/compiler/checker-modules.js +469 -309
- package/dist/api/compiler/checker-narrowing.js +273 -189
- package/dist/api/compiler/checker-object-literals.js +25 -22
- package/dist/api/compiler/checker-operators.js +126 -118
- package/dist/api/compiler/checker-overloads.js +27 -27
- package/dist/api/compiler/checker-property-access.js +59 -55
- package/dist/api/compiler/checker-services.d.ts +1 -0
- package/dist/api/compiler/checker-services.js +222 -210
- package/dist/api/compiler/checker-signatures.js +65 -49
- package/dist/api/compiler/checker-source-file.d.ts +5 -0
- package/dist/api/compiler/checker-source-file.js +154 -130
- package/dist/api/compiler/checker-statements.js +33 -32
- package/dist/api/compiler/checker-super.js +50 -50
- package/dist/api/compiler/checker-symbol-types.js +109 -93
- package/dist/api/compiler/checker-symbols.d.ts +13 -1
- package/dist/api/compiler/checker-symbols.js +264 -149
- package/dist/api/compiler/checker-type-factory.d.ts +5 -0
- package/dist/api/compiler/checker-type-factory.js +137 -34
- package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
- package/dist/api/compiler/checker-type-nodes.js +179 -141
- package/dist/api/compiler/checker-type-operators.d.ts +2 -0
- package/dist/api/compiler/checker-type-operators.js +110 -63
- package/dist/api/compiler/checker-types.d.ts +80 -3
- package/dist/api/compiler/checker-types.js +121 -2
- package/dist/api/compiler/checker-unused.js +114 -118
- package/dist/api/compiler/checker-utilities.js +11 -11
- package/dist/api/compiler/checker.d.ts +93 -31
- package/dist/api/compiler/checker.js +143 -35
- package/dist/api/compiler/command-line.d.ts +1 -3
- package/dist/api/compiler/command-line.js +47 -44
- package/dist/api/compiler/compile-program.d.ts +19 -4
- package/dist/api/compiler/compile-program.js +45 -26
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.js +7 -7
- package/dist/api/compiler/emitter.d.ts +7 -1
- package/dist/api/compiler/emitter.js +53 -11
- package/dist/api/compiler/file-include.d.ts +2 -1
- package/dist/api/compiler/file-include.js +11 -7
- package/dist/api/compiler/file-loader.d.ts +10 -0
- package/dist/api/compiler/file-loader.js +138 -41
- package/dist/api/compiler/instantiation.d.ts +7 -0
- package/dist/api/compiler/instantiation.js +101 -49
- package/dist/api/compiler/jsdoc.js +23 -23
- package/dist/api/compiler/link-tables.d.ts +48 -18
- package/dist/api/compiler/link-tables.js +80 -37
- package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
- package/dist/api/compiler/locales/cs-CZ.js +1 -1
- package/dist/api/compiler/locales/de-DE.d.ts +1 -1
- package/dist/api/compiler/locales/de-DE.js +1 -1
- package/dist/api/compiler/locales/es-ES.d.ts +1 -1
- package/dist/api/compiler/locales/es-ES.js +1 -1
- package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
- package/dist/api/compiler/locales/fr-FR.js +1 -1
- package/dist/api/compiler/locales/it-IT.d.ts +1 -1
- package/dist/api/compiler/locales/it-IT.js +1 -1
- package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
- package/dist/api/compiler/locales/ja-JP.js +1 -1
- package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
- package/dist/api/compiler/locales/ko-KR.js +1 -1
- package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
- package/dist/api/compiler/locales/pl-PL.js +1 -1
- package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
- package/dist/api/compiler/locales/pt-BR.js +1 -1
- package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
- package/dist/api/compiler/locales/ru-RU.js +1 -1
- package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
- package/dist/api/compiler/locales/tr-TR.js +1 -1
- package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
- package/dist/api/compiler/locales/zh-CN.js +1 -1
- package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
- package/dist/api/compiler/locales/zh-TW.js +1 -1
- package/dist/api/compiler/module-resolution-types.js +6 -6
- package/dist/api/compiler/module-resolution.d.ts +10 -1
- package/dist/api/compiler/module-resolution.js +115 -84
- package/dist/api/compiler/module-specifiers.d.ts +15 -0
- package/dist/api/compiler/module-specifiers.js +24 -18
- package/dist/api/compiler/name-resolver.js +74 -65
- package/dist/api/compiler/node-builder-names.d.ts +11 -3
- package/dist/api/compiler/node-builder-names.js +210 -90
- package/dist/api/compiler/node-builder-pseudo.js +29 -31
- package/dist/api/compiler/node-builder-reuse.js +23 -22
- package/dist/api/compiler/node-builder.d.ts +18 -1
- package/dist/api/compiler/node-builder.js +191 -102
- package/dist/api/compiler/option-declarations.d.ts +2 -6
- package/dist/api/compiler/option-declarations.js +315 -375
- package/dist/api/compiler/options.d.ts +15 -33
- package/dist/api/compiler/options.js +21 -54
- package/dist/api/compiler/output-paths.d.ts +4 -1
- package/dist/api/compiler/output-paths.js +6 -11
- package/dist/api/compiler/package-json.d.ts +3 -3
- package/dist/api/compiler/package-json.js +11 -10
- package/dist/api/compiler/parser.d.ts +40 -19
- package/dist/api/compiler/parser.js +308 -216
- package/dist/api/compiler/path.d.ts +9 -0
- package/dist/api/compiler/path.js +20 -3
- package/dist/api/compiler/printer/emit-context.d.ts +3 -1
- package/dist/api/compiler/printer/emit-context.js +16 -1
- package/dist/api/compiler/printer/factory-base.d.ts +2 -2
- package/dist/api/compiler/printer/factory-base.js +7 -3
- package/dist/api/compiler/printer/factory.js +3 -1
- package/dist/api/compiler/printer/helpers.js +10 -1
- package/dist/api/compiler/printer/name-generator.d.ts +1 -1
- package/dist/api/compiler/printer/name-generator.js +35 -16
- package/dist/api/compiler/printer/printer.d.ts +1 -0
- package/dist/api/compiler/printer/printer.js +303 -281
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +8 -2
- package/dist/api/compiler/program-checker.js +84 -34
- package/dist/api/compiler/program-utilities.d.ts +3 -1
- package/dist/api/compiler/program-utilities.js +28 -15
- package/dist/api/compiler/program.d.ts +2 -0
- package/dist/api/compiler/program.js +69 -57
- package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
- package/dist/api/compiler/pseudo-bigint.js +18 -0
- package/dist/api/compiler/regexp-checker.d.ts +1 -1
- package/dist/api/compiler/regexp-checker.js +93 -76
- package/dist/api/compiler/relations.d.ts +27 -4
- package/dist/api/compiler/relations.js +337 -180
- package/dist/api/compiler/reparser.js +60 -56
- package/dist/api/compiler/scanner.d.ts +19 -2
- package/dist/api/compiler/scanner.js +123 -108
- package/dist/api/compiler/shared-results.d.ts +463 -0
- package/dist/api/compiler/shared-results.js +2128 -0
- package/dist/api/compiler/sourcemap.js +2 -2
- package/dist/api/compiler/symbol-accessibility.js +87 -74
- package/dist/api/compiler/symbol.d.ts +22 -13
- package/dist/api/compiler/symbol.js +15 -1
- package/dist/api/compiler/syntax-kind.d.ts +198 -197
- package/dist/api/compiler/transformers/alias-references.js +247 -139
- package/dist/api/compiler/transformers/async-utilities.js +25 -25
- package/dist/api/compiler/transformers/async.d.ts +0 -1
- package/dist/api/compiler/transformers/async.js +64 -77
- package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
- package/dist/api/compiler/transformers/class-fields.js +81 -78
- package/dist/api/compiler/transformers/commonjs-module.js +18 -15
- package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
- package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
- package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
- package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
- package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
- package/dist/api/compiler/transformers/declarations.d.ts +4 -1
- package/dist/api/compiler/transformers/declarations.js +305 -238
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
- package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
- package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
- package/dist/api/compiler/transformers/destructuring.js +19 -18
- package/dist/api/compiler/transformers/emit-resolver.js +1 -1
- package/dist/api/compiler/transformers/es-decorators.js +55 -55
- package/dist/api/compiler/transformers/external-module-info.js +3 -3
- package/dist/api/compiler/transformers/for-await.js +25 -25
- package/dist/api/compiler/transformers/import-elision.js +14 -14
- package/dist/api/compiler/transformers/jsx.js +12 -12
- package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
- package/dist/api/compiler/transformers/module.js +8 -8
- package/dist/api/compiler/transformers/named-evaluation.js +4 -4
- package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
- package/dist/api/compiler/transformers/optional-chain.js +10 -10
- package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
- package/dist/api/compiler/transformers/reference-resolver.js +131 -69
- package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
- package/dist/api/compiler/transformers/subtree-facts.js +47 -47
- package/dist/api/compiler/transformers/syntax-facts.js +56 -58
- package/dist/api/compiler/transformers/type-eraser.js +73 -66
- package/dist/api/compiler/transformers/type-serialization.js +24 -24
- package/dist/api/compiler/transformers/using.js +12 -12
- package/dist/api/compiler/transformers/utilities.js +77 -77
- package/dist/api/compiler/transformers/visitor-base.js +172 -172
- package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
- package/dist/api/compiler/tsconfig.d.ts +10 -2
- package/dist/api/compiler/tsconfig.js +136 -48
- package/dist/api/compiler/type-printer.js +40 -3
- package/dist/api/compiler/types.d.ts +2 -1
- package/dist/api/library/ast.generated.d.ts +42 -39
- package/dist/api/library/ast.generated.js +1 -1
- package/dist/api/library/compiler-options.generated.d.ts +111 -100
- package/dist/api/library/compiler-options.generated.js +1 -1
- package/dist/api/library/disk.js +12 -1
- package/dist/api/library/enums.generated.d.ts +206 -206
- package/dist/api/library/enums.generated.js +206 -206
- package/dist/api/library/nodes.js +26 -26
- package/package.json +9 -9
- package/src/compiler/ast-utilities.ts +99 -7
- package/src/compiler/ast.ts +55 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +76 -8
- package/src/compiler/checker-classes.ts +78 -24
- package/src/compiler/checker-contextual.ts +6 -1
- package/src/compiler/checker-declarations.ts +31 -4
- package/src/compiler/checker-declared-types.ts +8 -5
- package/src/compiler/checker-decorators.ts +1 -1
- package/src/compiler/checker-deprecation.ts +29 -8
- package/src/compiler/checker-destructuring.ts +10 -3
- package/src/compiler/checker-emit-helpers.ts +1 -0
- package/src/compiler/checker-emit-resolver.ts +16 -6
- package/src/compiler/checker-expressions.ts +79 -46
- package/src/compiler/checker-functions.ts +21 -6
- package/src/compiler/checker-generated-code.ts +2 -22
- package/src/compiler/checker-grammar.ts +133 -60
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -87
- package/src/compiler/checker-iteration.ts +18 -31
- package/src/compiler/checker-javascript.ts +1 -1
- package/src/compiler/checker-jsdoc.ts +50 -27
- package/src/compiler/checker-jsx.ts +26 -4
- package/src/compiler/checker-members.ts +197 -55
- package/src/compiler/checker-modules.ts +332 -65
- package/src/compiler/checker-narrowing.ts +98 -19
- package/src/compiler/checker-object-literals.ts +3 -0
- package/src/compiler/checker-operators.ts +11 -4
- package/src/compiler/checker-property-access.ts +7 -2
- package/src/compiler/checker-services.ts +39 -12
- package/src/compiler/checker-signatures.ts +15 -1
- package/src/compiler/checker-source-file.ts +39 -13
- package/src/compiler/checker-statements.ts +3 -2
- package/src/compiler/checker-symbol-types.ts +29 -6
- package/src/compiler/checker-symbols.ts +158 -15
- package/src/compiler/checker-type-factory.ts +120 -21
- package/src/compiler/checker-type-nodes.ts +46 -3
- package/src/compiler/checker-type-operators.ts +83 -26
- package/src/compiler/checker-types.ts +147 -4
- package/src/compiler/checker-unused.ts +9 -14
- package/src/compiler/checker.ts +168 -41
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +51 -25
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/emitter.ts +57 -8
- package/src/compiler/encoder.ts +23 -8
- package/src/compiler/file-include.ts +9 -3
- package/src/compiler/file-loader.ts +139 -32
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +86 -18
- package/src/compiler/init.ts +2 -7
- package/src/compiler/instantiation.ts +77 -22
- package/src/compiler/jsdoc.ts +3 -1
- package/src/compiler/link-tables.ts +82 -37
- package/src/compiler/locales/cs-CZ.ts +1 -1
- package/src/compiler/locales/de-DE.ts +1 -1
- package/src/compiler/locales/es-ES.ts +1 -1
- package/src/compiler/locales/fr-FR.ts +1 -1
- package/src/compiler/locales/it-IT.ts +1 -1
- package/src/compiler/locales/ja-JP.ts +1 -1
- package/src/compiler/locales/ko-KR.ts +1 -1
- package/src/compiler/locales/pl-PL.ts +1 -1
- package/src/compiler/locales/pt-BR.ts +1 -1
- package/src/compiler/locales/ru-RU.ts +1 -1
- package/src/compiler/locales/tr-TR.ts +1 -1
- package/src/compiler/locales/zh-CN.ts +1 -1
- package/src/compiler/locales/zh-TW.ts +1 -1
- package/src/compiler/module-resolution.ts +44 -8
- package/src/compiler/module-specifiers.ts +62 -20
- package/src/compiler/name-resolver.ts +9 -1
- package/src/compiler/node-builder-names.ts +236 -54
- package/src/compiler/node-builder-pseudo.ts +4 -7
- package/src/compiler/node-builder-reuse.ts +5 -4
- package/src/compiler/node-builder.ts +130 -31
- package/src/compiler/option-declarations.ts +33 -103
- package/src/compiler/options.ts +23 -62
- package/src/compiler/output-paths.ts +5 -18
- package/src/compiler/package-entrypoints.ts +345 -0
- package/src/compiler/package-json.ts +4 -4
- package/src/compiler/parallel-check.ts +197 -8
- package/src/compiler/parallel-emit.ts +1 -1
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +16 -0
- package/src/compiler/printer/factory-base.ts +10 -3
- package/src/compiler/printer/factory.ts +4 -1
- package/src/compiler/printer/helpers.ts +10 -1
- package/src/compiler/printer/name-generator.ts +24 -2
- package/src/compiler/printer/printer.ts +35 -14
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +53 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +13 -1
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +233 -77
- package/src/compiler/reparser.ts +7 -2
- package/src/compiler/scanner.ts +109 -79
- package/src/compiler/shared-results.ts +2414 -0
- package/src/compiler/show-config.ts +18 -1
- package/src/compiler/sourcemap.ts +2 -2
- package/src/compiler/symbol-accessibility.ts +26 -3
- package/src/compiler/symbol.ts +31 -14
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +19 -2
- package/src/compiler/transformers/alias-references.ts +123 -4
- package/src/compiler/transformers/async.ts +2 -17
- package/src/compiler/transformers/class-fields.ts +13 -12
- package/src/compiler/transformers/commonjs-module.ts +11 -7
- package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
- package/src/compiler/transformers/declarations-pseudo.ts +2 -4
- package/src/compiler/transformers/declarations-resolver.ts +0 -3
- package/src/compiler/transformers/declarations-syntactic.ts +1 -21
- package/src/compiler/transformers/declarations.ts +134 -48
- package/src/compiler/transformers/decorator-metadata.ts +9 -1
- package/src/compiler/transformers/destructuring.ts +4 -3
- package/src/compiler/transformers/external-module-info.ts +1 -1
- package/src/compiler/transformers/jsx.ts +2 -1
- package/src/compiler/transformers/reference-resolver.ts +83 -19
- package/src/compiler/transformers/runtime-syntax.ts +6 -1
- package/src/compiler/transformers/syntax-facts.ts +2 -7
- package/src/compiler/transformers/type-eraser.ts +10 -1
- package/src/compiler/transformers/type-serialization.ts +3 -2
- package/src/compiler/transformers/visitor-base.ts +2 -1
- package/src/compiler/transformers/visitor-hooks.ts +9 -4
- package/src/compiler/tsc-build.ts +3 -0
- package/src/compiler/tsc-cli.ts +2 -0
- package/src/compiler/tsc-compile.ts +7 -2
- package/src/compiler/tsc-watch.ts +74 -45
- package/src/compiler/tsconfig.ts +176 -19
- package/src/compiler/type-printer.ts +36 -2
- package/src/compiler/types.ts +2 -1
- package/src/library/ast.generated.ts +57 -41
- package/src/library/compiler-options.generated.ts +117 -103
- package/src/library/disk.ts +10 -1
- package/src/library/enums.generated.ts +196 -196
|
@@ -56,6 +56,7 @@ import {
|
|
|
56
56
|
import type { EmitResolver } from './emit-resolver.js';
|
|
57
57
|
import { ConstantKind, type Evaluation } from './reference-resolver.js';
|
|
58
58
|
import { type TypeScriptFacts } from './subtree-facts.js';
|
|
59
|
+
import { nodeIsDecorated } from './decorator-utilities.js';
|
|
59
60
|
import { Transformer } from './transformer.js';
|
|
60
61
|
import {
|
|
61
62
|
getInnermostModuleDeclaration,
|
|
@@ -65,6 +66,7 @@ import {
|
|
|
65
66
|
isInstantiatedModule,
|
|
66
67
|
isParameterPropertyDeclaration,
|
|
67
68
|
isSameNode,
|
|
69
|
+
modifierFlagsOf,
|
|
68
70
|
} from './utilities.js';
|
|
69
71
|
|
|
70
72
|
const typeScriptModifiers =
|
|
@@ -577,7 +579,10 @@ export class RuntimeSyntax extends Transformer {
|
|
|
577
579
|
let name = visitedName instanceof Identifier ? (visitedName as Identifier) : undefined;
|
|
578
580
|
if (
|
|
579
581
|
name === undefined &&
|
|
580
|
-
(exported ||
|
|
582
|
+
(exported ||
|
|
583
|
+
childIsDecorated(this.options.experimentalDecorators === true, node.members) ||
|
|
584
|
+
((modifierFlagsOf(node) & exportDefault) !== exportDefault &&
|
|
585
|
+
nodeIsDecorated(this.options.experimentalDecorators === true, node, undefined, undefined)))
|
|
581
586
|
)
|
|
582
587
|
name = this.factory.createGeneratedNameForNode(node, 0, '', '');
|
|
583
588
|
const updated: Node = this.factory.updateClassDeclaration(
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
BinaryExpression,
|
|
5
5
|
BindingElement,
|
|
6
6
|
BindingPattern,
|
|
7
|
-
CallExpression,
|
|
8
7
|
CatchClause,
|
|
9
8
|
ForInOrOfStatement,
|
|
10
9
|
FunctionDeclaration,
|
|
@@ -29,6 +28,7 @@ import {
|
|
|
29
28
|
import { ClusteredIntLinkTable } from '../link-tables.js';
|
|
30
29
|
import { isTypeNodeKind } from '../printer/utilities.js';
|
|
31
30
|
import { SyntaxKind } from '../syntax-kind.js';
|
|
31
|
+
import { isImportCall } from '../ast-utilities.js';
|
|
32
32
|
import { TokenFlags } from '../types.js';
|
|
33
33
|
import { getElementsOfBindingOrAssignmentPattern, getTargetOfBindingOrAssignmentElement } from './destructuring.js';
|
|
34
34
|
|
|
@@ -267,12 +267,7 @@ export class SyntaxFacts extends NodeVisitor {
|
|
|
267
267
|
: SubtreeFacts.None)
|
|
268
268
|
);
|
|
269
269
|
case SyntaxKind.CallExpression:
|
|
270
|
-
return (
|
|
271
|
-
this.children(node) |
|
|
272
|
-
(node instanceof CallExpression && node.expression.kind === SyntaxKind.ImportKeyword
|
|
273
|
-
? SubtreeFacts.ContainsDynamicImport
|
|
274
|
-
: SubtreeFacts.None)
|
|
275
|
-
);
|
|
270
|
+
return this.children(node) | (isImportCall(node) ? SubtreeFacts.ContainsDynamicImport : SubtreeFacts.None);
|
|
276
271
|
case SyntaxKind.MetaProperty:
|
|
277
272
|
return node instanceof MetaProperty ? this.propagate(node.name) & ~SubtreeFacts.ContainsIdentifier : 0;
|
|
278
273
|
case SyntaxKind.SpreadElement:
|
|
@@ -398,7 +398,16 @@ export class TypeEraser extends Transformer {
|
|
|
398
398
|
case SyntaxKind.ImportClause:
|
|
399
399
|
if (node instanceof ImportClause) {
|
|
400
400
|
if (node.phaseModifier === SyntaxKind.TypeKeyword) return undefined;
|
|
401
|
-
|
|
401
|
+
let bindings = this.visitNode(node.namedBindings);
|
|
402
|
+
// With a default import, `{}` left by erasing type-only specifiers goes; a `{}` written in the source stays.
|
|
403
|
+
if (
|
|
404
|
+
node.name !== undefined &&
|
|
405
|
+
bindings instanceof NamedImports &&
|
|
406
|
+
bindings.elements.nodes.length === 0 &&
|
|
407
|
+
node.namedBindings instanceof NamedImports &&
|
|
408
|
+
node.namedBindings.elements.nodes.length !== 0
|
|
409
|
+
)
|
|
410
|
+
bindings = undefined;
|
|
402
411
|
if (node.name === undefined && bindings === undefined) return undefined;
|
|
403
412
|
return factory.updateImportClause(node, node.phaseModifier, node.name, bindings);
|
|
404
413
|
}
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
UnionTypeNode,
|
|
23
23
|
VariableDeclaration,
|
|
24
24
|
getIsTypeOnly,
|
|
25
|
+
getText,
|
|
25
26
|
} from '../ast.js';
|
|
26
27
|
import { getStrictOptionValue } from '../options.js';
|
|
27
28
|
import { SyntaxKind } from '../syntax-kind.js';
|
|
@@ -119,10 +120,10 @@ function resolveEntityName(
|
|
|
119
120
|
const namespace = resolveEntityName(resolver, name.left, SymbolFlags.Namespace, false, location);
|
|
120
121
|
if (namespace === undefined) return undefined;
|
|
121
122
|
if (namespace === unknownSymbol) return namespace;
|
|
122
|
-
let member = resolver.getExportOfSymbol(namespace, name.right
|
|
123
|
+
let member = resolver.getExportOfSymbol(namespace, getText(name.right));
|
|
123
124
|
if (member === undefined && (namespace.flags & SymbolFlags.Alias) !== 0) {
|
|
124
125
|
const target = resolver.resolveAlias(namespace);
|
|
125
|
-
if (target !== undefined) member = resolver.getExportOfSymbol(target, name.right
|
|
126
|
+
if (target !== undefined) member = resolver.getExportOfSymbol(target, getText(name.right));
|
|
126
127
|
}
|
|
127
128
|
if (member === undefined || (member.flags & (meaning | SymbolFlags.Alias)) === 0) return undefined;
|
|
128
129
|
symbol = member;
|
|
@@ -1186,6 +1186,7 @@ export abstract class VisitorBase extends VisitorHooks {
|
|
|
1186
1186
|
this.visitModifiers(node.modifiers),
|
|
1187
1187
|
node.keyword,
|
|
1188
1188
|
required(this.visitNode(node.name), node.name),
|
|
1189
|
+
this.visitNode(node.attributes) as TypeLiteralNode | undefined,
|
|
1189
1190
|
this.visitNode(node.body),
|
|
1190
1191
|
);
|
|
1191
1192
|
break;
|
|
@@ -1340,7 +1341,7 @@ export abstract class VisitorBase extends VisitorHooks {
|
|
|
1340
1341
|
return this.factory.updateQualifiedName(
|
|
1341
1342
|
node,
|
|
1342
1343
|
required(this.visitNode(node.left), node.left),
|
|
1343
|
-
|
|
1344
|
+
required(this.visitNode(node.right), node.right),
|
|
1344
1345
|
);
|
|
1345
1346
|
break;
|
|
1346
1347
|
case SyntaxKind.RestType:
|
|
@@ -144,11 +144,16 @@ export abstract class VisitorHooks {
|
|
|
144
144
|
if (declarations.length === 0) return updated;
|
|
145
145
|
const factory = this.factory;
|
|
146
146
|
if (updated === undefined) return factory.createBlock(declarations, true);
|
|
147
|
-
if (!(updated instanceof Block))
|
|
148
|
-
return
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
if (!(updated instanceof Block)) {
|
|
148
|
+
// The return statement takes the expression's range, so its comments are emitted once, before `return`.
|
|
149
|
+
this.context.addEmitFlags(updated, EmitFlags.NoComments);
|
|
150
|
+
const block = this.context.convertToFunctionBlock(updated, false);
|
|
151
|
+
return factory.updateBlock(
|
|
152
|
+
block,
|
|
153
|
+
this.context.mergeEnvironmentList(block.statements, declarations),
|
|
154
|
+
block.multiLine,
|
|
151
155
|
);
|
|
156
|
+
}
|
|
152
157
|
return factory.updateBlock(
|
|
153
158
|
updated,
|
|
154
159
|
this.context.mergeEnvironmentList(updated.statements, declarations),
|
|
@@ -777,6 +777,9 @@ export class Orchestrator {
|
|
|
777
777
|
times.parseTime = performance.now() - parseStart;
|
|
778
778
|
const bindStart = performance.now();
|
|
779
779
|
const checked = new CheckedProgram(program);
|
|
780
|
+
// The project's incremental program, made after checking, keeps the globals found checking a file
|
|
781
|
+
// with the file.
|
|
782
|
+
checked.globalsInFileDiagnostics = true;
|
|
780
783
|
times.bindTime = performance.now() - bindStart;
|
|
781
784
|
const options = program.options;
|
|
782
785
|
const count = mayUseThreads ? checkerThreads(options.checkers, options.singleThreaded, program) : 1;
|
package/src/compiler/tsc-cli.ts
CHANGED
|
@@ -64,6 +64,8 @@ export abstract class System extends CommandLineHost {
|
|
|
64
64
|
|
|
65
65
|
/** Returns `''` for unset variables. */
|
|
66
66
|
abstract getEnvironmentVariable(name: string): string;
|
|
67
|
+
/** Whether the variable is set, perhaps to `''`. */
|
|
68
|
+
abstract hasEnvironmentVariable(name: string): boolean;
|
|
67
69
|
abstract write(text: string): void;
|
|
68
70
|
abstract fileExists(path: string): boolean;
|
|
69
71
|
abstract directoryExists(path: string): boolean;
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
CheckedProgram,
|
|
9
9
|
CompilerProgram,
|
|
10
10
|
CompileTimes,
|
|
11
|
+
declarationDiagnosticsDue,
|
|
11
12
|
getDiagnosticsOfProgram,
|
|
12
13
|
OutputWriter,
|
|
13
14
|
PlainProgram,
|
|
@@ -320,6 +321,8 @@ export function compileWithDeclarationThread(
|
|
|
320
321
|
let declaring = true;
|
|
321
322
|
const report = (): void => {
|
|
322
323
|
if (diagnostics === undefined || declaring) return;
|
|
324
|
+
if (declarationDiagnosticsDue(compilerProgram, diagnostics, false))
|
|
325
|
+
for (const d of compilerProgram.getDeclarationDiagnostics()) diagnostics.push(d);
|
|
323
326
|
const result = reportEmitAndErrors(
|
|
324
327
|
sys,
|
|
325
328
|
compilerProgram,
|
|
@@ -338,7 +341,7 @@ export function compileWithDeclarationThread(
|
|
|
338
341
|
declaring = false;
|
|
339
342
|
report();
|
|
340
343
|
});
|
|
341
|
-
// `
|
|
344
|
+
// `report` adds the declaration errors once the thread has found them, when they are due.
|
|
342
345
|
diagnostics = getDiagnosticsOfProgram(compilerProgram, false, true);
|
|
343
346
|
mark('diagnostics collected');
|
|
344
347
|
report();
|
|
@@ -364,6 +367,8 @@ export function compileInParallel(
|
|
|
364
367
|
formattedReports.format = work.reporter.plainFormat();
|
|
365
368
|
mark(`${threads} checkers`);
|
|
366
369
|
const checked = new CheckedProgram(program);
|
|
370
|
+
// The incremental program made after checking keeps the globals found checking a file with the file.
|
|
371
|
+
if (work.incremental) checked.globalsInFileDiagnostics = true;
|
|
367
372
|
times.bindTime = performance.now() - bindStart;
|
|
368
373
|
mark('checker created');
|
|
369
374
|
if (work.incremental && !checksIncrementalOnThreads(sys, program.commandLine.buildInfoFileName())) {
|
|
@@ -565,7 +570,7 @@ export function reportEmitAndErrors(
|
|
|
565
570
|
if (program.options.listFilesOnly !== true) {
|
|
566
571
|
const emitStart = performance.now();
|
|
567
572
|
emitResult = program.emit(writer);
|
|
568
|
-
program.times.emitTime
|
|
573
|
+
program.times.emitTime += performance.now() - emitStart;
|
|
569
574
|
}
|
|
570
575
|
for (const diagnostic of emitResult.diagnostics) diagnostics.push(diagnostic);
|
|
571
576
|
const all = sortAndDeduplicateDiagnostics(diagnostics);
|
|
@@ -474,14 +474,6 @@ class Watcher {
|
|
|
474
474
|
|
|
475
475
|
start(): void {
|
|
476
476
|
const sys = this.sys;
|
|
477
|
-
if (this.config.options.incremental === true || this.config.options.composite === true) {
|
|
478
|
-
this.snapshot = readBuildInfoProgram(
|
|
479
|
-
this.config,
|
|
480
|
-
new FileBuildInfoReader(new SystemFileSystem(sys)),
|
|
481
|
-
sys.defaultLibraryPath,
|
|
482
|
-
sys.currentDirectory,
|
|
483
|
-
);
|
|
484
|
-
}
|
|
485
477
|
this.status.report(
|
|
486
478
|
watchRestart.resumed
|
|
487
479
|
? Diagnostics.File_change_detected_Starting_incremental_compilation
|
|
@@ -491,59 +483,86 @@ class Watcher {
|
|
|
491
483
|
watchRestart.firstBuildDone();
|
|
492
484
|
this.changes.watch([this.stamps, this.configStamps]);
|
|
493
485
|
};
|
|
494
|
-
// A program shared with checker threads is never written: symbols get their ids when created.
|
|
495
486
|
const options = this.config.options;
|
|
496
|
-
if (parallelParse.spawn !== undefined &&
|
|
487
|
+
if (parallelParse.spawn !== undefined && options.singleThreaded !== true) {
|
|
488
|
+
// Parse threads load the first program, as they load a compile's (`parsesAhead`, tsc-cli.ts), and
|
|
489
|
+
// it is shared with them: its symbols get their ids when they are created.
|
|
497
490
|
assignSymbolIdsAtCreation();
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
const options = this.config.options;
|
|
510
|
-
if (this.snapshot !== undefined || isIncremental(options) || parallelParse.spawn === undefined) return 1;
|
|
511
|
-
return checkerThreads(options.checkers, options.singleThreaded);
|
|
491
|
+
this.buildOnThreads(watchChanges);
|
|
492
|
+
return;
|
|
493
|
+
}
|
|
494
|
+
if (isIncremental(options))
|
|
495
|
+
this.snapshot = readBuildInfoProgram(
|
|
496
|
+
this.config,
|
|
497
|
+
new FileBuildInfoReader(new SystemFileSystem(sys)),
|
|
498
|
+
sys.defaultLibraryPath,
|
|
499
|
+
sys.currentDirectory,
|
|
500
|
+
);
|
|
501
|
+
this.build(watchChanges);
|
|
512
502
|
}
|
|
513
503
|
|
|
514
504
|
/**
|
|
515
|
-
* Builds the first program as a compile does: parse threads load its files
|
|
516
|
-
* it (parallel-check.ts) unless it checks little.
|
|
517
|
-
*
|
|
518
|
-
*
|
|
519
|
-
* the
|
|
505
|
+
* Builds the first program as a compile does: parse threads load its files while this thread reads the
|
|
506
|
+
* build info (`--incremental`), and checker threads check it (parallel-check.ts) unless it checks little.
|
|
507
|
+
* Without old state, every file is checked, as a compile does; with build info, the files the changes
|
|
508
|
+
* since affect are, as a rebuild checks them (`recheckOnThreads`). The program is shared with the
|
|
509
|
+
* threads, so it gets its own copy of the config and a host of its own. Its files go to the watch's
|
|
510
|
+
* file maps for rebuilds to take, and are never written again: rebuilds check them with the checker's
|
|
511
|
+
* side tables. Calls `done` once the build is reported.
|
|
520
512
|
*/
|
|
521
|
-
private buildOnThreads(
|
|
513
|
+
private buildOnThreads(done: () => void): void {
|
|
522
514
|
releaseProgramCaches();
|
|
523
515
|
const sys = this.sys;
|
|
524
516
|
const config = copyCommandLine(this.config);
|
|
525
517
|
const options = config.options;
|
|
518
|
+
const incremental = isIncremental(options);
|
|
526
519
|
const session = new ParseSession(
|
|
527
|
-
parseThreads(
|
|
520
|
+
parseThreads(checkerThreads(options.checkers, options.singleThreaded)),
|
|
528
521
|
options,
|
|
529
522
|
sys.currentDirectory,
|
|
530
523
|
config.configName,
|
|
531
524
|
config.fileNames.length > 0,
|
|
532
525
|
);
|
|
533
|
-
const
|
|
534
|
-
|
|
535
|
-
new CachedFileSystem(new SystemFileSystem(sys)),
|
|
536
|
-
this.locale,
|
|
537
|
-
new WatchSourceFiles(),
|
|
538
|
-
);
|
|
526
|
+
const fs = new CachedFileSystem(new SystemFileSystem(sys));
|
|
527
|
+
const host = new WatchCompilerHost(sys, fs, this.locale, new WatchSourceFiles());
|
|
539
528
|
const loader = new FileLoader(host, config);
|
|
540
529
|
let rootFilesAdded = false;
|
|
530
|
+
// The build info lists the real paths of the `package.json` files module resolution looked up, as
|
|
531
|
+
// a compile's does (tsc-cli.ts): those of the threads' lookups are resolved into the file system's cache.
|
|
532
|
+
const resolvesPackageJsons = incremental && config.configName !== '' && config.buildInfoFileName() !== '';
|
|
541
533
|
session.onIdle = (batch) => {
|
|
542
534
|
if (!rootFilesAdded) rootFilesAdded = loader.addRootFiles(rootFilesPerChunk);
|
|
543
535
|
loader.walkAhead(batch.files);
|
|
536
|
+
if (resolvesPackageJsons) {
|
|
537
|
+
const lookups = batch.packageJsons;
|
|
538
|
+
for (let k = 0; k < lookups.directories.length; k++)
|
|
539
|
+
if (lookups.exists[k]! || lookups.directoryExists[k]!)
|
|
540
|
+
fs.realpath(combinePaths(lookups.directories[k]!, 'package.json'));
|
|
541
|
+
}
|
|
542
|
+
};
|
|
543
|
+
// The build info is read while the threads parse, as a compile reads it, or here if they are done first.
|
|
544
|
+
let buildInfoRead = !incremental;
|
|
545
|
+
const readBuildInfo = (): void => {
|
|
546
|
+
if (buildInfoRead) return;
|
|
547
|
+
buildInfoRead = true;
|
|
548
|
+
this.snapshot = readBuildInfoProgram(
|
|
549
|
+
config,
|
|
550
|
+
new FileBuildInfoReader(new SystemFileSystem(sys)),
|
|
551
|
+
sys.defaultLibraryPath,
|
|
552
|
+
sys.currentDirectory,
|
|
553
|
+
);
|
|
554
|
+
mark('build info read');
|
|
544
555
|
};
|
|
545
556
|
session.start(config.fileNames, () => {
|
|
546
|
-
|
|
557
|
+
readBuildInfo();
|
|
558
|
+
let program = new Program(config, host, loader);
|
|
559
|
+
// Where the threads' lookups may miss some `package.json` files of the build info, the program is
|
|
560
|
+
// loaded again, resolving every file's imports and references itself, as a compile does.
|
|
561
|
+
if (incremental && !program.hasAllPackageJsonLookups()) {
|
|
562
|
+
const own = new FileLoader(host, config);
|
|
563
|
+
own.takesPreparedResolutions = false;
|
|
564
|
+
program = new Program(config, host, own);
|
|
565
|
+
}
|
|
547
566
|
// The session's callbacks keep the loader: its tasks go once checking has started.
|
|
548
567
|
releaseLater(loader);
|
|
549
568
|
this.files = this.files.next();
|
|
@@ -552,16 +571,25 @@ class Watcher {
|
|
|
552
571
|
this.files.current.set(watchFileKey(file.fileName, file.path, indicator), file);
|
|
553
572
|
}
|
|
554
573
|
const checked = new CheckedProgram(program);
|
|
574
|
+
// The incremental program `finishBuild` makes after checking keeps the globals found checking a file
|
|
575
|
+
// with the file.
|
|
576
|
+
checked.globalsInFileDiagnostics = true;
|
|
555
577
|
const finish = (): void => {
|
|
556
|
-
this.finishBuild(checked);
|
|
557
578
|
// Rebuilds parse what changed themselves.
|
|
558
579
|
clearPreparedFiles();
|
|
559
580
|
done();
|
|
560
581
|
};
|
|
561
|
-
const
|
|
562
|
-
if (
|
|
563
|
-
|
|
582
|
+
const threads = checkerThreads(options.checkers, options.singleThreaded, program);
|
|
583
|
+
if (this.snapshot !== undefined && threads > 1) return this.recheckOnThreads(checked, threads, new Map(), finish);
|
|
584
|
+
const report = (): void => {
|
|
585
|
+
this.finishBuild(checked);
|
|
586
|
+
finish();
|
|
587
|
+
};
|
|
588
|
+
if (this.snapshot === undefined && threads > 1) startParallelCheck(checked, threads, report);
|
|
589
|
+
else report();
|
|
564
590
|
});
|
|
591
|
+
if (incremental && sys.fileExists(config.buildInfoFileName())) session.queueAhead();
|
|
592
|
+
readBuildInfo();
|
|
565
593
|
}
|
|
566
594
|
|
|
567
595
|
private configFiles(): string[] {
|
|
@@ -650,6 +678,7 @@ class Watcher {
|
|
|
650
678
|
computeLastSignatures(this.snapshot, this.lastChecked, this.files.parsed);
|
|
651
679
|
this.lastChecked = undefined;
|
|
652
680
|
const checked = new CheckedProgram(program);
|
|
681
|
+
checked.globalsInFileDiagnostics = true;
|
|
653
682
|
const signatures = new Map<string, string>();
|
|
654
683
|
const threads = this.rebuildThreads(checked, signatures);
|
|
655
684
|
// A new checker for checker threads: `rebuildThreads` may have emitted declarations with this one.
|
|
@@ -690,9 +719,9 @@ class Watcher {
|
|
|
690
719
|
* affects the global scope. A changed file whose declaration file keeps the signature of the last
|
|
691
720
|
* build affects only itself (`getFilesAffectedBy`); its signature is computed with `checked`'s checker
|
|
692
721
|
* and added to `signatures`. That is what the change affects at most; `recheckOnThreads` then takes
|
|
693
|
-
* what it does affect. A watch
|
|
694
|
-
* creation (`start`), so its rebuilds, which take the unchanged files of earlier builds, stay on
|
|
695
|
-
* thread after a config edit turns checker threads on.
|
|
722
|
+
* what it does affect. A watch that started without parse threads (`--singleThreaded`) gave its symbols
|
|
723
|
+
* no ids at creation (`start`), so its rebuilds, which take the unchanged files of earlier builds, stay on
|
|
724
|
+
* this thread after a config edit turns checker threads on.
|
|
696
725
|
*/
|
|
697
726
|
private rebuildThreads(checked: CheckedProgram, signatures: Map<string, string>): number {
|
|
698
727
|
const program = checked.program;
|