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
|
@@ -347,6 +347,11 @@ export class Diagnostic {
|
|
|
347
347
|
readonly reportsDeprecated: boolean;
|
|
348
348
|
skippedOnNoEmit = false;
|
|
349
349
|
repopulateInfo: RepopulateInfo | undefined = undefined;
|
|
350
|
+
/**
|
|
351
|
+
* What `formatDiagnostic` gives for this diagnostic in `formattedReports.format`, where the checker
|
|
352
|
+
* thread that found it formatted it (`packResult`); `''` otherwise.
|
|
353
|
+
*/
|
|
354
|
+
formatted = '';
|
|
350
355
|
|
|
351
356
|
constructor(
|
|
352
357
|
file: DiagnosticFile | undefined,
|
|
@@ -388,6 +393,7 @@ export class Diagnostic {
|
|
|
388
393
|
result.relatedInformation = this.relatedInformation;
|
|
389
394
|
result.skippedOnNoEmit = this.skippedOnNoEmit;
|
|
390
395
|
result.repopulateInfo = this.repopulateInfo;
|
|
396
|
+
result.formatted = this.formatted;
|
|
391
397
|
return result;
|
|
392
398
|
}
|
|
393
399
|
}
|
|
@@ -510,9 +516,13 @@ function compareRelatedInfo(a: readonly Diagnostic[], b: readonly Diagnostic[]):
|
|
|
510
516
|
/** The order tsc reports diagnostics in: by file, position, code, arguments, then elaboration. */
|
|
511
517
|
export function compareDiagnostics(a: Diagnostic, b: Diagnostic): number {
|
|
512
518
|
if (a === b) return 0;
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
519
|
+
const c = compareCodePoints(fileNameOf(a), fileNameOf(b));
|
|
520
|
+
return c !== 0 ? c : compareDiagnosticsInFile(a, b);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
/** `compareDiagnostics` of two diagnostics whose files have the same name. */
|
|
524
|
+
function compareDiagnosticsInFile(a: Diagnostic, b: Diagnostic): number {
|
|
525
|
+
let c = a.pos - b.pos;
|
|
516
526
|
if (c !== 0) return c;
|
|
517
527
|
c = a.end - b.end;
|
|
518
528
|
if (c !== 0) return c;
|
|
@@ -527,6 +537,61 @@ export function compareDiagnostics(a: Diagnostic, b: Diagnostic): number {
|
|
|
527
537
|
return compareRelatedInfo(a.relatedInformation, b.relatedInformation);
|
|
528
538
|
}
|
|
529
539
|
|
|
540
|
+
/**
|
|
541
|
+
* `diagnostics` in the order of `compareDiagnostics`, equal ones in their order in `diagnostics`. File
|
|
542
|
+
* names are compared once per pair of files rather than once per pair of diagnostics: the distinct
|
|
543
|
+
* files are sorted by name, and each diagnostic sorts by its file's place in that order, then by the
|
|
544
|
+
* rest of `compareDiagnostics`. A program's diagnostics come a file at a time, so the files are found
|
|
545
|
+
* from the runs of one file.
|
|
546
|
+
*/
|
|
547
|
+
export function sortDiagnostics(diagnostics: readonly Diagnostic[]): Diagnostic[] {
|
|
548
|
+
const n = diagnostics.length;
|
|
549
|
+
if (n < 2) return diagnostics.slice();
|
|
550
|
+
const fileIndices = new Map<DiagnosticFile | undefined, number>();
|
|
551
|
+
const files: (DiagnosticFile | undefined)[] = [];
|
|
552
|
+
const fileOf: number[] = [];
|
|
553
|
+
let last: DiagnosticFile | undefined = undefined;
|
|
554
|
+
let lastIndex = -1;
|
|
555
|
+
for (let i = 0; i < n; i++) {
|
|
556
|
+
const file = diagnostics[i]!.file;
|
|
557
|
+
if (lastIndex < 0 || file !== last) {
|
|
558
|
+
let k = fileIndices.get(file);
|
|
559
|
+
if (k === undefined) {
|
|
560
|
+
k = files.length;
|
|
561
|
+
fileIndices.set(file, k);
|
|
562
|
+
files.push(file);
|
|
563
|
+
}
|
|
564
|
+
last = file;
|
|
565
|
+
lastIndex = k;
|
|
566
|
+
}
|
|
567
|
+
fileOf.push(lastIndex);
|
|
568
|
+
}
|
|
569
|
+
// Files with the same name share a rank, as they compare equal.
|
|
570
|
+
const nameOf = (k: number): string => {
|
|
571
|
+
const file = files[k];
|
|
572
|
+
return file === undefined ? '' : file.fileName;
|
|
573
|
+
};
|
|
574
|
+
const byName: number[] = [];
|
|
575
|
+
for (let k = 0; k < files.length; k++) byName.push(k);
|
|
576
|
+
byName.sort((x, y) => compareCodePoints(nameOf(x), nameOf(y)));
|
|
577
|
+
const rank: number[] = [];
|
|
578
|
+
for (let k = 0; k < files.length; k++) rank.push(0);
|
|
579
|
+
for (let k = 1; k < byName.length; k++)
|
|
580
|
+
rank[byName[k]!] = rank[byName[k - 1]!]! + (nameOf(byName[k]!) === nameOf(byName[k - 1]!) ? 0 : 1);
|
|
581
|
+
const order: number[] = [];
|
|
582
|
+
for (let i = 0; i < n; i++) order.push(i);
|
|
583
|
+
order.sort((x, y) => {
|
|
584
|
+
const c = rank[fileOf[x]!]! - rank[fileOf[y]!]!;
|
|
585
|
+
if (c !== 0) return c;
|
|
586
|
+
const a = diagnostics[x]!;
|
|
587
|
+
const b = diagnostics[y]!;
|
|
588
|
+
return a === b ? 0 : compareDiagnosticsInFile(a, b);
|
|
589
|
+
});
|
|
590
|
+
const sorted: Diagnostic[] = [];
|
|
591
|
+
for (const i of order) sorted.push(diagnostics[i]!);
|
|
592
|
+
return sorted;
|
|
593
|
+
}
|
|
594
|
+
|
|
530
595
|
function equalChain(a: readonly Diagnostic[], b: readonly Diagnostic[]): boolean {
|
|
531
596
|
if (a.length !== b.length) return false;
|
|
532
597
|
for (let i = 0; i < a.length; i++) {
|
|
@@ -625,13 +690,29 @@ function formatDiagnosticIn(diagnostic: Diagnostic, fileName: string, options: D
|
|
|
625
690
|
return result + flattenDiagnosticMessage(diagnostic, options.newLine, options.locale) + options.newLine;
|
|
626
691
|
}
|
|
627
692
|
|
|
693
|
+
/**
|
|
694
|
+
* The plain format the main thread reports a compilation's diagnostics in (`DiagnosticReporter.plainFormat`),
|
|
695
|
+
* which its checker threads receive a copy of and format the diagnostics they send back in
|
|
696
|
+
* (`Diagnostic.formatted`). Unset where diagnostics are reported with color and context, or not at all.
|
|
697
|
+
*/
|
|
698
|
+
export class FormattedReports {
|
|
699
|
+
format: DiagnosticFormatOptions | undefined = undefined;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
export const formattedReports = new FormattedReports();
|
|
703
|
+
|
|
628
704
|
/** `formatDiagnostic` of each diagnostic. */
|
|
629
705
|
export function formatDiagnostics(diagnostics: readonly Diagnostic[], options: DiagnosticFormatOptions): string {
|
|
630
706
|
let result = '';
|
|
707
|
+
const formatted = options === formattedReports.format;
|
|
631
708
|
// Sorted diagnostics come a file at a time: the relative name of the last file is kept.
|
|
632
709
|
let lastFile: DiagnosticFile | undefined = undefined;
|
|
633
710
|
let lastName = '';
|
|
634
711
|
for (const diagnostic of diagnostics) {
|
|
712
|
+
if (formatted && diagnostic.formatted !== '') {
|
|
713
|
+
result += diagnostic.formatted;
|
|
714
|
+
continue;
|
|
715
|
+
}
|
|
635
716
|
const file = diagnostic.file;
|
|
636
717
|
if (file !== undefined && file !== lastFile) {
|
|
637
718
|
lastFile = file;
|
package/src/compiler/emitter.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Emits JavaScript and declarations for source files: runs the transforms, prints, and writes
|
|
2
2
|
// the output, source map and `//# sourceMappingURL` comment.
|
|
3
3
|
import { ScriptKind, type SourceFile } from './ast.js';
|
|
4
|
-
import { compareDiagnostics, type Diagnostic } from './diagnostics.js';
|
|
4
|
+
import { compareDiagnostics, equalDiagnostics, type Diagnostic } from './diagnostics.js';
|
|
5
5
|
import { type CompilerOptions, JsxEmit, NewLineKind, getEmitScriptTarget, getIsolatedModules } from './options.js';
|
|
6
6
|
import { LanguageVariant } from './types.js';
|
|
7
7
|
import { type OutputPathsHost, getOutputPathsFor } from './output-paths.js';
|
|
@@ -33,7 +33,7 @@ import { RuntimeSyntax } from './transformers/runtime-syntax.js';
|
|
|
33
33
|
import { ConstEnumInliner } from './transformers/const-enum-inliner.js';
|
|
34
34
|
import { addDownlevelTransformers } from './transformers/downlevel.js';
|
|
35
35
|
import { JsxTransformer } from './transformers/jsx.js';
|
|
36
|
-
import { SyntaxFacts } from './transformers/syntax-facts.js';
|
|
36
|
+
import { SubtreeFacts, SyntaxFacts } from './transformers/syntax-facts.js';
|
|
37
37
|
import { LegacyDecorators } from './transformers/legacy-decorators.js';
|
|
38
38
|
import { DecoratorMetadata } from './transformers/decorator-metadata.js';
|
|
39
39
|
|
|
@@ -143,6 +143,12 @@ export const enum EmitOnly {
|
|
|
143
143
|
* signature of incremental builds; it is written with its errors and without a map.
|
|
144
144
|
*/
|
|
145
145
|
ForcedDts,
|
|
146
|
+
/**
|
|
147
|
+
* The declaration file of a file whose JavaScript this build emits in a separate request, such as on another
|
|
148
|
+
* thread. tsgo emits both with one emit context, so the emit flags its JavaScript transforms set on the file's
|
|
149
|
+
* own nodes also apply to its declarations; this replays those transforms first.
|
|
150
|
+
*/
|
|
151
|
+
DtsAfterJs,
|
|
146
152
|
}
|
|
147
153
|
|
|
148
154
|
export function emitFiles(host: EmitHost, files: readonly SourceFile[], emitOnly: EmitOnly = EmitOnly.All): EmitResult {
|
|
@@ -157,21 +163,44 @@ export function emitFiles(host: EmitHost, files: readonly SourceFile[], emitOnly
|
|
|
157
163
|
const file = files[i];
|
|
158
164
|
if (!sourceFileMayBeEmitted(file, options) || host.isSourceFileFromExternalLibrary(file)) continue;
|
|
159
165
|
const paths = getOutputPathsFor(file.fileName, file.scriptKind === ScriptKind.JSON, options, host, forced);
|
|
166
|
+
// As in tsgo, a file's JavaScript and declarations share one emit context: emit flags that JavaScript
|
|
167
|
+
// transforms set on the file's own nodes, such as a decorated parameter's name, also apply to its declarations.
|
|
168
|
+
const context = new EmitContext();
|
|
160
169
|
if (paths.jsFilePath !== '' && (emitOnly === EmitOnly.All || emitOnly === EmitOnly.Js)) {
|
|
161
170
|
if (host.isEmitBlocked(paths.jsFilePath)) result.emitSkipped = true;
|
|
162
|
-
else emitJSFile(host, file, paths.jsFilePath, paths.sourceMapFilePath, result);
|
|
171
|
+
else emitJSFile(host, context, file, paths.jsFilePath, paths.sourceMapFilePath, result);
|
|
163
172
|
}
|
|
164
173
|
if (paths.declarationFilePath !== '' && emitOnly !== EmitOnly.Js) {
|
|
165
174
|
if (!forced && host.isEmitBlocked(paths.declarationFilePath)) result.emitSkipped = true;
|
|
166
|
-
else
|
|
175
|
+
else {
|
|
176
|
+
if (emitOnly === EmitOnly.DtsAfterJs && paths.jsFilePath !== '') replayScriptTransforms(host, context, file);
|
|
177
|
+
emitDeclarationFile(host, context, file, paths.declarationFilePath, paths.declarationMapPath, result, forced);
|
|
178
|
+
}
|
|
167
179
|
}
|
|
168
180
|
}
|
|
169
181
|
return result;
|
|
170
182
|
}
|
|
171
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Runs the JavaScript transforms of `file` in `context` without printing, for the emit flags they set on the
|
|
186
|
+
* file's own nodes. Only the decorator transforms set any that declaration emit prints (on decorated parameters'
|
|
187
|
+
* names), so files without decorators are skipped.
|
|
188
|
+
*/
|
|
189
|
+
function replayScriptTransforms(host: EmitHost, context: EmitContext, file: SourceFile): void {
|
|
190
|
+
if (!new SyntaxFacts().has(file, SubtreeFacts.ContainsDecorators)) return;
|
|
191
|
+
let transformed = file;
|
|
192
|
+
const transformers = getScriptTransformers(host, context, file);
|
|
193
|
+
for (let i = 0; i < transformers.length; i++) {
|
|
194
|
+
const transformer = transformers[i];
|
|
195
|
+
if (transformer.unsupported !== '') return;
|
|
196
|
+
transformed = transformer.transformSourceFile(transformed);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
172
200
|
/** Emits a declaration file; the host's resolver must be a `DeclarationEmitResolver`. */
|
|
173
201
|
function emitDeclarationFile(
|
|
174
202
|
host: EmitHost,
|
|
203
|
+
context: EmitContext,
|
|
175
204
|
file: SourceFile,
|
|
176
205
|
declarationFilePath: string,
|
|
177
206
|
declarationMapPath: string,
|
|
@@ -184,7 +213,6 @@ function emitDeclarationFile(
|
|
|
184
213
|
return false;
|
|
185
214
|
}
|
|
186
215
|
const options = host.options;
|
|
187
|
-
const context = new EmitContext();
|
|
188
216
|
const transformer = new DeclarationTransformer(context, host, options, resolver, declarationFilePath);
|
|
189
217
|
const transformed = transformer.transformSourceFile(file);
|
|
190
218
|
result.declarationTransformed = true;
|
|
@@ -214,11 +242,32 @@ function emitDeclarationFile(
|
|
|
214
242
|
emitSourceMaps,
|
|
215
243
|
false,
|
|
216
244
|
result,
|
|
217
|
-
|
|
218
|
-
diagnostics.length > 1 ? diagnostics.toSorted(compareDiagnostics) : diagnostics,
|
|
245
|
+
emitterDiagnostics(diagnostics),
|
|
219
246
|
);
|
|
220
247
|
}
|
|
221
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Declaration diagnostics as tsgo's emitter collects them: sorted, without repeats of an equal
|
|
251
|
+
* diagnostic. They are part of the file's signature in build info.
|
|
252
|
+
*/
|
|
253
|
+
function emitterDiagnostics(diagnostics: readonly Diagnostic[]): readonly Diagnostic[] {
|
|
254
|
+
if (diagnostics.length < 2) return diagnostics;
|
|
255
|
+
const sorted = diagnostics.toSorted(compareDiagnostics);
|
|
256
|
+
const result: Diagnostic[] = [];
|
|
257
|
+
for (const diagnostic of sorted) {
|
|
258
|
+
// Equal diagnostics compare as 0, so a repeat is among the last ones kept that compare as 0.
|
|
259
|
+
let repeated = false;
|
|
260
|
+
for (let i = result.length - 1; i >= 0 && compareDiagnostics(result[i], diagnostic) === 0; i--) {
|
|
261
|
+
if (equalDiagnostics(result[i], diagnostic)) {
|
|
262
|
+
repeated = true;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (!repeated) result.push(diagnostic);
|
|
267
|
+
}
|
|
268
|
+
return result;
|
|
269
|
+
}
|
|
270
|
+
|
|
222
271
|
function getScriptTransformers(host: EmitHost, context: EmitContext, file: SourceFile): Transformer[] {
|
|
223
272
|
const options = host.options;
|
|
224
273
|
const facts = new TypeScriptFacts();
|
|
@@ -248,13 +297,13 @@ function isJsxTransformEnabled(options: CompilerOptions): boolean {
|
|
|
248
297
|
|
|
249
298
|
function emitJSFile(
|
|
250
299
|
host: EmitHost,
|
|
300
|
+
context: EmitContext,
|
|
251
301
|
file: SourceFile,
|
|
252
302
|
jsFilePath: string,
|
|
253
303
|
sourceMapFilePath: string,
|
|
254
304
|
result: EmitResult,
|
|
255
305
|
): boolean {
|
|
256
306
|
const options = host.options;
|
|
257
|
-
const context = new EmitContext();
|
|
258
307
|
let transformed = file;
|
|
259
308
|
const transformers = getScriptTransformers(host, context, file);
|
|
260
309
|
for (let i = 0; i < transformers.length; i++) {
|
package/src/compiler/encoder.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// Encodes a source file in TypeScript 7's binary AST format (protocol version
|
|
1
|
+
// Encodes a source file in TypeScript 7.1's binary AST format (protocol version 9), the
|
|
2
2
|
// `getSourceFile` payload of the API.
|
|
3
3
|
//
|
|
4
|
-
// Layout: a
|
|
4
|
+
// Layout: a 64-byte header, string offsets (UTF-8 start/end pairs), string data (the
|
|
5
5
|
// UTF-8 file text, then strings that aren't slices of it), extended node data,
|
|
6
6
|
// msgpack structured data, and 28-byte node records in visit order. Node positions are
|
|
7
7
|
// UTF-16 offsets.
|
|
@@ -197,10 +197,10 @@ import { SyntaxKind } from './syntax-kind.js';
|
|
|
197
197
|
import { hash128 } from './xxh3.js';
|
|
198
198
|
import { utf8Offsets } from './character-codes.js';
|
|
199
199
|
|
|
200
|
-
export const protocolVersion =
|
|
200
|
+
export const protocolVersion = 9;
|
|
201
201
|
|
|
202
202
|
const nodeSize = 28;
|
|
203
|
-
const headerSize =
|
|
203
|
+
const headerSize = 64;
|
|
204
204
|
const nodeListKind = 0xffffffff;
|
|
205
205
|
const noStructuredData = 0xffffffff;
|
|
206
206
|
|
|
@@ -210,6 +210,11 @@ const dataTypeExtended = 2 << 30;
|
|
|
210
210
|
|
|
211
211
|
const utf8Encoder = new TextEncoder();
|
|
212
212
|
|
|
213
|
+
/** A node list record's last word: 1 when the list ends with a comma. */
|
|
214
|
+
function trailingComma(list: NodeList): number {
|
|
215
|
+
return list.hasTrailingComma() ? 1 : 0;
|
|
216
|
+
}
|
|
217
|
+
|
|
213
218
|
/** A growable little-endian byte buffer. */
|
|
214
219
|
class ByteWriter {
|
|
215
220
|
bytes: Uint8Array;
|
|
@@ -1261,7 +1266,8 @@ function childrenPropertyMask(node: Node): number {
|
|
|
1261
1266
|
return node instanceof ModuleDeclaration
|
|
1262
1267
|
? (hasModifiers((node as ModuleDeclaration).modifiers) ? 1 : 0) |
|
|
1263
1268
|
((node as ModuleDeclaration).name !== undefined ? 2 : 0) |
|
|
1264
|
-
((node as ModuleDeclaration).
|
|
1269
|
+
((node as ModuleDeclaration).attributes !== undefined ? 4 : 0) |
|
|
1270
|
+
((node as ModuleDeclaration).body !== undefined ? 8 : 0)
|
|
1265
1271
|
: 0;
|
|
1266
1272
|
case SyntaxKind.ImportEqualsDeclaration:
|
|
1267
1273
|
return node instanceof ImportEqualsDeclaration
|
|
@@ -1381,6 +1387,7 @@ function commonData(node: Node): number {
|
|
|
1381
1387
|
if (!(node instanceof ImportClause)) return 0;
|
|
1382
1388
|
if ((node as ImportClause).phaseModifier === SyntaxKind.TypeKeyword) return 1 << 24;
|
|
1383
1389
|
if ((node as ImportClause).phaseModifier === SyntaxKind.DeferKeyword) return 2 << 24;
|
|
1390
|
+
if ((node as ImportClause).phaseModifier === SyntaxKind.SourceKeyword) return 3 << 24;
|
|
1384
1391
|
return 0;
|
|
1385
1392
|
case SyntaxKind.ImportSpecifier:
|
|
1386
1393
|
return node instanceof ImportSpecifier ? bit((node as ImportSpecifier).isTypeOnly) << 24 : 0;
|
|
@@ -1577,7 +1584,7 @@ class Encoder extends NodeVisitor {
|
|
|
1577
1584
|
this.linkSibling(index);
|
|
1578
1585
|
const positions = this.positions;
|
|
1579
1586
|
if (positions === undefined)
|
|
1580
|
-
this.nodes.push(nodeListKind, list.pos, list.end, this.parentIndex, list.nodes.length,
|
|
1587
|
+
this.nodes.push(nodeListKind, list.pos, list.end, this.parentIndex, list.nodes.length, trailingComma(list));
|
|
1581
1588
|
else
|
|
1582
1589
|
this.nodes.push(
|
|
1583
1590
|
nodeListKind,
|
|
@@ -1585,7 +1592,7 @@ class Encoder extends NodeVisitor {
|
|
|
1585
1592
|
positions.of(list.end),
|
|
1586
1593
|
this.parentIndex,
|
|
1587
1594
|
list.nodes.length,
|
|
1588
|
-
|
|
1595
|
+
trailingComma(list),
|
|
1589
1596
|
);
|
|
1590
1597
|
const saveParent = this.parentIndex;
|
|
1591
1598
|
this.prevIndex = 0;
|
|
@@ -1659,6 +1666,8 @@ class Encoder extends NodeVisitor {
|
|
|
1659
1666
|
out.u32(offsetExtended);
|
|
1660
1667
|
out.u32(offsetStructured);
|
|
1661
1668
|
out.u32(offsetNodes);
|
|
1669
|
+
// Source file ID and lease ID (u64 each) and binder data offset: 0, none.
|
|
1670
|
+
for (let i = 0; i < 5; i++) out.u32(0);
|
|
1662
1671
|
out.append(strings.offsets.view());
|
|
1663
1672
|
out.append(fileText);
|
|
1664
1673
|
out.append(strings.others.view());
|
|
@@ -1787,7 +1796,8 @@ class Encoder extends NodeVisitor {
|
|
|
1787
1796
|
);
|
|
1788
1797
|
out.u32((node as TemplateTail).templateFlags);
|
|
1789
1798
|
} else if (node instanceof SourceFile) {
|
|
1790
|
-
|
|
1799
|
+
const text = strings.addFileText((node as SourceFile).pos, (node as SourceFile).end);
|
|
1800
|
+
out.u32(text);
|
|
1791
1801
|
out.u32(strings.add((node as SourceFile).fileName, SyntaxKind.Unknown, 0, 0));
|
|
1792
1802
|
out.u32(strings.add((node as SourceFile).path, SyntaxKind.Unknown, 0, 0));
|
|
1793
1803
|
out.u32((node as SourceFile).languageVariant);
|
|
@@ -1801,6 +1811,11 @@ class Encoder extends NodeVisitor {
|
|
|
1801
1811
|
out.u32(noStructuredData);
|
|
1802
1812
|
out.u32(noStructuredData);
|
|
1803
1813
|
out.u32(0);
|
|
1814
|
+
// The original text is the text, and the content mapper fields (span map, supplemental
|
|
1815
|
+
// file names, canonical file name, mapper, virtual file name, diagnostic directives) are
|
|
1816
|
+
// empty: tsc-ts maps no file contents.
|
|
1817
|
+
out.u32(text);
|
|
1818
|
+
for (let i = 0; i < 6; i++) out.u32(noStructuredData);
|
|
1804
1819
|
} else throw new Error(`no extended data for kind ${node.kind}`);
|
|
1805
1820
|
return offset;
|
|
1806
1821
|
}
|
|
@@ -597,10 +597,16 @@ export class IncludeProcessor {
|
|
|
597
597
|
return this.fileIncludeReasons.get(path) ?? [];
|
|
598
598
|
}
|
|
599
599
|
|
|
600
|
-
|
|
600
|
+
/** Adds an include reason of the file at `path`; returns the file's reasons. */
|
|
601
|
+
addReason(path: string, reason: FileIncludeReason): FileIncludeReason[] {
|
|
601
602
|
const reasons = this.fileIncludeReasons.get(path);
|
|
602
|
-
if (reasons === undefined)
|
|
603
|
-
|
|
603
|
+
if (reasons === undefined) {
|
|
604
|
+
const added = [reason];
|
|
605
|
+
this.fileIncludeReasons.set(path, added);
|
|
606
|
+
return added;
|
|
607
|
+
}
|
|
608
|
+
reasons.push(reason);
|
|
609
|
+
return reasons;
|
|
604
610
|
}
|
|
605
611
|
|
|
606
612
|
addProcessingDiagnostic(diagnostic: ProcessingDiagnostic): void {
|